home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Columbia Kermit
/
kermit.zip
/
archives
/
ibmtsoqueens.tar.gz
/
ibmtsoqueens.tar
/
ts2ds.pli
< prev
next >
Wrap
Text File
|
1988-08-16
|
36KB
|
441 lines
* PROCESS ; 00000001
/***** PL/I - IKJEFF18 INTERFACE *****/ 00000020
/* FUNCTION: */ 00000030
/* LINK TO IKJEFF18 TO WRITE A DAIR ERROR MESSAGE */ 00000040
/* PARAMETERS: */ 00000050
/* UPT,ECT,ECB,PSCB,DAPB : PARAMETERS FOR IKJDAIR */ 00000060
/* RETC : RETURN CODE FROM IKJDAIR */ 00000070
/* EXTERNAL REFERENCE: */ 00000080
/* PLILINK : PL/I SVC 6 INTERFACE */ 00000090
/* FETCHED DYNAMICALLY: 00000100
/* IKJEFF18: TSO DAIR ERROR ANALYZER */ 00000110
0PLIDAER: PROC(UPT,ECT,ECB,PSCB,DAPB,RETC) 00000120
OPTIONS(REENTRANT) RECURSIVE REORDER; 00000130
0 DCL UPT, 00000140
ECT, 00000150
ECB, 00000160
PSCB, 00000170
1 DAPB, 00000180
2 DACD BIN(15,0), 00000190
2 DAETCETERA, 00000200
RETC BIN(31,0); 00000210
0 DCL 1 DAPL, 00000220
2 DAPLUPT PTR INIT(ADDR(UPT)), 00000230
2 DAPLECT PTR INIT(ADDR(ECT)), 00000240
2 DAPLECB PTR INIT(ADDR(ECB)), 00000250
2 DAPLPSCB PTR INIT(ADDR(PSCB)), 00000260
2 DAPLDAPB PTR INIT(ADDR(DAPB)); 00000270
DCL FF02 BIN(31,0) INIT(0), 00000280
ERRCD BIN(15,0) INIT(1); 00000290
DCL PLILINK ENTRY OPTIONS(ASM INTER RETCODE); 00000300
0 CALL PLILINK('IKJEFF18',DAPL,RETC,FF02,ERRCD); 00000310
END; 00000320
/*********************************************************************/ 00000321
* PROCESS ; 00000330
/***** PL/I - IKJDAIR INTERFACE FOR ALLOCATING EXISTING DATASET *****/ 00000340
/* FUNCTION: */ 00000350
/* ALLOCATE A EXISTING DATASET */ 00000360
/* PARAMETERS: */ 00000370
/* UPT : USER PROFILE TABLE */ 00000380
/* ECT : ENVIRONMENT CONTROL TABLE */ 00000390
/* PSCB : PROTECTED STEP CONTROL BLOCK */ 00000400
/* DSN : DATASET NAME */ 00000500
/* DDN : DDNAME (IF BLANK, RECEIVES THE DDNAME CHOSEN BY IKJDAIR) */ 00000600
/* MNM : MEMBER NAME */ 00000700
/* PSWD : PASSWORD */ 00000800
/* DSP123 : STATUS AND DISPOSITIONS */ 00000900
/* CTL : CONTROL BYTE */ 00001000
/* DSO : DATASET ORGANISATION, RECEIVES THE DSORG FOUND BY IKJDAIR */ 00001100
/* ALN : ATTRIBUTE LIST NAME */ 00001200
/* RETC : RETURN CODE, RECEIVES THE RETURN CODE FROM IKJDAIR */ 00001300
/* THE INITIAL VALUE SELECTS THE ERROR ACTION */ 00001400
/* ERROR ACTION : */ 00001500
/* IF IKJDAIR RETCODE = 0 THEN RETURN */ 00001600
/* ELSE */ 00001700
/* IF RETCODE = -RETC THEN SUPPRESS ERROR MESSAGE, RETURN */ 00001800
/* ELSE */ 00001900
/* IF RETCODE = RETC THEN WRITE ERROR MESSAGE, RETURN */ 00002000
/* ELSE WRITE ERROR MESSAGE, SIGNAL COND(DAIRERR) */ 00002100
/* EXTERNAL REFERENCES: */ 00002200
/* PLITSSR : PL/I INTERFACE TO TSO SERVICE ROUTINES */ 00002300
/* PLIDAER : IKJDAIR ERROR MESSAGE WRITER */ 00002400
/* FETCHED DYNAMICALLY: */ 00002500
/* IKJDAIR : TSO DAIR SERVICE ROUTINE */ 00002600
0PLIDAEX: PROC(UPT,ECT,PSCB,DSN,DDN,MNM,PSWD,DSP123,CTL,DSO,ALN,RETC) 00002700
OPTIONS(REENTRANT) RECURSIVE REORDER; 00002800
0 DCL UPT, 00002900
ECT, 00003000
PSCB, 00003100
DSN CHAR(44) VAR, 00003200
DDN CHAR(8), 00003300
MNM CHAR(8), 00003400
PSWD CHAR(8), 00003500
DSP123 BIT(24) ALIGNED, 00003600
CTL BIT(8) ALIGNED, 00003700
DSO BIT(8) ALIGNED, 00003800
ALN CHAR(8), 00003900
RETC BIN(31,0); 00004000
0 DCL PLITSSR ENTRY OPTIONS(ASM INTER RETCODE), 00004100
PLIDAER ENTRY; 00004200
DCL ECB BIN(31,0) INIT(0), 00004300
SPEZRETC BIN(31,0) INIT(RETC); 00004400
1 DCL 1 DA08PB, /* IKJDAIR PARAMETER BLOCK, CODE 08 */ 00004500
2 DA08CD BIN(15,0) INIT(8), 00004600
2 DA08FLG BIT(16) ALIGNED INIT(0), 00004700
2 DA08DARC BIN(15,0) INIT(0), 00004800
2 DA08CTRC BIN(15,0) INIT(0), 00004900
2 DA08PDSN PTR, 00005000
2 DA08DDN CHAR(8), 00005100
2 DA08UNIT CHAR(8) INIT(''), 00005200
2 DA08SER CHAR(8) INIT(''), 00005300
2 DA08BLK BIN(31,0) INIT(0), 00005400
2 DA08PQTY BIN(31,0) INIT(0), 00005500
2 DA08SQTY BIN(31,0) INIT(0), 00005600
2 DA08DQTY BIN(31,0) INIT(0), 00005700
2 DA08MNM CHAR(8), 00005800
2 DA08PSWD CHAR(8), 00005900
2 DA08DSP123 BIT(24) ALIGNED, 00006000
2 DA08CTL BIT(8) ALIGNED, 00006100
2 DA08RES BIT(24) ALIGNED INIT(0), 00006200
2 DA08DSO BIT(8) ALIGNED INIT(0), 00006300
2 DA08ALN CHAR(8); 00006400
0 IF CTL & '00000100'B THEN /* DUMMY DATASET */ 00006500
DO; 00006600
UNSPEC(DA08PDSN) = 0; /* IGNORE DSNAME */ 00006700
DA08DSP123 = '00000100'B; 00006800
END; 00006900
ELSE 00007000
DO; 00007100
DA08PDSN = ADDR(DSN); 00007200
DA08DSP123 = DSP123 & (3)'00001111'B; 00007300
END; 00007400
DA08DDN = DDN; 00007500
DA08MNM = MNM; 00007600
DA08PSWD = PSWD; 00007700
IF ALN = '' THEN 00007800
DA08CTL = CTL & '00111100'B; 00007900
ELSE /* TURN ON ATTRLIST BIT */ 00008000
DA08CTL = CTL & '00111100'B | '00000010'B; 00008100
DA08ALN = ALN; 00008200
0 CALL PLITSSR('IKJDAIR ',UPT,ECT,ECB,PSCB,DA08PB); 00008300
RETC = PLIRETV(); 00008400
IF RETC =0 THEN 00008500
DO; 00008600
DDN = DA08DDN; 00008700
DSO = DA08DSO; 00008800
END; 00008900
0 ELSE /* ANALYZE IKJDAIR ERROR */ 00009000
IF RETC ^= -SPEZRETC THEN 00009100
DO; 00009200
CALL PLIDAER(UPT,ECT,ECB,PSCB,DA08PB,RETC); 00009300
IF RETC ^= SPEZRETC THEN 00009400
SIGNAL COND(DAIRERR); 00009500
END; 00009600
END; 00009700
/*********************************************************************/ 00009800
* PROCESS ; 00009900
/***** DAIR CODE 00 : SEARCH DSE *****/ 00010000
0PLIDA00: PROC(UPT,ECT,PSCB,DSN,DDN,CTL,FLG,DSO) 00010100
OPTIONS(REENTRANT) RECURSIVE REORDER; 00010200
0 DCL DSN CHAR(44) VAR, 00010300
DDN CHAR(8), 00010400
CTL BIT(8) ALIGNED, 00010500
FLG BIT(16) ALIGNED, /* RECEIVES THE FLAG RETURNED BY IKJDAIR */ 00010600
DSO BIT(8) ALIGNED; /* RECEIVES THE DSO RETURNED BY IKJDAIR */ 00010700
0 DCL 1 DA00PB, 00010800
2 DA00CD BIN(15,0), 00010900
2 DA00FLG BIT(16) ALIGNED, 00011000
2 DA00PDSN PTR, 00011100
2 DA00DDN CHAR(8), 00011200
2 DA00CTL BIT(8) ALIGNED, 00011300
2 DA00RES BIN(15,0) UNAL, 00011400
2 DA00DSO BIT(8) ALIGNED; 00011500
0 DCL PLITSSR ENTRY OPTIONS(ASM INTER RETCODE), 00011600
PLIDAER ENTRY; 00011700
DCL ECB BIN(31,0) INIT(0), 00011800
RETCODE BIN(31,0); 00011900
DA00CD = 0; 00012000
DA00FLG = 0; 00012100
DA00DDN = DDN; 00012200
IF DDN = '' THEN 00012300
DA00PDSN = ADDR(DSN); 00012400
ELSE 00012500
UNSPEC(DA00PDSN) = 0; 00012600
DA00CTL = CTL & '00100000'B; 00012700
DA00RES = 0; 00012800
DA00DSO = 0; 00012900
0 CALL PLITSSR('IKJDAIR ',UPT,ECT,ECB,PSCB,DA00PB); 00013000
RETCODE = PLIRETV(); 00013100
IF RETCODE > 0 THEN 00013200
DO; 00013300
CALL PLIDAER(UPT,ECT,ECB,PSCB,DA00PB,RETCODE); 00013400
SIGNAL COND(DAIRERR); 00013500
END; 00013600
ELSE 00013700
DO; 00013800
FLG = DA00FLG; 00013900
DSO = DA00DSO; 00014000
END; 00014100
END; 00014200
/*********************************************************************/ 00014300
* PROCESS ; 00014400
/***** SINGLE INFORMATIONAL MESSAGE *****/ 00014500
0PLIPTIS: PROC(UPT,ECT,INFO) OPTIONS(REENTRANT) RECURSIVE REORDER; 00014600
0 DCL INFO CHAR(254) VAR; 00014700
DCL 1 INFOLINE, 00014800
2 ISCT BIN(31,0), 00014900
2 ISPMSG PTR, 00015000
2 ISLEN BIN(15,0), 00015100
2 ISOFF BIN(15,0), 00015200
2 ISTEXT CHAR(256); 00015300
DCL 1 PUTLPB, 00015400
2 PTPBCTL BIT(16) ALIGNED, 00015500
2 PTPBTPUT BIN(15,0) INIT(0), 00015600
2 PTPBOPUT PTR, 00015700
2 PTPBFLN PTR INIT(NULL()); 00015800
DCL (ECB,RETCODE) BIN(31,0) INIT(0); 00015900
DCL PLITSSR ENTRY OPTIONS(ASM INTER RETCODE), 00016000
PLISVC ENTRY(BIN(15,0),BIN(31,0),PTR,BIN(31,0)) 00016100
OPTIONS(ASM INTER); 00016200
DCL R0 BIN(31,0), 00016300
R1 PTR; 00016400
DCL 1 ERRMSG, 00016500
2 ERRTEXT CHAR(26) INIT('PUTLINE ERROR, RETURN CODE'), 00016600
2 RETCH PIC'ZZZZ9'; 00016700
0 ISCT = 1; 00016800
ISPMSG = ADDR(ISLEN); 00016900
ISLEN = LENGTH(INFO)+4; 00017000
ISOFF = 0; 00017100
ISTEXT = INFO; 00017200
PTPBCTL = '00010010'B; 00017300
PTPBOPUT = ADDR(INFOLINE); 00017400
0 CALL PLITSSR('IKJPUTL ',UPT,ECT,ECB,PUTLPB); 00017500
RETCODE = PLIRETV(); 00017600
IF RETCODE > 4 THEN 00017700
DO; 00017800
RETCH = RETCODE; 00017900
R0 = LENGTH(ERRTEXT)+5; 00018000
R1 = ADDR(ERRMSG); 00018100
CALL PLISVC(93,R0,R1,RETCODE); 00018200
IF RETCODE > 0 THEN 00018300
SIGNAL ERROR; 00018400
END; 00018500
END; 00018600
/*********************************************************************/ 00018700
* PROCESS ; 00018800
/*********** PL/I - IKJSCAN INTERFACE ***************/ 00018900
/* FUNCTION: */ 00019000
/* CALL IKJSCAN SERVICE ROUTINE, ANALYZE ITS OUTPUT. */ 00019100
/* EXTERNAL REFERENCES: */ 00019200
/* PLIPTIS : PL/I - PUTLINE INTERFACE (SINGLE INFOMSG) */ 00019300
/* PLITSSR : PL/I INTERFACE TO TSO SERVICE ROUTINES */ 00019400
/* FETCHED DYNAMICALLY: */ 00019500
/* IKJSCAN : TSO IKJSCAN SERVICE ROUTINE */ 00019600
0PLISCAN: PROC(CBUF,UPT,ECT) RETURNS(CHAR(8)) 00019700
OPTIONS(REENTRANT) RECURSIVE REORDER; 00019800
0 DCL 1 IKJECT BASED(ADDR(ECT)), 00019900
2 UNUSED CHAR(28), 00020000
2 ECTSWS BIT(8) ALIGNED; 00020100
DCL 1 CSPARMS, 00020200
2 CSECB BIN(31,0) INIT(0), 00020300
2 CSFLG BIT(8) ALIGNED INIT(0), 00020400
2 CSRES BIT(24) ALIGNED INIT(0), 00020500
2 CSOA, 00020600
3 CSOACNM PTR, 00020700
3 CSOALNM BIN(15,0), 00020800
3 CSOAFLG BIT(8) ALIGNED, 00020900
3 CSOARES BIT(8) ALIGNED INIT(0); 00021000
DCL CMD CHAR(8) BASED(CSOACNM); 00021100
DCL ERRMSG CHAR(34) VAR INIT('IKJSCA01I SCAN PARAMETER ERROR'), 00021200
NOINFO CHAR(34) VAR INIT('IKJSCA02I NO INFORMATION AVAILABLE'), 00021300
INVAL CHAR(34) VAR INIT('IKJSCA03I INVALID COMMAND SYNTAX'); 00021400
DCL PLITSSR ENTRY OPTIONS(ASM INTER RETCODE), 00021500
PLIPTIS ENTRY; 00021600
0 CALL PLITSSR('IKJSCAN ',UPT,ECT,CSECB,CSFLG,CSOA,CBUF, 00021700
'IKJSCAN DOESNT LIKE VL BIT ON 6. PARAMETER'); 00021800
IF PLIRETV() > 0 THEN 00021900
DO; 00022000
CALL PLIPTIS(UPT,ECT,ERRMSG); 00022100
SIGNAL ERROR; 00022200
END; 00022300
IF CSOALNM > 0 THEN 00022400
DO; /* VALID COMMAND NAME FOUND */ 00022500
IF CSOAFLG = '10000000'B THEN /* INDICATE PARMS IN ECTSWS */ 00022600
ECTSWS = ECTSWS & '01111111'B; 00022700
ELSE /* INDICATE NO PARMS IN ECTSWS */ 00022800
ECTSWS = ECTSWS | '10000000'B; 00022900
RETURN(SUBSTR(CMD,1,CSOALNM)); 00023000
END; 00023100
SELECT (CSOAFLG); /* NO VALID CMDNAME FOUND */ 00023200
WHEN ('00100000'B) 00023300
CALL PLIPTIS(UPT,ECT,NOINFO); 00023400
WHEN ('00010000'B) ; 00023500
WHEN ('00001000'B) 00023600
CALL PLIPTIS(UPT,ECT,INVAL); 00023700
END; 00023800
RETURN(''); 00023900
END; 00024000
/*********************************************************************/ 00024100
* PROCESS ; 00024200
/***** PL/I - IKJSTCK INTERFACES (CREATE/DELETE DS) *****/ 00024300
/* GENERAL PHILOSOPHY: */ 00024400
/* CONSTRUCT STACK PARAMETER BLOCK, */ 00024500
/* LINK TO IKJSTCK */ 00024600
/* RETURN IF IKJSTCK RETCODE = 0 */ 00024700
/* ELSE WRITE AN ERROR MESSAGE USING PLIPTIS */ 00024800
/* EXTERNAL REFERENCES: */ 00024900
/* PLIPTIS : PL/I - PUTLINE INTERFACE (SINGLE INFOMSG) */ 00025000
/* PLITSSR : PL/I INTERFACE TO TSO SERVICE ROUTINES */ 00025100
/* FETCHED DYNAMICALLY: */ 00025200
/* IKJSTCK : TSO STACK SERVICE ROUTINE */ 00025300
0/***** CREATE AND STACK A OUTPUT DATASET ELEMENT *****/ 00025400
0PLISTAD: PROC(UPT,ECT,DDN,LIST) 00025500
OPTIONS(REENTRANT) RECURSIVE REORDER; 00025600
0 DCL DDN CHAR(8), 00025700
LIST BIN(15,0); 00025800
DCL 1 STACKPB, 00025900
2 STPBOPCD BIT(8) ALIGNED INIT('10000000'B), 00026000
2 STPBELCD BIT(8) ALIGNED, 00026100
2 STPBRES BIN(15,0) INIT(0), 00026200
2 STPBALSD BIN(31,0) INIT(0), 00026300
2 STPBIDDP BIN(31,0) INIT(0), 00026400
2 STPBODDP PTR INIT(ADDR(DDN)); 00026500
DCL ECB BIN(31,0) INIT(0); 00026600
DCL MSG CHAR(34) VAR INIT('IKJSTK01I STACK PARAMETER ERROR'); 00026700
DCL PLITSSR ENTRY(CHAR(8),*,*,*,*) OPTIONS(ASM INTER RETCODE), 00026800
PLIPTIS ENTRY; 00026900
0 IF LIST = 1 THEN 00027000
STPBELCD = '10010001'B; 00027100
ELSE 00027200
STPBELCD = '10010000'B; 00027300
0 CALL PLITSSR('IKJSTCK ',UPT,ECT,ECB,STACKPB); 00027400
IF PLIRETV() > 0 THEN 00027500
DO; 00027600
CALL PLIPTIS(UPT,ECT,MSG); 00027700
SIGNAL ERROR; 00027800
END; 00027900
END; 00028000
/*********************************************************************/ 00028100
* PROCESS ; 00028200
/***** DELETE STACK ELEMENT(S) *****/ 00028300
0PLISTD: PROC(UPT,ECT,DELTYPE) 00028400
OPTIONS(REENTRANT) RECURSIVE REORDER; 00028500
0 DCL DELTYPE BIT(8) ALIGNED; 00028600
DCL 1 STACKPB, 00028700
2 STPBOPCD BIT(8) ALIGNED INIT('01000000'B), 00028800
2 STPBELCD BIT(8) ALIGNED INIT(0), 00028900
2 STPBRES BIN(15,0) INIT(0), 00029000
2 STPBALSD BIN(31,0) INIT(0), 00029100
2 STPBIDDP BIN(31,0) INIT(0), 00029200
2 STPBODDP BIN(31,0) INIT(0); 00029300
DCL ECB BIN(31,0) INIT(0); 00029400
DCL MSG CHAR(34) VAR INIT('IKJSTK01I STACK PARAMETER ERROR'); 00029500
DCL PLITSSR ENTRY(CHAR(8),*,*,*,*) OPTIONS(ASM INTER RETCODE), 00029600
PLIPTIS ENTRY; 00029700
0 IF DELTYPE & '00100000'B THEN 00029800
STPBOPCD = '00100000'B; 00029900
ELSE 00030000
IF DELTYPE & '00010000'B THEN 00030100
STPBOPCD = '00010000'B; 00030200
0 CALL PLITSSR('IKJSTCK ',UPT,ECT,ECB,STACKPB); 00030300
IF PLIRETV() > 0 THEN 00030400
DO; 00030500
CALL PLIPTIS(UPT,ECT,MSG); 00030600
SIGNAL ERROR; 00030700
END; 00030800
END; 00030900
/*********************************************************************/ 00031000
* PROCESS ; 00031100
/************* TSODS COMMAND PROCESSOR FOR TSO ***************/ 00031200
/* TO BE CALLED AT ENTRY POINT PLICALLA. */ 00031300
/* FUNCTION: CREATE A OUTPUT DATASET ELEMENT IN THE TSO STACK */ 00031400
/* AND LINK TO THE COMMAND SPECIFIED. */ 00031500
/* SYNTAX: TSODS 'TSO COMMAND' */ 00031600
/* EXTERNAL REFERENCES: */ 00031700
/* PLISTAD: PL/I IKJSTCK INTERFACE (ADD DATASET ELEMENT) */ 00031800
/* PLISTD : PL/I IKJSTCK INTERFACE (DELETE STACK ELEMET(S)) */ 00031900
/* PLISCAN: PL/I IKJSCAN INTERFACE (SCAN INPUT BUFFER) */ 00032000
/* PLILINK: PL/I LINK SVC INTERFACE */ 00032100
/* PLIPTIS: PL/I PUTLINE INTERFACE (WRITE SINGLE MESSAGE) */ 00032200
/* PLIDA00: PL/I IKJDAIR INTERFACE (VERIFY FILE ALLOCATED) */ 00032300
0TSODS: PROC(CBUF,UPT,PSCB,ECT) OPTIONS(MAIN REENTRANT) REORDER; 00032400
0 DCL PLIXOPT CHAR(30) VAR INIT('ISA(4K),NOSTAE') STATIC EXT; 00032500
DCL RETCODE BIN(31,0) INIT(0); 00032600
DCL PLISTAD ENTRY(*,*,CHAR(8),BIN(15,0)), 00032700
PLISTD ENTRY(*,*,BIT(8) ALIGNED), 00032800
PLISCAN ENTRY RETURNS(CHAR(8)), 00032900
PLILINK ENTRY 00033000
OPTIONS(ASM INTER RETCODE), 00033100
PLIPTIS ENTRY, 00033200
PLIDA00 ENTRY; 00033300
DCL 1 IKJECT BASED(ADDR(ECT)), 00033400
2 UNUSED CHAR(12), 00033500
2 ECTPCMD CHAR(8), 00033600
2 ECTSCMD CHAR(8), 00033700
2 ECTSWS BIT(8) ALIGNED; 00033800
DCL DSN CHAR(44) VAR INIT(''), 00033900
SAVECMD CHAR(8) INIT(ECTPCMD), 00034000
MAINCMD CHAR(8) INIT('TSODS'), 00034100
DELTOP BIT(8) ALIGNED INIT('01000000'B), 00034200
CTL BIT(8) ALIGNED INIT(0), 00034300
FLG BIT(16) ALIGNED INIT(0), 00034400
DSO BIT(8) ALIGNED INIT(0); 00034500
DCL NOALC CHAR(78) VAR INIT('IKJTSD01I FILE TSODS NOT ALLOCATED'), 00034600
NOCMD CHAR(78) VAR INIT('IKJTSD00I COMMAND MISSING'), 00034700
MSG CHAR(78) VAR; 00034800
DCL CMD CHAR(8); 00034900
DCL 1 CMDLIST STATIC EXT, /* LIST OF ALLOWED COMMANDS */ 00035000
2 COUNT BIN(15,0) INIT(23), /* NUMBER OF COMMANDS IN LIST */ 00035100
2 CMDOKAY(40) CHAR(8) INIT( 00035200
'LDS','LISTD','LISTDS', 00035300
'SP','SPACE', 00035400
'L','LIST', 00035500
'LA','LISTA','LISTALC', 00035600
'LB','LISTB','LISTBC', 00035700
'ST','STATUS', 00035800
(25)(8)'*'); 00035900
1/***** VARIOUS TESTS *****/ 00036000
0 IF ECTSWS & '10000000'B THEN 00036100
DO; /* NO COMMAND SPECIFIED */ 00036200
CALL PLIPTIS(UPT,ECT,NOCMD); 00036300
STOP; 00036400
END; 00036500
CMD = PLISCAN(CBUF,UPT,ECT); 00036600
IF CMD = '' THEN /* INVALID COMMAND SYNTAX OR '?' */ 00036700
STOP; 00036800
SELECT(CMD); /* SOME COMMANDS NEED SPECIAL TREATMENT */ 00036900
WHEN('TIME') 00037000
CMD = 'IKJEFT25'; 00037100
WHEN('H','HELP'); 00037200
OTHERWISE 00037300
ALLOWED: 00037400
DO; 00037500
LEAVE ALLOWED ; 00037600
00037700
DO I=1 TO COUNT; /* LOOK IN LIST OF ALLOWED COMMANDS */ 00037800
IF CMD = CMDOKAY(I) THEN 00037900
LEAVE ALLOWED; 00038000
END; 00038100
MSG = 'IKJTSD04I COMMAND '||CMD||' INVALID UNDER TSODS'; 00038200
CALL PLIPTIS(UPT,ECT,MSG); 00038300
STOP; 00038400
END; 00038500
END; 00038600
CALL PLIDA00(UPT,ECT,PSCB,DSN,MAINCMD,CTL,FLG,DSO); 00038700
IF (FLG & '00000110'B) ^= '00000010'B THEN 00038800
DO; /* FILE TSODS NOT ALLOCATED */ 00038900
CALL PLIPTIS(UPT,ECT,NOALC); 00039000
ECTPCMD = SAVECMD; 00039100
STOP; 00039200
END; 00039300
0/***** STACK OUTPUT DATASET ELEMENT AND LINK TO COMMAND *****/ 00039400
ECTPCMD = CMD; 00039500
0 CALL PLISTAD(UPT,ECT,MAINCMD,0); 00039600
CALL PLILINK(CMD,CBUF,UPT,PSCB,ECT); 00039700
RETCODE = PLIRETV(); 00039800
ECTPCMD = SAVECMD; 00039900
0/***** DELETE TOP STACK ELEMENT AND CHECK RETURN CODE FROM LINK *****/ 00040000
0 CALL PLISTD(UPT,ECT,DELTOP); 00040100
CALL PLIRETC(RETCODE); 00040200
END; 00040300