I think you're idea of storing the schema & table names in a table will work. Your view gets created in that schema by using an inner join of that schema & table to syscolumns to create the view.
Optionally you might want to consider using DDS instead of SQL to create a logical file (view) over syscolumns for each library. Not sure how many libraries you are dealing with but if they are just a few this might be workable.
To use DDS with Selection:
SYSCOLUMNS is already a view so to create a DDS LF for Select/Omit you have to create it over the underlying QADBIFLD physical file (QADBXSFLD is also involved but I don't think you need any fields from that file for this application):
A R QDBIFLD PFILE(QADBIFLD)
A S DBILB2 COMP(EQ 'SCHEMANAME')
A S DBILFI COMP(EQ 'TABLENAME')
You could use DBILIB & DBIFIL if you're schema and table names are 10 or under. If you need the SYSCOLUMN names you have to do some field renaming.
Ryan, I'm wrong as you could also do this with a SQL view:
CREATE VIEW MYSCHEMA/MYSYSCOLUMN AS
SELECT *
FROM SYSCOLUMNS
WHERE SYSCOLUMNS.DBNAME = 'SCHEMANAME'
AND SYSCOLUMNS.TBNAME = 'TABLENAME'
To use a join:
CREATE TABLE MYSCHEMA/MYTABLESELECT
( MYSCHEMA VARCHAR (128),
MYTABLE VARCHAR (128) );
INSERT INTO MYTABLESELECT VALUES( 'SCHEMANAME', 'TABLENAME' );
CREATE VIEW MYSCHEMA/MYSYSCOLUMN AS
SELECT SYSCOLUMNS.*
FROM SYSCOLUMNS, MYTABLESELECT
WHERE SYSCOLUMNS.DBNAME = MYTABLESELECT.MYSCHEMA
AND SYSCOLUMNS.TBNAME = MYTABLESELECT.MYTABLE;
No ordering is being done on either the DDS or the View.