DCL SPCPTR ?DEVICE PARM; DCL SPCPTR ?USERPASS PARM; DCL OL MAIN (?DEVICE, ?USERPASS) EXT PARM MIN(2); DCL DD DEVICE BAS(?DEVICE) CHAR(10); DCL DD USERPASS BAS(?USERPASS) CHAR(26); DCL SPCPTR ?TABLE BASPCO POS(225); DCL SPCPTR ?WORK; DCL DD FORWARD BAS(?WORK) POS(1) BIN(4); DCL DD NAME BAS(?WORK) POS(7) CHAR(10); DCL SPCPTR ?ODP BAS(?WORK) POS(129); DCL SYSPTR ?REQUEST BAS(?WORK) POS(97); DCL SPCPTR ?BUFFER BAS(?WORK) POS(65); DCL DD BUFFER BAS(?BUFFER) POS(7) CHAR(26); ENTRY * (MAIN) EXT; -- start here CPYBREP USERPASS, " "; -- clear previous stuff CPYBWP ?WORK, ?TABLE; -- point to device table SETSPPO ?WORK, 128; -- point to first entry AA: CMPBLA(B) NAME, DEVICE / EQ(BB); -- exit loop if found CMPNV(B) FORWARD, 0 / EQ(CC); -- exit loop if end of chain SETSPPO ?WORK, FORWARD; -- point to next entry B AA; -- repeat until found BB: CMPPTRT(B) ?ODP, * / EQ(CC); -- jump if not signed on CPYBWP ?WORK, ?ODP; -- point to open data path SETSPPFP ?WORK, ?REQUEST; -- point to 'WS FM RB' CPYBLA USERPASS, BUFFER; -- copy username & password CC: PEND; -- return to caller