TITLE 'IKJEFF16 && 17 - SUBMIT PCL AND EXIT FOR PARSE' 00010000 * GEN(TITLE 'IKJEFF16 && IKJEFF17 - SUBMIT PCL AND EXIT FOR PARSE') 00020000 TITLE 'IKJEFF16 && IKJEFF17 - SUBMIT PCL AND EXIT FOR PARSE' 00030000 * /******************************************************************* 00040000 * /* * 00050000 * /* MODULE NAME = IKJEFF16 * 00060000 * /* CSECT NAME = IKJEFF16 - PARSE PCL, PCE CONTROL BLOCKS * 00070000 * /* CSECT NAME = IKJEFF17 - PARSE VALIDITY CHECK EXIT * 00080000 * /* * 00090000 * /* DESCRIPTIVE NAME = SUBMIT'S PARSE PCL AND EXIT ROUTINE * 00100000 * /* * 00110000 * /******************************************************************* 00120000 * /* * 00130000 * /* COPYRIGHT = NONE * 00140000 * /* * 00150000 * /* STATUS CHANGE LEVEL=Y02656 SCHEDULER PROTECTION * 00160000 * /* Y02993 SCHEDULER MODULE OWNERSHIP * 00170000 * /* * 00180000 * /* FUNCTION * 00190000 * /* . MODULE 16 CONSISTS OF PARSE PCL'S, * 00200000 * /* CODED WITH THE PARSE MACROS. * 00210000 * /* * 00220000 * /* . MODULE 17 IS ENTERED FROM PARSE AS AN * 00230000 * /* EXIT. IT BUILDS DAIR08 BLOCKS AND THE * 00240000 * /* DD ELEMENT CHAIN, USED BY THE * 00250000 * /* PARSALLOC AND READING ROUTINES. (04 AND 05) * 00260000 * /* * 00270000 * /* . THE TWO CSECTS ARE PART OF THE SAME * 00280000 * /* MODULE TO SATISFY THE REQUIREMENT OF * 00290000 * /* HAVING AN 'ADCON' REFERENCE FROM THE * 00300000 * /* PCL MACRO TO THE EXIT. * 00310000 * /* * 00320000 * /* OPERATION * 00330000 * /* . CHECK THE INPUT PARSE DATA SET NAME PDE AND * 00340000 * /* BUILD A DAIR 08 BLOCK AND SUBMIT EXTENSION * 00350000 * /* BLOCK FOR THE DATA SET. (IF THE SAME * 00360000 * /* DATA SET NAME WAS ENTERED MORE THAN ONCE * 00370000 * /* ON THE SUBMIT COMMAND DUPLICATE DAIR 08 * 00380000 * /* BLOCKS ARE ELIMINATED FROM THE CHAIN, THOUGH * 00390000 * /* EACH ENTRY GETS A SUBMIT EXTENSION BLOCK.) * 00400000 * /* * 00410000 * /* . IF THE DATA SET NAME WAS ENTERED IN QUOTES, * 00420000 * /* DON'T PASS IT TO IKJDFLT FOR CHECKING (ASSUME * 00430000 * /* IT'S CATALOGED - IF IT ISN'T IKJDAIR WILL CATCH * 00440000 * /* THE ERROR LATER). * 00450000 * /* * 00460000 * /* . OTHERWISE PASS THE DSNAME TO IKJDFLT, AND TELL * 00470000 * /* IT TO PREFIX THE TSO ID AND SUFFIX .CNTL TO * 00480000 * /* THE NAME THAT WAS ENTERED (ID.NAMEONCMD.CNTL) * 00490000 * /* * 00500000 * /* . IF IKJDFLT SAYS IT COULDN'T FIND THAT NAME IN * 00510000 * /* THE CATALOG, CALL IKJDFLT AGAIN, TELLING IT * 00520000 * /* TO JUST PREFIX THE TSO ID (IT WILL PROMPT THE * 00530000 * /* USER IF DUPLICATE NAMES ARE FOUND IN THE * 00540000 * /* CATALOG). * 00550000 * /* * 00560000 * /* . IF STILL GET ERROR RETURN, ANALYZE THE RETURN * 00570000 * /* CODE. ISSUE AN ERROR MESSAGE IF IKJDFLT * 00580000 * /* DIDN'T ISSUE ONE ALREADY. THEN RETURN TO * 00590000 * /* PARSE WITH A PROMPTING RETURN CODE (IF POSSIBLE * 00600000 * /* TO RECOVER WHEN USER REENTERS A DATA SET NAME) * 00610000 * /* OR AN ERROR RETURN CODE. * 00620000 * /* * 00630000 * /* ENTRY POINTS * 00640000 * /* IKJEFF17 * 00650000 * /* * 00660000 * /* INPUT * 00670000 * /* . REGISTER 1 POINTS TO A LIST OF * 00680000 * /* POINTERS TO THE FOLLOWING PARAMETERS * 00690000 * /* * 00700000 * /* PARSE DATA SET NAME PDE * 00710000 * /* EXIT WORK AREA * 00720000 * /* * 00730000 * /* OUTPUT * 00740000 * /* PARAMETER LIST POINTED TO BY REG 1 * 00750000 * /* RETURN CODE IN REGISTER 15 * 00760000 * /* * 00770000 * /* EXTERNAL REFERENCES * 00780000 * /* IKJDFLT * 00790000 * /* * 00800000 * /* EXITS, NORMAL * 00810000 * /* RETURN TO CALLER (IKJPARS) * 00820000 * /* * 00830000 * /* EXITS,ERROR * 00840000 * /* RETURN TO CALLER * 00850000 * /* - R.C. 8 TELLS PARSE TO PROMPT WITH 'REENTER' * 00860000 * /* - R.C. 12 MEANS TERMINATE PROCESSING THE COMMAND. * 00870000 * /* * 00880000 * /* TABLE/WORK AREAS * 00890000 * /* PARSE EXIT WORK AREA UPDATE * 00900000 * /* PARSE DATA SET NAME PDE REF * 00910000 * /* DAIR08 BLOCK (IKJDAP08) CREATE IN SUBPOOL 1 * 00920000 * /* DD ELEMENT CHAIN=IKJEFFD8 CREATE IN SUBPOOL 1 * 00930000 * /* MSGTABLE (IKJEFFMT) UPDATE * 00940000 * /* PARSE PCL'S, PCE'S CREATE * 00950000 * /* (IKJPARM, IKJPOSIT, IKJKEYWD, IKJNAME, IKJENDP) * 00960000 * /* * 00970000 * /* EXECUTABLE MACROS * 00980000 * /* FREEMAIN, GETMAIN * 00990000 * /* * 01000000 * /* ATTRIBUTES * 01010000 * /* REENTRANT AND REFRESHABLE * 01020000 * /* SUPERVISOR STATE, KEY 0 * 01030000 * /* (SEE SUBPOOL NOTES IN IKJEFF04'S PROLOGUE) * 01040000 * /* * 01050000 * /* NOTES * 01060000 * /* CHARACTER CODE DEPENDENCY - EBCDIC CHARACTER SET * 01070000 * /* USED IN ASSEMBLING, MUST BE REASSEMBLED IF ANOTHER * 01080000 * /* CHARACTER SET IS USED FOR EXECUTION. * 01090000 * /* * 01100000 * /* MESSAGES (SEE IKJEFF03 FOR MESSAGE ID'S AND * 01110000 * /* DESCRIPTIONS) * 01120000 * /* * 01130000 * /* 17A COMMAND SYSTEM ERROR - * 01140000 * /* ERROR CODE * 01150000 * /* * 01160000 * /* 17B INVALID DATA SET NAME EXCEEDS * 01170000 * /* 44 CHARACTERS * 01180000 * /* * 01190000 * /* 17C DATA SET NOT IN CATALOG * 01200000 * /* * 01210000 * /* PATCH NAME = PATCH * 01220000 * /* * 01230000 * /* CHANGE ACTIVITY = Y02656 (ONE OS APAR, FIXED AS PTM YM3631) * 01240000 * /* APAR/PTM HISTORY - * 01250000 * /* OS/VS2 RELEASE 2 - * 01260000 * /* YM3631 = 'REENTER' PROMPT IF SUBMIT ((MEMBERNAME)) * 01270000 * /* C 112000,112500 @YM3631 * 01280000 * /* A 114550 @YM3631 * 01290000 * /* D 113000,113500,143500-145000 @YM3631 * 01300000 * /* * 01310000 * /******************************************************************* 01320000 * GEN; 01330000 LCLA &T,&SPN 01340000 IKJEFF17 CSECT 01350000 B 18(0,15) 01360000 DC AL1(8) 01370000 DC CL8'IKJEFF17' 01380000 DC CL5'11/73' @YM3631 01390000 AGO .@001 01400000 * IKJEFF17: 01410000 * PROC (DSNPDE, EXAREA) OPTIONS (REENTRANT); 01420000 LCLA &T,&SPN 0003 01430000 .@001 ANOP 0003 01440000 IKJEFF17 CSECT , 0003 01450000 STM @E,@C,12(@D) 0003 01460000 BALR @B,0 0003 01470000 @PSTART DS 0H 0003 01480000 USING @PSTART+00000,@B 0003 01490000 L @0,@SIZ001 0003 01500000 GETMAIN R,LV=(0) 0003 01510000 LR @C,@1 0003 01520000 USING @DATD+00000,@C 0003 01530000 LM @0,@1,20(@D) 0003 01540000 XC @TEMPS(@L),@TEMPS 0003 01550000 ST @D,@SAV001+4 0003 01560000 LA @F,@SAV001 0003 01570000 ST @F,8(0,@D) 0003 01580000 LR @D,@F 0003 01590000 * 01600000 * RESTRICT (2,3,4,5,6); 01610000 * 01620000 * 01630000 * /* DECLARES FOR DAIR08 BLOCK AND EXTENSION */ 01640000 * 01650000 * DCL DAPB0PTR PTR REG(2); /* POINTER TO DAIR08 BLOCK @Y02993* 01660000 * 01670000 * 01680000 ** DECLARE 01690000 ** 1 DAPB08 BASED(DAPB0PTR), 01700000 ** /* *************************************************************** * 01710000 ** /* S OPERATION CODE CAUSES ALLOCATION OF A DATA SET. IT CAN ALLOC. * 01720000 ** /* HER A NEW OR OLD SET. * 01730000 ** /* *************************************************************** * 01740000 ** 2 DA08CD CHAR(2), /* DAIR ENTRY CODE * 01750000 ** 2 DA08FLG CHAR(2), /* FUNCTIONS PERFORMED WHEN 01760000 ** RETURN CODE= 0 * 01770000 ** 3 DA08FPE BIT(1), /* FUNCT PERFORMED BUT ERROR 01780000 ** INDICATED BY RETCD * 01790000 ** 3 * BIT(1), /* RESERVED * 01800000 ** 3 * BIT(1), /* RESERVED * 01810000 ** 3 * BIT(1), /* RESERVED * 01820000 ** 3 * BIT(1), /* RESERVED * 01830000 ** 3 * BIT(1), /* RESERVED * 01840000 ** 3 * BIT(1), /* RESERVED * 01850000 ** 3 * BIT(1), /* RESERVED * 01860000 ** 2 DA08DARC FIXED(15), /*DYN ALLOC * 01870000 ** 2 DA08CTRC FIXED(15), /* CATALOG RETURN CODE * 01880000 ** 2 DA08PDSN PTR(31), /* POINTER TO DSNAME TO BE 01890000 ** SEARCHED IN DSE * 01900000 ** 2 DA08DDN CHAR(8), /* DDNAME TO BE SEARCHED IN DSE * 01910000 ** 2 DA08UNIT CHAR(8), /* UNITNAME REQUESTED * 01920000 ** 2 DA08SER CHAR(8), /* VOLUME SERIAL NUMBER-PADDED 01930000 ** W/BLANKS * 01940000 ** 2 DA08BLK CHAR(4), /* DATA SET * 01950000 ** 2 DA08PQTY CHAR(4), /* PRIMARY SPACE QUANTITY * 01960000 ** 2 DA08SQTY CHAR(4), /* SECONDARY SPACE QUANTITY * 01970000 ** 2 DA08DQTY CHAR(4), /* DIRECTORY BLOCK QUANTITY * 01980000 ** 2 DA08MNM CHAR(8), /* MEMBER NAME * 01990000 ** 2 DA08PSWD CHAR(8), /* PASSWORD * 02000000 ** 2 DA08DSP1 CHAR(1), /* DATA SET STATUS FLGS(IF=0 02010000 ** OLD ASSUMED) * 02020000 ** 3 * BIT(1), /* RESERVED * 02030000 ** 3 * BIT(1), /* RESERVED * 02040000 ** 3 * BIT(1), /* RESERVED * 02050000 ** 3 * BIT(1), /* RESERVED * 02060000 ** 3 DA08SHR BIT(1), /* DATA SET IS SHR * 02070000 ** 3 DA08NEW BIT(1), /* DATA SET IS NEW * 02080000 ** 3 DA08MOD BIT(1), /* DATA SET IS MOD * 02090000 ** 3 DA08OLD BIT(1), /* DATA SET IS OLD * 02100000 ** 2 DA08DPS2 CHAR(1), /* DATA SET DISPOSITION(IF=0 02110000 ** KEEP ASSUMED) * 02120000 ** 3 * BIT(1), /* RESERVED * 02130000 ** 3 * BIT(1), /* RESERVED * 02140000 ** 3 * BIT(1), /* RESERVED * 02150000 ** 3 * BIT(1), /* RESERVED * 02160000 ** 3 DA08KEEP BIT(1), /* DS DISP IS KEEP * 02170000 ** 3 DA08DEL BIT(1), /* DS DISP IS DELETE * 02180000 ** 3 DA08CAT BIT(1), /* DS DISP IS CATLG * 02190000 ** 3 DA08UCAT BIT(1), /* DS DISP IS UNCATALOG * 02200000 ** 2 DA08DPS3 CHAR(1), /* DATA SET CONDITIONAL 02210000 ** DISPOSITION * 02220000 ** 3 * BIT(1), /* RESERVED * 02230000 ** 3 * BIT(1), /* RESERVED * 02240000 ** 3 * BIT(1), /* RESERVED * 02250000 ** 3 * BIT(1), /* RESERVED * 02260000 ** 3 DA08KEP BIT(1), /* DS DISP OF KEEP DESIRED * 02270000 ** 3 DA08DELE BIT(1), 02280000 ** 3 DA08CATL BIT(1), 02290000 ** 3 DA08UNCT BIT(1), 02300000 ** 2 DA08CTL CHAR(1), /* FLAGS TO CONTROL ACTIONS 02310000 ** TAKEN BY DAIR * 02320000 ** 3 DA08TRKS BIT(1), /*SPACE UNITS REQUESTED * 02330000 ** 3 DA08ABKL BIT(1), 02340000 ** 3 DA08UID BIT(1), 02350000 ** 3 DA08RLSE BIT(1), 02360000 ** 3 DA08PERM BIT(1), 02370000 ** 3 DA08DMMY BIT(1), 02380000 ** 3 DA08ATRL BIT(1), /*ATTR LIST SUPPLIED C99236* 02390000 ** 3 * BIT(1), /* C99236* 02400000 ** 2 * CHAR(3), /* RESERVED * 02410000 ** 2 DA08DSO CHAR(1), /* DSORG C99236* 02420000 ** 2 DA08ALN CHAR(8); /* ATTR-LIST-NAME C99236* 02430000 ** 02440000 * DCL 1 D08ADDED BASED(ADDR(DAPB08)+LENGTH(DAPB08)), 02450000 * 2 D08EXTRA, 02460000 * 02470000 * /* THIS AREA IS ADDED TO THE 'DAIR08' PARM BLOCK AREA 02480000 * AND IS USED TO CONTAIN THE NAME OF THE DATA SET AND 02490000 * ITS LENGTH, TOGETHER WITH AN ADJUSTMENT VALUE USED 02500000 * TO 'STRIP OFF' THE USERID, AND A POINTER TO THE NEXT 02510000 * SIMILAR DAIR08 AREA */ 02520000 * 02530000 * 3 NEXT08 PTR BDY (WORD), 02540000 * 3 D8SWITS, 02550000 * 4 D8ADJUST PTR (8), 02560000 * 4 D8SPARE CHAR (1), 02570000 * 3 ORIGNAME BDY (HWORD), 02580000 * 4 NAMELEN FIXED (15), 02590000 * 4 DSNAME CHAR (44), 02600000 * 2 ENDEXTRA CHAR (1); 02610000 * /* DECLARE FOR THE INPUT DATA-SET-NAME PDE FROM PARSE */ 02620000 * DCL 02630000 * 1 DSNPDE, 02640000 * /* THIS IS THE CURRENT PDE FOR 02650000 * THE DATA SET NAME NOW BEING 02660000 * PROCESSED BY PARSE */ 02670000 * 2 PDEDSNPT PTR, 02680000 * 2 PDEDSNLN FIXED (15), 02690000 * 2 PDEFLG1 CHAR (1), 02700000 * 3 PDEDSNB BIT (1), 02710000 * /* 1 IF DSN PRESENT */ 02720000 * 3 PDEQUOTE BIT (1), 02730000 * /* 1 IF DSN QUOTED */ 02740000 * 2 * CHAR (1), 02750000 * 2 PDEMEMPT PTR BDY (WORD), 02760000 * 2 PDEMEMLN FIXED (15), 02770000 * 2 PDEFLG2 CHAR (1), 02780000 * 3 PDEMEMB BIT (1), 02790000 * /* 1 IF MEMBER */ 02800000 * 2 * CHAR (1), 02810000 * 2 PDEPASSP PTR BDY (WORD), 02820000 * 2 PDEPASLN FIXED (15), 02830000 * 2 PDEFLG3 CHAR (1), 02840000 * 3 PDEPASSB BIT (1); 02850000 * /* 1 IF PASSWORD */ 02860000 * DCL 02870000 * PDEDSNAM CHAR (44) BASED (PDEDSNPT), 02880000 * PDEMEM CHAR (8) BASED (PDEMEMPT), 02890000 * PDEPASS CHAR (8) BASED (PDEPASSP); 02900000 * DCL 02910000 * EXAREA; 02920000 * DCL 02930000 * INTFPTR PTR; 02940000 * DCL 02950000 * SUBPOOL1 PTR(31) INIT('01000000'X); /* FOR GETMAINS OF 02960000 * DD AND DAIR08 BLKS-Y02656* 02970000 * DCL 02980000 * 1 MSSG (6) STATIC, /*TABLE WHICH HOUSES THE 02990000 * POSSIBLE MESSAGE IDS FOR 03000000 * THIS CSECT */ 03010000 * 2 MSG CHAR(4) INIT ('17B ', 03020000 * '17B ', 03030000 * '17C ', 03040000 * '17C ', 03050000 * '17A ', 03060000 * '17A '); 03070000 * DCL 03080000 * 1 ERRR (6) STATIC, /*TABLE TO BE USED IN SEARC 03090000 * OF POSSIBLE RETURN CODES 03100000 * FROM DEFAULT RTN*/ 03110000 * 2 ERROR CHAR(4) INIT ('00000010'X, 03120000 * '00000008'X, 03130000 * '00000014'X, 03140000 * '00000024'X, 03150000 * '0000001C'X, 03160000 * '00000000'X); 03170000 * DCL 03180000 * 1 ERRR2 (2) STATIC, /*TABLE TO BE USED IN SEARCH 03190000 * OF THOSE RETURN CODES FOR 03200000 * WHICH DEFAULT WILL PUT OUT 03210000 * THE ERROR MESSAGE */ 03220000 * 2 EROR2 CHAR(4) INIT ('00000004'X, 03230000 * '0000000C'X); 03240000 * DCL 03250000 * 1 PARSWORK BASED(INTFPTR), 03260000 * /* AREA USED TO MAKE THE 03270000 * CONNECTION BETWEEN PARSING OF 03280000 * DATA SET NAMES AND ALLOCATING 03290000 * THEM */ 03300000 * 2 DDCHAIN PTR, 03310000 * /* ANCHOR FOR THE DDNAME CHAIN- 8 03320000 * BYTES- PTR TO DAIR08 BLK THAT 03330000 * HAS DDNAME AND POINTER TO THE 03340000 * NEXT CHAIN ELEMENT */ 03350000 * 2 DAIR08PT PTR, 03360000 * /* ANCHOR FOR DAIR08'S */ 03370000 * 2 PARSPSCB PTR, 03380000 * /* PT TO PSCB, WHICH HAS USERID 03390000 * AND LEN */ 03400000 * 2 EXUPT PTR, 03410000 * 2 EXECT PTR, 03420000 * 2 EXECB PTR, 03430000 * 2 DEFAULT PTR, 03440000 * 2 MSGPTR PTR, 03450000 * 2 DAIR8CT FIXED (15), 03460000 * /* CT OF 08 BLOCKS */ 03470000 * 2 SWA CHAR (1), 03480000 * 2 SWB CHAR (1), 03490000 * 2 LAST08 PTR BDY (WORD), 03500000 * 2 LASTDD PTR, 03510000 * 2 DSNCT FIXED(15); /* HAS # OF SUBMITTED DATA SETS 03520000 * - WILL NOT = DAIR08CT IF HAV 03530000 * SUBMIT WITH SAME DATA SET 03540000 * TWICE * 03550000 * DCL 03560000 * UPT BASED (EXUPT), 03570000 * ECT BASED (EXECT), 03580000 * ECB BASED (EXECB); 03590000 * DCL 03600000 * IKJDFLT ENTRY BASED (DEFAULT); 03610000 * DCL 03620000 * R13 PTR REG (13), 03630000 * PTBACK PTR BASED (R13+4), 03640000 * OLDR1 BASED (PTBACK+24), 03650000 * R15SLOT BASED (PTBACK+16); 03660000 * DCL 03670000 * R0 REG (0), 03680000 * R1 REG (1); 03690000 * DCL 03700000 * I REG (6); 03710000 * DCL 03720000 * K REG (5); 03730000 * DCL 03740000 * L; 03750000 * DCL 03760000 * PTR08 PTR REG (2); 03770000 * DCL 03780000 * DDPTR PTR REG (3); /* WORKING BASE FOR DDNAMES 03790000 * ELEMENT */ 03800000 * DCL 03810000 * 1 DDNAMES BASED (DDPTR), 03820000 * 2 DDELEMNT, 03830000 * 3 DD08PTR PTR, 03840000 * 3 DDNEXT PTR, 03850000 * 2 DDEND; 03860000 * DCL 03870000 * COMPTR PTR REG (4); /* WORKING POINTER USED FOR 03880000 * COMPARE OF DATA SET NAMES WHEN 03890000 * CHECKING FOR DUPLICATIONS */ 03900000 * DCL 03910000 * R15 REG (15); 03920000 * DCL 03930000 * DFLTWORD CHAR(7) INIT('DEFAULT'); /* INSERT IN MSG 17A* 03940000 * DCL 03950000 * 1 DEFPARMS, 03960000 * /* PARAMETER AREA PASSED TO THE 03970000 * DATA SET NAMING DEFAULT 03980000 * ROUTINE IKJDFLT */ 03990000 * 2 DEFDSN PTR, 04000000 * 3 DEFCODE CHAR (1), 04010000 * 2 DEFPSCB PTR, 04020000 * 3 DEFCON CHAR (1), 04030000 * 2 DEFQUAL PTR, 04040000 * 3 DEFLOC PTR (8); 04050000 * /* LOCATE RETURN CODE COMES BACK 04060000 * IN THIS FIELD */ 04070000 * DCL 04080000 * DEFCNTL CHAR (8); 04090000 * DCL 04100000 * DEFR15 PTR (31); 04110000 * DCL 04120000 * 1 COPY, 04130000 * /* THIS FIELD IS USED TO MAKE A 04140000 * COPY OF THE DATA SET NAME AND 04150000 * IS PASSED TO THE DEFAULT 04160000 * ROUTINE IKJDFLT -- IF THE NAME 04170000 * IS ACCEPTED BY DEFAULT -- 04180000 * WHICH MAY OR MAY NOT APPEND 04190000 * QUALIFIERS -- IT IS THEN 04200000 * COPIED BACK TO THE DSNAME 04210000 * FIELD IN THE PDE */ 04220000 * 2 COPYLEN FIXED (15), 04230000 * 2 COPYNAME CHAR (44); 04240000 * DCL PATCH(10) CHAR(3) INIT((10)'ZAP'); /* FOR F.E. ZAPS 04250000 * - @Y02993* 04260000 * 04270000 ** 04280000 **/******************************************************************** 04290000 **/* * 04300000 **/* *** IKJEFFMT *** LEVEL= 9/11/73 OS/VS2 RELEASE 02.0 * 04310000 **/* * 04320000 **/* DESCRIPTION - BILINGUAL MAPPING MACRO FOR PARAMETER LIST TO * 04330000 **/* IKJEFF02 (TSO MESSAGE ISSUER ROUTINE) * 04340000 **/* * 04350000 **/* FUNCTION - THE PARAMETER LIST IDENTIFIES A MESSAGE (WHICH * 04360000 **/* MAY HAVE A SECOND LEVEL MESSAGE), DESCRIBES * 04370000 **/* INSERT(S) FOR THE MESSAGE, AND INDICATES WHETHER * 04380000 **/* TO ISSUE THE MESSAGE AS A PUTLINE, PUTGET, WTO, * 04390000 **/* OR A WRITE TO PROGRAMMER. * 04400000 **/* * 04410000 **/* THE PARAMETER LIST ALSO POINTS TO A MESSAGE * 04420000 **/* CSECT CONTAINING THE MESSAGE'S TEXT. THE * 04430000 **/* IKJTSMSG MACRO IS USED TO GENERATE THE * 04440000 **/* NECESSARY DC'S FOR THE TEXT AND THE OFFSETS * 04450000 **/* TO INSERTS IN THE MESSAGE. THE LAST ENTRY IN * 04460000 **/* THE CSECT MUST BE AN IKJTSMSG MACRO WITH NO * 04470000 **/* OPERANDS. SEE THE MICROFICHE LISTING OF MODULE * 04480000 **/* IKJEFF55 FOR EXAMPLES OF MESSAGE TEXTS GENERATED * 04490000 **/* BY THE IKJTSMSG MACRO. * 04500000 **/* * 04510000 **/* REGISTER 1 -> MTPARML = MSGTABLE PARMLIST * 04520000 **/* REGISTER 15 WILL CONTAIN IKJEFF02'S RETURN CODE * 04530000 **/* TO THE CALLER * 04540000 **/* (RETURN CODE = 0 IF MESSAGE WAS * 04550000 **/* ISSUED SUCCESSFULLY, 12 IF MSGID NOT * 04560000 **/* FOUND IN CSECT (MESSAGE ALSO ISSUED), * 04570000 **/* OR NONZERO RETURN CODE FROM PUTLINE * 04580000 **/* OR PUTGET SERVICE ROUTINE) * 04590000 **/* * 04600000 **/* METHOD OF ACCESS * 04610000 **/* PL/S - %MTNEW='1' - - - - - - IF DON'T WANT BASED * 04620000 **/* %MTBASE='ANY BASE' - - IF MTNEW ISN'T SPECIFIED, * 04630000 **/* DEFAULTS TO BASED(MSGPTR) * 04640000 **/* %MTINSRTN='N' - - - - TO GET INSERT ARRAY WITH N * 04650000 **/* ELEMENTS - DEFAULTS TO * 04660000 **/* 4 INSERTS, NO ARRAY * 04670000 **/* %INCLUDE SYSLIB(IKJEFFMT) * 04680000 **/* * 04690000 **/* BAL - <> * 04710000 **/* MTDSECT=YES IF DON'T WANT TO GET CORE, * 04720000 **/* THEN CODE LA REG,MYMTCORE *CALLER AREA* * 04730000 **/* USING MTDSECTD,REG * 04740000 **/* MTDSECT=NO IS THE DEFAULT. * 04750000 **/* * 04760000 **/* MTNINST=NUMBER SPECIFIES NUMBER OF ENTRIES FOR * 04770000 **/* INSERTS IN THE PARAMETER LIST. MTNINST=4 IS * 04780000 **/* THE DEFAULT. * 04790000 **/* * 04800000 **/* F.E.'S - MICROFICHE LISTING = IKJEFFMT * 04810000 **/* * 04820000 **/******************************************************************** 04830000 ** 04840000 ** DCL 1 MSGTABLE 04850000 ** BASED(MSGPTR) 04860000 * , /* ** MESSAGE TABLE ** * 04870000 * 2 LISTPTR PTR (31), /* PTR TO MSG PARAM LIST* 04880000 * 2 TMCTPTR PTR (31), /* PTR TO TMCT * 04890000 * 3 MTCPPL PTR(31), /* (ALSO CALLED CPPL) * 04900000 * 2 ECBPTR PTR (31), /* PTR TO COMM ECB * 04910000 * 2 * PTR(31), /* ** RESERVED ** * 04920000 * 3 MTHIGH BIT(1), /* FOR STD LINKAGE * 04930000 * 2 MSGCSECT PTR (31), /* **MSG PARAM LIST ** - 04940000 * PTR TO MSG CSECT */ 04950000 * 2 SW PTR (8), /* SWITCH BYTE * 04960000 * 3 MTNOIDSW BIT(1), /* ON IF DATA, NOT MSG * 04970000 * 3 MTPUTLSW BIT(1), /* ON IF WANT PUTLINE, 04980000 * NOT PUTGET (PROMPT) * 04990000 * 3 MTWTOSW BIT(1), /* ON IF WANT WTO MSG * 05000000 * 3 MTHEXSW BIT(1), /* ON IF ALL CONVERSIONS 05010000 * OF NUMBERS ARE TO 05020000 * PRINTABLE HEX 05030000 * (X'VALUE'), NOT TO 05040000 * PRINTABLE DECIMAL */ 05050000 * 3 MTKEY1SW BIT(1), /* ON IF CALLER IN KEY 1* 05060000 * 3 MTJOBISW BIT(1), /* ON IF COMPRESS BLANKS 05070000 * OUT OF JOBNAME(JOBID) 05080000 * INSERT * 05090000 * 3 MTWTPSW BIT(1), /* ON IF WANT WRITE TO 05100000 * PROGRAMMER MESSAGE * 05110000 * 3 MTNHEXSW BIT(1), /* ON IF TRANSLATE ALL 05120000 * NUMBERS TO PRINTABLE 05130000 * DECIMAL (DEFAULT IS TO 05140000 * TRANSLATE TO DECIMAL I 05150000 * VALUE IS LESS THAN 05160000 * X'FFFF', OTHERWISE 05170000 * TRANSLATE TO PRINTABLE 05180000 * HEX) * 05190000 * 2 RETMSG PTR (24), /* PTR TO REPLY AREA * 05200000 * 2 SW2 PTR(8), /* SWITCH BYTE 2 * 05210000 * 3 MT2OLDSW BIT(1), /* ON IF MTOLDPTR POINTS 05220000 * TO SECOND LEVEL MSG 05230000 * ALREADY IN PUTLINE 05240000 * FORMAT (IN OUTPUT LINE 05250000 * DESCRIPTOR(OLD) CONTRO 05260000 * BLOCK). IKJEFF02 WILL 05270000 * COPY IKJ MSG ID FROM 05280000 * FIRST LEVEL INTO FIRST 05290000 * SEGMENT OF SECOND LEVE 05300000 * MESSAGE. * 05310000 * 3 MTDOMSW BIT(1), /* ON IF DELETE WRITE TO 05320000 * PROGRAMMER (OR WTO) 05330000 * MESSAGES FROM CONSOLE, 05340000 * IF THEY ARE DISPLAYED. 05350000 * (MTWTOSW OR MTWTPSW 05360000 * MUST ALSO BE ON) */ 05370000 * 3 * BIT(6), /* ** RESERVED ** * 05380000 * 2 * PTR(24), /* ** RESERVED ** * 05390000 * 2 MTOLDPTR PTR(31), /* POINTS TO O.L.D. FOR 05400000 * 2ND LEVEL MSG IF 05410000 * MT2OLDSW IS ON * 05420000 * 2 * PTR(31), /* ** RESERVED ** * 05430000 * 2 * PTR(31), /* ** RESERVED ** * 05440000 * 2 MSGID CHAR (4), /* MESSAGE ID USED TO FIN 05450000 * MSG TEXT IN MSGCSECT * 05460000 * 2 MTINSRTS, /* USE THIS NAME TO ZERO 05470000 * INSERT AREA * 05480000 * 3 L1 PTR (8), /* LENGTH OF INSERT 1 * 05490000 * 4 HIGHL1 BIT (1), /* ON IF TRANSLATE 1ST 05500000 * 4 BYTES OF INSERT 05510000 * FROM HEX TO CHARACTER 05520000 * (IGNORE REST). ALSO SE 05530000 * MTHEXSW. * 05540000 * 3 VAR1 PTR (24), /* ADDRESS OF INSERT1 05550000 * -NOTE- INSERTS FOR 05560000 * SECOND LEVEL MSG MUST 05570000 * BE FIRST IF PUTLINE * 05580000 * 3 L2 PTR (8), /* LEN OF INSERT2 * 05590000 * 4 HIGHL2 BIT (1), /* BIT FOR INSERT2 * 05600000 * 3 VAR2 PTR (24), /* ADDR OF INSERT2 * 05610000 * 3 L3 PTR (8), /* LEN OF INSERT3 * 05620000 * 4 HIGHL3 BIT (1), /* BIT FOR INSERT3 * 05630000 * 3 VAR3 PTR (24), /* ADDR OF INSERT3 * 05640000 * 3 L4 PTR (8), /* LEN OF INSERT4 * 05650000 * 4 HIGHL4 BIT (1), /* BIT FOR INSERT4 * 05660000 * 3 VAR4 PTR (24), /* ADDR OF INSERT4 * 05670000 * 2 MSGRTN PTR (31); /* MSG RTN ADDR-NOT USED 05680000 * BY IKJEFF02 * 05690000 * 05700000 * /* IKJEFFMT - FORMAT OF REPLY FROM TSO USER */ 05710000 * DCL 1 RET BDY (WORD) BASED (RETMSG), /* REPLY TO MESSAGE * 05720000 * 2 RETSIZE FIXED (15), /* - SIZE, INCLUDING 05730000 * THESE TWO BYTES * 05740000 * 2 RETCHAR CHAR (18); /* - RETURN TEXT * 05750000 * 05760000 * /* IKJEFFMT - CPPL AND ECB POINTED TO BY MESSAGE TABLE */ 05770000 * DCL MSGTMCT BASED (TMCTPTR); /* CPPL FOR MSG RTN * 05780000 * DCL MSGECB BASED (ECBPTR); /* ECB FOR MSG RTN * 05790000 * /***************************************************************** 05800000 * /* END OF IKJEFFMT MAPPING MACRO * 05810000 * /***************************************************************** 05820000 * 05830000 * DCL IKJEFF02 ENTRY BASED (MSGRTN); /* MESSAGE ISSUER 05840000 * ROUTINE @Y02993* 05850000 * /************************************************************ 05860000 * /* INITIALIZATION FOR IKJEFF17 CODE * 05870000 * /************************************************************ 05880000 * 05890000 * INTFPTR=ADDR(EXAREA); /* PICK UP ADDR OF PASSED 05900000 * PARAMETER */ 05910000 L @7,4(0,@1) ADDRESS OF EXAREA 0040 05920000 ST @7,INTFPTR 0040 05930000 * 05940000 * /* OBTAIN AND INITIALIZE DAIR08 BLOCK FOR THIS DSNAME */ 05950000 * GEN (LA R0,ENDEXTRA-D08EXTRA); 05960000 LA R0,ENDEXTRA-D08EXTRA 05970000 DS 0H 05980000 * /* DETERMINE THE LENGTH OF THE 05990000 * ADDITIONS (I.E. DATASET NAME, 06000000 * PTR TO NEXT DAIR 08) TO THE 06010000 * DAIR BLOCK BEING PASSED & PUT 06020000 * THE LENGTH IN REG 0 */ 06030000 * R0=(LENGTH(DAPB08)+R0) | SUBPOOL1; /* 06040000 * THEN ADD THE ADDITIONS TO THE 06050000 * DAIR 08 BLOCK LENGTH 06060000 * - H-O BYTE IS SUBPOOL1 Y02656* 06070000 LR @F,@0 0042 06080000 AH @F,@D1 0042 06090000 O @F,SUBPOOL1 0042 06100000 LR @0,@F 0042 06110000 * GEN (GETMAIN R,LV=(0)); 06120000 GETMAIN R,LV=(0) 06130000 DS 0H 06140000 * PTR08=R1; /* SAVE REG 1 PASSED FROM PARSE * 06150000 LR @2,@1 0044 06160000 * R1=OLDR1; /* OBTAIN THE REG 1 WHICH POINTS T 06170000 * THE PARAMETER LIST*/ 06180000 L @8,4(0,@D) 0045 06190000 L @1,24(0,@8) 0045 06200000 * /* GET A BLOCK FOR DAIR08 AND 06210000 * CLEAR AND INITIALIZE IT */ 06220000 * DAPB08=DAPB08&&DAPB08; 06230000 XC 0(84,@2),0(@2) 0046 06240000 * D08EXTRA=D08EXTRA&&D08EXTRA; 06250000 XC 84(52,@2),84(@2) 0047 06260000 * DA08CD='0008'X; 06270000 MVC 0(2,@2),@X1 0048 06280000 * DA08PDSN=ADDR(NAMELEN); 06290000 LA @F,90(0,@2) 0049 06300000 ST @F,8(0,@2) 0049 06310000 * DA08DDN=' '; 06320000 MVI 12(@2),C' ' 0050 06330000 MVC 13(7,@2),12(@2) 0050 06340000 * DA08MNM=' '; 06350000 MVI 52(@2),C' ' 0051 06360000 MVC 53(7,@2),52(@2) 0051 06370000 * DA08SER=' '; 06380000 MVI 28(@2),C' ' 0052 06390000 MVC 29(7,@2),28(@2) 0052 06400000 * DA08UNIT=' '; 06410000 MVI 20(@2),C' ' 0053 06420000 MVC 21(7,@2),20(@2) 0053 06430000 * /* CHECK DSNAME INFORMATION IN PARSE PDE */ 06440000 * 06450000 * IF PDEMEMB='1'B THEN 06460000 L @9,0(0,@1) ADDRESS OF DSNPDE 0054 06470000 TM 14(@9),B'10000000' 0054 06480000 BC 12,@9FF 0054 06490000 * DA08MNM(1:PDEMEMLN)= PDEMEM(1:PDEMEMLN); 06500000 L @7,8(0,@9) DSNPDE 0055 06510000 LR @E,@7 0055 06520000 LH @8,12(0,@9) 0055 06530000 BCTR @8,0 0055 06540000 LA @A,52(0,@2) 0055 06550000 EX @8,@MVC 0055 06560000 * /* IF THE PRESENCE OF A MEMBER NAM 06570000 * IS INDICATED, STORE THE NAME IN 06580000 * THE DAIR 08 BLOCK */ 06590000 * DA08PSWD=' '; 06600000 @9FF MVI 60(@2),C' ' 0056 06610000 MVC 61(7,@2),60(@2) 0056 06620000 * IF PDEPASSB='1'B THEN 06630000 L @7,0(0,@1) ADDRESS OF DSNPDE 0057 06640000 TM 22(@7),B'10000000' 0057 06650000 BC 12,@9FE 0057 06660000 * DA08PSWD(1:PDEPASLN)= PDEPASS(1:PDEPASLN); 06670000 L @8,16(0,@7) DSNPDE 0058 06680000 LR @E,@8 0058 06690000 LH @9,20(0,@7) 0058 06700000 BCTR @9,0 0058 06710000 LA @A,60(0,@2) 0058 06720000 EX @9,@MVC 0058 06730000 * DA08SHR='1'B; /* DATA SET DISP IS SHR */ 06740000 @9FE OI 68(@2),B'00001000' 0059 06750000 * DA08KEEP='1'B; /* DATA SET DISP IS KEEP */ 06760000 OI 69(@2),B'00001000' 0060 06770000 * DA08KEP='1'B; /* ALSO DESIRE TO KEEP THE DATA SE 06780000 * AFTER PROCESSING */ 06790000 OI 70(@2),B'00001000' 0061 06800000 * IF PDEDSNB='1'B THEN /* IF HAVE DATA SET NAME ENTERED, 06810000 * PASS IT TO IKJDFLT @YM3631* 06820000 L @7,0(0,@1) ADDRESS OF DSNPDE 0062 06830000 TM 6(@7),B'10000000' 0062 06840000 BC 12,@9FD 0062 06850000 * DO; 06860000 * NAMELEN=PDEDSNLN; 06870000 MVC 90(2,@2),4(@7) 0064 06880000 * DSNAME(1:NAMELEN)=PDEDSNAM(1:NAMELEN); 06890000 L @8,0(0,@7) DSNPDE 0065 06900000 LR @E,@8 0065 06910000 LH @9,90(0,@2) 0065 06920000 BCTR @9,0 0065 06930000 LA @A,92(0,@2) 0065 06940000 EX @9,@MVC 0065 06950000 * END; /* NOTE PDEDSNB='0'B IS LEGAL - 06960000 * 'ID.CNTL' IS VALID DSNAME 06970000 * WHEN SUB ((MEMBER)) @YM3631* 06980000 * 06990000 * /* OBTAIN AND INITIALIZE DD CHAIN ELEMENT FOR THIS DSNAME */ 07000000 * GEN (LA R0,DDEND-DDNAMES); /* GET AREA FOR DD CHAIN EL */ 07010000 @9FD EQU * 0067 07020000 LA R0,DDEND-DDNAMES 07030000 DS 0H 07040000 * R0 = R0 | SUBPOOL1; /* GET FROM SUBPOOL 1 @Y02656* 07050000 O @0,SUBPOOL1 0068 07060000 * GEN (GETMAIN R,LV=(0)); 07070000 GETMAIN R,LV=(0) 07080000 DS 0H 07090000 * DDPTR=R1; /* PUT THE ADDR OF THE GOTTEN CORE 07100000 * IN THE DD ELEMENT POINTER SO DD 07110000 * CHAIN MAY BE BUILT */ 07120000 LR @3,@1 0070 07130000 * R1=OLDR1; /* RESTORE REG 1 TO POINT TO THE 07140000 * PARAMETER LIST */ 07150000 L @7,4(0,@D) 0071 07160000 L @1,24(0,@7) 0071 07170000 * DDELEMNT=DDELEMNT&&DDELEMNT; 07180000 XC 0(8,@3),0(@3) 0072 07190000 * /* ZERO THE DD ELEMENT OUT */ 07200000 * 07210000 * /* DON'T CALL DEFAULT ROUTINE IF DSNAME IS FULLY QUALIFIED */ 07220000 * IF PDEQUOTE='1'B THEN 07230000 L @8,0(0,@1) ADDRESS OF DSNPDE 0073 07240000 TM 6(@8),B'01000000' 0073 07250000 * GO TO COMPARE; /* IF DSN WAS QUOTED, THEN IT IS 07260000 * COMPLETE AS ENTERED, SO NOW 07270000 * JUST GO COMPARE FOR 07280000 * DUPLICATION */ 07290000 BC 01,COMPARE 0074 07300000 * /* CALL DEFAULT SERVICE ROUTINE TO GET FULLY QUALIFIED */ 07310000 * /* TSO DATA SET NAME */ 07320000 * 07330000 * DEFDSN=ADDR(COPY); 07340000 LA @F,COPY 0075 07350000 ST @F,DEFPARMS 0075 07360000 * DEFPSCB=PARSPSCB; 07370000 L @9,INTFPTR 0076 07380000 MVC DEFPARMS+4(4),8(@9) 0076 07390000 * DEFCON='20'X; /* ID TO BE PREFIXED @Y02993* 07400000 MVI DEFPARMS+4,X'20' 0077 07410000 * DEFQUAL=ADDR(DEFCNTL); 07420000 LA @F,DEFCNTL 0078 07430000 ST @F,DEFPARMS+8 0078 07440000 * DEFCNTL='CNTL'; /* CNTL TO BE ADDED TO FULLY 07450000 * QUALIFY THE DATA SET NAME */ 07460000 MVC DEFCNTL(4),@C5 0079 07470000 MVI DEFCNTL+4,C' ' 0079 07480000 MVC DEFCNTL+5(3),DEFCNTL+4 0079 07490000 * 07500000 * CALLDEF: 07510000 * COPY=ORIGNAME; 07520000 CALLDEF MVC COPY(46),90(@2) 0080 07530000 * CALL IKJDFLT (UPT,ECT,ECB,DEFPARMS); 07540000 L @7,INTFPTR 0081 07550000 L @7,12(0,@7) PARSWORK 0081 07560000 ST @7,@PL001 0081 07570000 L @8,INTFPTR 0081 07580000 L @8,16(0,@8) PARSWORK 0081 07590000 ST @8,@PL001+4 0081 07600000 L @9,INTFPTR 0081 07610000 L @9,20(0,@9) PARSWORK 0081 07620000 ST @9,@PL001+8 0081 07630000 LA @F,DEFPARMS 0081 07640000 ST @F,@PL001+12 0081 07650000 L @7,INTFPTR 0081 07660000 L @7,24(0,@7) PARSWORK 0081 07670000 LR @F,@7 0081 07680000 LA @1,@PL001 0081 07690000 BALR @E,@F 0081 07700000 L @1,4(0,@D) 0081 07710000 L @1,24(0,@1) 0081 07720000 * /* CALL THE DATA SET NAME DEFAULT 07730000 * ROUTINE -- FIRST TIME GIVE 07740000 * CODE '00' AND IF THAT FAILS 07750000 * THEN CALL AGAIN WITH CODE '04' 07760000 * -- IF THAT FAILS THEN PUT OUT 07770000 * 'DATA SET NOT IN CATALOG' 07780000 * MESSAGE TO SAY CANNOT QUALIFY 07790000 * DSNAME AND TELL PARSE TO HAVE 07800000 * THE USER REEENTER THE NAME. */ 07810000 * DEFR15=R15; /* SAVE REG 15 IN CASE IT IS 07820000 * CHANGED */ 07830000 ST @F,DEFR15 0082 07840000 * 07850000 * /* CHECK FOR GOOD RETURN CODE FROM IKJDFLT */ 07860000 * IF R15=0 THEN 07870000 LTR @F,@F 0083 07880000 BC 07,@9FA 0083 07890000 * DO; /* DO/END GROUP @Y02993* 07900000 * /* CODE TO COMPUTE D8ADJUST VALUE, USED TO STRIP 07910000 * ID FROM FULLY QUALIFIED TSO DSNAME BEFORE 04, 07920000 * 05 ISSUE ERROR MESSAGES FOR THE DSNAME -- 07930000 * CAN'T USE D8ADJUST = PSCBUSRL+1 BECAUSE THE 07940000 * DSNAME'S ID NEED NOT BE THE TSO USERID @Y02993* 07950000 * 07960000 * DO D8ADJUST = 1 TO COPYLEN; /* SCAN QUALIFIED DSNAME UNTI 07970000 * FIND THE PERIOD FOLLOWING THE I 07980000 * FIELD * 07990000 LA @F,1 0085 08000000 STC @F,88(0,@2) 0085 08010000 @DO9F9 LH @F,COPY 0085 08020000 SR @0,@0 0085 08030000 IC @0,88(0,@2) 0085 08040000 CR @F,@0 0085 08050000 BC 04,@DO9F6 0085 08060000 BC 15,@DO9F7 0085 08070000 @DO9F8 LA @F,1 0085 08080000 SR @0,@0 0085 08090000 IC @0,88(0,@2) 0085 08100000 AR @F,@0 0085 08110000 STC @F,88(0,@2) 0085 08120000 BC 15,@DO9F9 0085 08130000 * IF COPYNAME(D8ADJUST) = '.' THEN /* IF HAVE A MATCH * 08140000 @DO9F7 SR @7,@7 0086 08150000 IC @7,88(0,@2) 0086 08160000 LA @A,COPY+1(@7) 0086 08170000 CLI 0(@A),C'.' 0086 08180000 * GO TO HAVELEN; /* TAKE SUCCESS EXIT FROM LOOP * 08190000 BC 08,HAVELEN 0087 08200000 BC 15,@DO9F8 0088 08210000 * END; /* END OF DO LOOP TO SCAN DSNAME * 08220000 * D8ADJUST = 0; /* IF DROP THRU LOOP, SET 08230000 * D8ADJUST = ZERO SO ENTIRE 08240000 * QUALIFIED DSNAME WILL BE 08250000 * INSERTED INTO 04, 05 ERROR 08260000 * MESSAGES */ 08270000 @DO9F6 MVI 88(@2),0 0089 08280000 * HAVELEN: /* SUCCESS EXIT FROM DO LOOP */ 08290000 * GO TO COPYBACK; /* NOW SAVE THE QUALIFIED 08300000 * DSNAME IN D08ADDED C.B. */ 08310000 BC 15,COPYBACK 0090 08320000 * END; /* END OF R15=0 CODE @Y02993* 08330000 * /* PROCESSING FOR ERROR RETURN FROM IKJDFLT */ 08340000 * IF DEFCODE='04'X THEN 08350000 @9FA CLI DEFPARMS,X'04' 0092 08360000 * GO TO DFLTERR; /* TAKE THE SECOND CALL INTO THE 08370000 * DEFAULT RTN TO CHECK FOR THE 08380000 * DATA SET NAME THAT IS FULLY 08390000 * QUALIFIED WITH SOMETHING OTHER 08400000 * THAN CNTL */ 08410000 BC 08,DFLTERR 0093 08420000 * DEFCODE='04'X; 08430000 MVI DEFPARMS,X'04' 0094 08440000 * GO TO CALLDEF; 08450000 BC 15,CALLDEF 0095 08460000 * DFLTERR: /* THE FIRST SEARCH IS FOR THOSE 08470000 * RETURN CODES FOR WHICH DEFAULT 08480000 * ITSELF ISSUES A MESSAGE */ 08490000 * DO I=1 TO 2; 08500000 DFLTERR LA @6,1 0096 08510000 * IF DEFR15=EROR2(I) THEN 08520000 @DO9F5 LR @7,@6 0097 08530000 SLA @7,2 0097 08540000 L @F,ERRR2-4(@7) 0097 08550000 CL @F,DEFR15 0097 08560000 BC 07,@9F1 0097 08570000 * DO; /* DFLTMSG DO/END GROUP @Y02993* 08580000 * R15SLOT=12; /* AN ERROR WAS ENCOUNTERED FROM 08590000 * DEFAULT QUALIFY SO TELL PARSE 08600000 * TO CLEANUP AND THEN TELL 08610000 * SUBMIT TO TERMINATE @Y02993* 08620000 LA @F,12 0099 08630000 L @8,4(0,@D) 0099 08640000 ST @F,16(0,@8) 0099 08650000 * RETURN; /* EXIT SINCE MSG ISSUED @Y02993* 08660000 BC 15,@EL01 0100 08670000 * END; /* DFLTMSG DO/END GROUP @Y02993* 08680000 * END; 08690000 * 08700000 * /* IF DEFAULT DIDN'T ISSUE MESSAGE, ISSUE APPROPRIATE 08710000 * MESSAGE AND THEN HAVE PARSE PROMPT THE USER TO 08720000 * REENTER A DATA SET NAME */ 08730000 * R15SLOT=8; /* TELLS PARSE TO PROMPT @Y02993* 08740000 @9F1 AH @6,@D2 0102 08750000 @DO9F4 CH @6,@D3 0102 08760000 BC 12,@DO9F5 0102 08770000 LA @F,8 0103 08780000 L @7,4(0,@D) 0103 08790000 ST @F,16(0,@7) 0103 08800000 * 08810000 * /* FIND THE CORRECT MSG DEALING 08820000 * WITH THE DEFAULT ERROR RETURN 08830000 * CODE */ 08840000 * DO I=1 TO 5; 08850000 LA @6,1 0104 08860000 * IF DEFR15=ERROR(I) THEN 08870000 @DO9F0 LR @7,@6 0105 08880000 SLA @7,2 0105 08890000 L @F,ERRR-4(@7) 0105 08900000 CL @F,DEFR15 0105 08910000 * GO TO BADNEWS; 08920000 BC 08,BADNEWS 0106 08930000 * END; 08940000 * 08950000 * 08960000 * BADNEWS: /* THIS SECTION OF CODE SETS UP A 08970000 * MSG AND THEN CALLS IKJEFF02 08980000 * TO PUT IT OUT */ 08990000 * MSGID=MSG(I); /* PICK UP MSG ID */ 09000000 AH @6,@D2 0107 09010000 @DO9EF CH @6,@D4 0107 09020000 BC 12,@DO9F0 0107 09030000 BADNEWS LR @7,@6 0108 09040000 SLA @7,2 0108 09050000 LA @E,MSSG-4(@7) 0108 09060000 L @8,INTFPTR 0108 09070000 L @8,28(0,@8) PARSWORK 0108 09080000 MVC 40(4,@8),0(@E) 0108 09090000 * VAR2=ADDR(DEFR15); /* SET UP RETURN CODE AS A VARIABL 09100000 * TO BE INSERTED */ 09110000 LA @F,DEFR15 0109 09120000 ST @F,@TEMP4 0109 09130000 MVC 49(3,@8),@TEMP4+1 0109 09140000 * L2='84'X; /* INDICATES DECIMAL CONVERSION*/ 09150000 MVI 48(@8),X'84' 0110 09160000 * VAR1=ADDR(DSNAME); /* SET UP DATA SET NAME AS A VARI- 09170000 * ABLE TO BE INSERTED */ 09180000 LA @F,92(0,@2) 0111 09190000 ST @F,@TEMP4 0111 09200000 MVC 45(3,@8),@TEMP4+1 0111 09210000 * L1=NAMELEN; /*OBTAIN LENGTH OF NAME SO MSG 09220000 * RTN WILL PUT OUT CORECT AMOUNT*/ 09230000 MVC 44(1,@8),91(@2) 0112 09240000 * HIGHL1='0'B; /*INDICATES NO DECIMAL CONVERSION* 09250000 NI 44(@8),B'01111111' 0113 09260000 * IF MSGID(3)='A' THEN 09270000 CLI 42(@8),C'A' 0114 09280000 BC 07,@9EC 0114 09290000 * DO; /* ALL ERROR MSGS WILL INCLUDE 09300000 * ONLY THE DATA SET NAME EXCEPT 09310000 * 17A WHICH WILL INCLUDE THE 09320000 * ERROR CODE */ 09330000 * VAR1=ADDR(DFLTWORD); /* INSERT 'DEFAULT' IN 09340000 * COMMAND SYSTEM ERROR MSG 09350000 * - @Y02993* 09360000 LA @F,DFLTWORD 0116 09370000 ST @F,@TEMP4 0116 09380000 MVC 45(3,@8),@TEMP4+1 0116 09390000 * L1=LENGTH(DFLTWORD); /* LENGTH OF INSERT @Y02993* 09400000 MVI 44(@8),7 0117 09410000 * END; 09420000 * IF MSGID(3)='B' THEN 09430000 @9EC L @7,INTFPTR 0119 09440000 L @7,28(0,@7) PARSWORK 0119 09450000 CLI 42(@7),C'B' 0119 09460000 BC 07,@9EB 0119 09470000 * IF L1>44 THEN 09480000 CLI 44(@7),44 0120 09490000 BC 12,@9EA 0120 09500000 * L1=44; /*THIS MSG ONLY ALLOWS THE INSER- 09510000 * TION OF A MAX OF 44 CHARACTERS 09520000 * FOR A DATASET NAME*/ 09530000 MVI 44(@7),44 0121 09540000 * R1=MSGPTR; 09550000 @9EA EQU * 0122 09560000 @9EB L @7,INTFPTR 0122 09570000 L @1,28(0,@7) 0122 09580000 * CALL IKJEFF02; 09590000 L @8,INTFPTR 0123 09600000 L @8,28(0,@8) PARSWORK 0123 09610000 L @8,60(0,@8) MSGTABLE 0123 09620000 LR @F,@8 0123 09630000 BALR @E,@F 0123 09640000 * R1=DDPTR; /* FREE DDNAME ELEMENT */ 09650000 LR @1,@3 0124 09660000 * GEN (LA R0,DDEND-DDNAMES); 09670000 LA R0,DDEND-DDNAMES 09680000 DS 0H 09690000 * R0 = R0 | SUBPOOL1; /* FREE FROM SUBPOOL 1 Y02656* 09700000 O @0,SUBPOOL1 0126 09710000 * GEN (FREEMAIN R,LV=(0),A=(1)); 09720000 FREEMAIN R,LV=(0),A=(1) 09730000 DS 0H 09740000 * /* FREE THE DAIR 08 BLOCK IF ERROR OR DUPLICATE DSNAME */ 09750000 * FREE08: 09760000 * R1=PTR08; /* FREE DAIR08 BLOCK */ 09770000 FREE08 LR @1,@2 0128 09780000 * GEN (LA R0,ENDEXTRA-D08EXTRA); 09790000 LA R0,ENDEXTRA-D08EXTRA 09800000 DS 0H 09810000 * R0=(LENGTH(DAPB08)+R0) | SUBPOOL1; /* FREE FROM SUBPOOL 1 09820000 * - Y02656* 09830000 LR @F,@0 0130 09840000 AH @F,@D1 0130 09850000 O @F,SUBPOOL1 0130 09860000 LR @0,@F 0130 09870000 * GEN (FREEMAIN R,LV=(0),A=(1)); 09880000 FREEMAIN R,LV=(0),A=(1) 09890000 DS 0H 09900000 * RETURN; 09910000 BC 15,@EL01 0132 09920000 * 09930000 * /* SAVE THE QUALIFIED DSNAME RETURNED BY IKJDFLT */ 09940000 * COPYBACK: 09950000 * NAMELEN=COPYLEN; 09960000 COPYBACK MVC 90(2,@2),COPY 0133 09970000 * DSNAME=DSNAME&&DSNAME; /* ZERO THE ENTIRE DSNAME FIELD 09980000 * IN THE DAIR08 AREA -- THIS WAY 09990000 * THE COMPARE FOR DUPLICATE 10000000 * NAMES AT 'CHECK' WILL BE VALID 10010000 * BECAUSE THE DSNAME FIELD WAS 10020000 * ORIGINALLY ZEROED WHEN THE 10030000 * ENTIRE DAIR08 AREA WAS ZEROED 10040000 * */ 10050000 XC 92(44,@2),92(@2) 0134 10060000 * DSNAME(1:NAMELEN)=COPYNAME(1:NAMELEN); 10070000 LA @E,COPY+2 0135 10080000 LH @7,90(0,@2) 0135 10090000 BCTR @7,0 0135 10100000 LA @A,92(0,@2) 0135 10110000 EX @7,@MVC 0135 10120000 * /* COPY THE NAME BACK AS RECEIVED 10130000 * FROM THE DEFAULT ROUTINE */ 10140000 * /* CHECK FOR DUPLICATE DSNAMES IN DAIR08 BLOCKS */ 10150000 * COMPARE: 10160000 * /* NOW COMPARE THE DATA SET NAME 10170000 * AGAINST THOSE ALREADY CHAINED 10180000 * UP IN THE DAIR08 BLOCKS -- THE 10190000 * DDNAME PTR IN THE DDNAME CHAIN 10200000 * ELEMENT WILL BE SET TO POINT 10210000 * TO THE DAIR08 BLOCK FOR THIS 10220000 * NAME, EITHER TO AN OLD BLOCK 10230000 * OR TO THE CURRENT BLOCK IF THE 10240000 * DATA SET NAME IS NEW (IN 10250000 * WHICH CASE THE CURRENT DAIR08 10260000 * BLOCK WILL BE ADDED TO THE 10270000 * CHAIN) */ 10280000 * R15SLOT=0; /* INDICATE ALL IS O.K. TO PARSE * 10290000 COMPARE SR @F,@F 0136 10300000 L @7,4(0,@D) 0136 10310000 ST @F,16(0,@7) 0136 10320000 * DSNCT = DSNCT + 1; /* UPDATE COUNT OF SUBMITTED 10330000 * DATA SETS @Y02993* 10340000 LA @F,1 0137 10350000 L @8,INTFPTR 0137 10360000 AH @F,44(0,@8) 0137 10370000 STH @F,44(0,@8) 0137 10380000 * IF DDCHAIN=0 THEN 10390000 SR @F,@F 0138 10400000 C @F,0(0,@8) 0138 10410000 BC 07,@9E9 0138 10420000 * DO; /* IF THIS IS THE FIRST ONE THEN 10430000 * SIMPLY ADD DD ELEMENT AND 08 10440000 * BLOCK AS FIRST IN THE CHAINS 10450000 * */ 10460000 * DDCHAIN=DDPTR; 10470000 ST @3,0(0,@8) 0140 10480000 * DAIR08PT=PTR08; /* POINT TO THE 08 BLOCK THAT IS 10490000 * CURRENTLY ACTIVE */ 10500000 ST @2,4(0,@8) 0141 10510000 * DD08PTR=PTR08; /* ALSO PUT A POINTER IN THE DD 10520000 * ELEMENT CHAIN */ 10530000 ST @2,0(0,@3) 0142 10540000 * DAIR8CT=DAIR8CT+1; /* INCREMENT COUNT OF DAIR BLOCK * 10550000 LA @F,1 0143 10560000 AH @F,32(0,@8) 0143 10570000 STH @F,32(0,@8) 0143 10580000 * LAST08=PTR08; /* SINCE THIS IS THE FIRST DD 10590000 * ELEMENT IT ALSO IS THE LAST & 10600000 * WILL BE THE ALST AS OTHERS ARE 10610000 * ADDED TO THE CHAIN */ 10620000 ST @2,36(0,@8) 0144 10630000 * LASTDD=DDPTR; 10640000 ST @3,40(0,@8) 0145 10650000 * RETURN; 10660000 BC 15,@EL01 0146 10670000 * END; 10680000 * COMPTR=DAIR08PT; 10690000 @9E9 L @7,INTFPTR 0148 10700000 L @4,4(0,@7) 0148 10710000 * CHECK: 10720000 * /* IF ADJUSTMENT IS THE SAME, DSNAME IS THE SAME, MEMBER HAS NOT BEE 10730000 * CHANGED THEN SET THE POINTER TO THE DDCHAIN AND DAIR08BLK */ 10740000 * IF COMPTR->D8ADJUST=D8ADJUST THEN 10750000 CHECK CLC 88(1,@4),88(@2) 0149 10760000 BC 07,@9E8 0149 10770000 * IF COMPTR->DSNAME=DSNAME THEN 10780000 CLC 92(44,@4),92(@2) 0150 10790000 BC 07,@9E7 0150 10800000 * IF COMPTR->DA08MNM=DA08MNM THEN 10810000 CLC 52(8,@4),52(@2) 0151 10820000 BC 07,@9E6 0151 10830000 * DO; /* MATCH FOUND IF THIS DATA SET 10840000 * NAME IS THE SAME AS SOME PRIOR 10850000 * ENTRY */ 10860000 * 10870000 * CHAINDD: 10880000 * LASTDD->DDNEXT=DDPTR; 10890000 CHAINDD L @7,INTFPTR 0153 10900000 L @7,40(0,@7) PARSWORK 0153 10910000 ST @3,4(0,@7) 0153 10920000 * LASTDD=DDPTR; /* ADD EL TO DD CHAIN */ 10930000 L @8,INTFPTR 0154 10940000 ST @3,40(0,@8) 0154 10950000 * DD08PTR=COMPTR; 10960000 ST @4,0(0,@3) 0155 10970000 * GO TO FREE08; /* FREE THE DUP 08 BLOCK */ 10980000 BC 15,FREE08 0156 10990000 * END; 11000000 * COMPTR=COMPTR->NEXT08; 11010000 @9E6 EQU * 0158 11020000 @9E7 EQU * 0158 11030000 @9E8 L @4,84(0,@4) 0158 11040000 * IF COMPTR ^=0 THEN 11050000 LTR @4,@4 0159 11060000 * GO TO CHECK; /* SET WORKING COMPARISON POINTER 11070000 * 'COMPTR' TO NEXT 08 BLOCK -- 11080000 * IF NOT 0 THEN REPEAT THE 11090000 * COMPARE -- OTHERWISE THIS IS A 11100000 * NEW 08 BLOCK */ 11110000 BC 07,CHECK 0160 11120000 * DAIR8CT=DAIR8CT+1; 11130000 LA @F,1 0161 11140000 L @7,INTFPTR 0161 11150000 AH @F,32(0,@7) 0161 11160000 STH @F,32(0,@7) 0161 11170000 * LAST08->NEXT08=PTR08; 11180000 L @8,INTFPTR 0162 11190000 L @8,36(0,@8) PARSWORK 0162 11200000 ST @2,84(0,@8) 0162 11210000 * LAST08=PTR08; /* ADD 08 BLOCK TO THIS CHAIN AND 11220000 * ADD DD EL TO ITS CHAIN */ 11230000 ST @2,36(0,@7) 0163 11240000 * LASTDD->DDNEXT=DDPTR; 11250000 L @8,INTFPTR 0164 11260000 L @8,40(0,@8) PARSWORK 0164 11270000 ST @3,4(0,@8) 0164 11280000 * LASTDD=DDPTR; 11290000 ST @3,40(0,@7) 0165 11300000 * DD08PTR=PTR08; 11310000 ST @2,0(0,@3) 0166 11320000 * RETURN; 11330000 BC 15,@EL01 0167 11340000 * GEN; 11350000 * /* CSECT 16 CONSISTS ONLY OF PCL'S FOR PARSE AND IT IS 11360000 * CODED HERE SO THAT MODULE 17 CAN BE ENTERED FROM THE 11370000 * ADDRESS GIVEN IN 16 */ 11380000 IKJEFF16 IKJPARM 11390000 DSN IKJPOSIT DSNAME, X11400000 LIST, X11410000 PROMPT='DATA SET NAME', X11420000 VALIDCK=IKJEFF17, X11430000 HELP='NAME OF DATA SET CONTAINING JCL' 11440000 NOTIFY IKJKEYWD DEFAULT='NOTIFY' 11450000 IKJNAME 'NOTIFY' 11460000 IKJNAME 'NONOTIFY' 11470000 IKJENDP 11480000 IKJEFF17 CSECT 11490000 DS 0H 11500000 **/*IKJEFF17: CHART */ 11510000 **/*HEADER 11520000 **/*IKJEFF17 PARSE EXIT ROUTINE */ 11530000 **/*E ENTER */ 11540000 **/*P IF THE MEMBER SW IN PDE IS ON, COPY LENGTH OF MEMBER */ 11550000 **/*P IF PASSWORD SW ON, COPY PASSWORD TO DAIR08 */ 11560000 **/*P TURN ON SHARE, KEEP & CONDITIONAL KEEP SWS */ 11570000 **/*D (YES,, NO,%C4) WAS A DATA SET NAME GIVEN */ 11580000 **/*P COPY THE NAME & ITS LENGTH INTO DAIR08 */ 11590000 **/*D (NO,,YES,COMPARE) WAS DATA SET NAME IN QUOTES */ 11600000 **/*CALLDEF: S DEFAULT: CALL DEFAULT RTN */ 11610000 **/*D (NO,,YES,COMPARE) WERE WE ABLE TO ADD QUALIFIERS */ 11620000 **/*P (,BADNEWS) A SECOND CALL IS MADE TO DEFAULT FOR QUALIFYING */ 11630000 **/*COMPARE: D (YES,,NO,CHAINDD) IS THERE A DUPLICATE NAME */ 11640000 **/*P (,%J5) SET UP DD ELEMENT PTR TO EXISTING DAIR08 BLOCK */ 11650000 **/*CHAINDD: P ADD ANOTHER DAIR08 BLOCK & DD ELEMENT AS A PTR TO IT */ 11660000 **/*%J5: R RETURN TO CALLER */ 11670000 **/*BADNEWS: I PUT OUT DEFAULT ERROR MSG/S */ 11680000 **/*%C4: P (,%J5) SEND RETURN CODE OF 8 TO PARSE */ 11690000 **/*IKJEFF17: END */ 11700000 * END 11710000 * /* THE FOLLOWING INCLUDE STATEMENTS WERE FOUND IN THIS PROGRAM. 11720000 * /*%INCLUDE SYSLIB (IKJDAP08) 11730000 * /*%INCLUDE SYSLIB (IKJEFFD8) 11740000 * /*%INCLUDE SYSLIB (IKJEFFMT) 11750000 * ; 11760000 @EL01 L @D,4(0,@D) 0169 11770000 LR @1,@C 0169 11780000 L @0,@SIZ001 0169 11790000 FREEMAIN R,LV=(0),A=(1) 0169 11800000 LM @E,@C,12(@D) 0169 11810000 BCR 15,@E 0169 11820000 @DATA1 EQU * 11830000 @0 EQU 00 EQUATES FOR REGISTERS 0-15 11840000 @1 EQU 01 11850000 @2 EQU 02 11860000 @3 EQU 03 11870000 @4 EQU 04 11880000 @5 EQU 05 11890000 @6 EQU 06 11900000 @7 EQU 07 11910000 @8 EQU 08 11920000 @9 EQU 09 11930000 @A EQU 10 11940000 @B EQU 11 11950000 @C EQU 12 11960000 @D EQU 13 11970000 @E EQU 14 11980000 @F EQU 15 11990000 @D1 DC H'84' 12000000 @D2 DC H'1' 12010000 @D3 DC H'2' 12020000 @D4 DC H'5' 12030000 @MVC MVC 0(1,@A),0(@E) 12040000 DS 0F 12050000 @SIZ001 DC AL1(&SPN) 12060000 DC AL3(@DATEND-@DATD) 12070000 DS 0F 12080000 @C5 DC C'CNTL' 12090000 @X1 DC X'0008' 12100000 DS 0D 12110000 @DATA EQU * 12120000 DAPB0PTR EQU 00000002 FULLWORD POINTER REGISTER 12130000 DAPB08 EQU 00000000 84 BYTE(S) ON WORD 12140000 DA08CD EQU DAPB08+00000000 2 BYTE(S) 12150000 DA08FLG EQU DAPB08+00000002 2 BYTE(S) 12160000 DA08FPE EQU DAPB08+00000002 1 BIT(S) 12170000 A00000 EQU DAPB08+00000002 1 BIT(S) 12180000 A00001 EQU DAPB08+00000002 1 BIT(S) 12190000 A00002 EQU DAPB08+00000002 1 BIT(S) 12200000 A00003 EQU DAPB08+00000002 1 BIT(S) 12210000 A00004 EQU DAPB08+00000002 1 BIT(S) 12220000 A00005 EQU DAPB08+00000002 1 BIT(S) 12230000 A00006 EQU DAPB08+00000002 1 BIT(S) 12240000 DA08DARC EQU DAPB08+00000004 HALFWORD INTEGER 12250000 DA08CTRC EQU DAPB08+00000006 HALFWORD INTEGER 12260000 DA08PDSN EQU DAPB08+00000008 FULLWORD POINTER 12270000 DA08DDN EQU DAPB08+00000012 8 BYTE(S) 12280000 DA08UNIT EQU DAPB08+00000020 8 BYTE(S) 12290000 DA08SER EQU DAPB08+00000028 8 BYTE(S) 12300000 DA08BLK EQU DAPB08+00000036 4 BYTE(S) 12310000 DA08PQTY EQU DAPB08+00000040 4 BYTE(S) 12320000 DA08SQTY EQU DAPB08+00000044 4 BYTE(S) 12330000 DA08DQTY EQU DAPB08+00000048 4 BYTE(S) 12340000 DA08MNM EQU DAPB08+00000052 8 BYTE(S) 12350000 DA08PSWD EQU DAPB08+00000060 8 BYTE(S) 12360000 DA08DSP1 EQU DAPB08+00000068 1 BYTE(S) 12370000 A00007 EQU DAPB08+00000068 1 BIT(S) 12380000 A00008 EQU DAPB08+00000068 1 BIT(S) 12390000 A00009 EQU DAPB08+00000068 1 BIT(S) 12400000 A00010 EQU DAPB08+00000068 1 BIT(S) 12410000 DA08SHR EQU DAPB08+00000068 1 BIT(S) 12420000 DA08NEW EQU DAPB08+00000068 1 BIT(S) 12430000 DA08MOD EQU DAPB08+00000068 1 BIT(S) 12440000 DA08OLD EQU DAPB08+00000068 1 BIT(S) 12450000 DA08DPS2 EQU DAPB08+00000069 1 BYTE(S) 12460000 A00011 EQU DAPB08+00000069 1 BIT(S) 12470000 A00012 EQU DAPB08+00000069 1 BIT(S) 12480000 A00013 EQU DAPB08+00000069 1 BIT(S) 12490000 A00014 EQU DAPB08+00000069 1 BIT(S) 12500000 DA08KEEP EQU DAPB08+00000069 1 BIT(S) 12510000 DA08DEL EQU DAPB08+00000069 1 BIT(S) 12520000 DA08CAT EQU DAPB08+00000069 1 BIT(S) 12530000 DA08UCAT EQU DAPB08+00000069 1 BIT(S) 12540000 DA08DPS3 EQU DAPB08+00000070 1 BYTE(S) 12550000 A00015 EQU DAPB08+00000070 1 BIT(S) 12560000 A00016 EQU DAPB08+00000070 1 BIT(S) 12570000 A00017 EQU DAPB08+00000070 1 BIT(S) 12580000 A00018 EQU DAPB08+00000070 1 BIT(S) 12590000 DA08KEP EQU DAPB08+00000070 1 BIT(S) 12600000 DA08DELE EQU DAPB08+00000070 1 BIT(S) 12610000 DA08CATL EQU DAPB08+00000070 1 BIT(S) 12620000 DA08UNCT EQU DAPB08+00000070 1 BIT(S) 12630000 DA08CTL EQU DAPB08+00000071 1 BYTE(S) 12640000 DA08TRKS EQU DAPB08+00000071 1 BIT(S) 12650000 DA08ABKL EQU DAPB08+00000071 1 BIT(S) 12660000 DA08UID EQU DAPB08+00000071 1 BIT(S) 12670000 DA08RLSE EQU DAPB08+00000071 1 BIT(S) 12680000 DA08PERM EQU DAPB08+00000071 1 BIT(S) 12690000 DA08DMMY EQU DAPB08+00000071 1 BIT(S) 12700000 DA08ATRL EQU DAPB08+00000071 1 BIT(S) 12710000 A00019 EQU DAPB08+00000071 1 BIT(S) 12720000 A00020 EQU DAPB08+00000072 3 BYTE(S) 12730000 DA08DSO EQU DAPB08+00000075 1 BYTE(S) 12740000 DA08ALN EQU DAPB08+00000076 8 BYTE(S) 12750000 D08ADDED EQU 00000084 53 BYTE(S) ON WORD 12760000 D08EXTRA EQU D08ADDED+00000000 52 BYTE(S) ON WORD 12770000 NEXT08 EQU D08ADDED+00000000 FULLWORD POINTER 12780000 D8SWITS EQU D08ADDED+00000004 2 BYTE(S) ON WORD 12790000 D8ADJUST EQU D08ADDED+00000004 1 BYTE POINTER 12800000 D8SPARE EQU D08ADDED+00000005 1 BYTE(S) 12810000 ORIGNAME EQU D08ADDED+00000006 46 BYTE(S) ON HWORD 12820000 NAMELEN EQU D08ADDED+00000006 HALFWORD INTEGER 12830000 DSNAME EQU D08ADDED+00000008 44 BYTE(S) 12840000 ENDEXTRA EQU D08ADDED+00000052 1 BYTE(S) 12850000 DSNPDE EQU 00000000 23 BYTE(S) ON WORD 12860000 PDEDSNPT EQU DSNPDE+00000000 FULLWORD POINTER 12870000 PDEDSNLN EQU DSNPDE+00000004 HALFWORD INTEGER 12880000 PDEFLG1 EQU DSNPDE+00000006 1 BYTE(S) 12890000 PDEDSNB EQU DSNPDE+00000006 1 BIT(S) 12900000 PDEQUOTE EQU DSNPDE+00000006 1 BIT(S) 12910000 A00021 EQU DSNPDE+00000007 1 BYTE(S) 12920000 PDEMEMPT EQU DSNPDE+00000008 FULLWORD POINTER 12930000 PDEMEMLN EQU DSNPDE+00000012 HALFWORD INTEGER 12940000 PDEFLG2 EQU DSNPDE+00000014 1 BYTE(S) 12950000 PDEMEMB EQU DSNPDE+00000014 1 BIT(S) 12960000 A00022 EQU DSNPDE+00000015 1 BYTE(S) 12970000 PDEPASSP EQU DSNPDE+00000016 FULLWORD POINTER 12980000 PDEPASLN EQU DSNPDE+00000020 HALFWORD INTEGER 12990000 PDEFLG3 EQU DSNPDE+00000022 1 BYTE(S) 13000000 PDEPASSB EQU DSNPDE+00000022 1 BIT(S) 13010000 PDEDSNAM EQU 00000000 44 BYTE(S) 13020000 PDEMEM EQU 00000000 8 BYTE(S) 13030000 PDEPASS EQU 00000000 8 BYTE(S) 13040000 EXAREA EQU 00000000 FULLWORD INTEGER 13050000 SUBPOOL1 EQU * FULLWORD POINTER 13060000 DC XL4'01000000' 13070000 MSSG EQU @DATA+00000004 6*4 BYTE(S) ON WORD 13080000 MSG EQU * 4 BYTE(S) 13090000 DC C'17B ' 13100000 DC C'17B ' 13110000 DC C'17C ' 13120000 DC C'17C ' 13130000 DC C'17A ' 13140000 DC C'17A ' 13150000 ERRR EQU @DATA+00000028 6*4 BYTE(S) ON WORD 13160000 ERROR EQU * 4 BYTE(S) 13170000 DC X'00000010' 13180000 DC X'00000008' 13190000 DC X'00000014' 13200000 DC X'00000024' 13210000 DC X'0000001C' 13220000 DC X'00000000' 13230000 ERRR2 EQU @DATA+00000052 2*4 BYTE(S) ON WORD 13240000 EROR2 EQU * 4 BYTE(S) 13250000 DC X'00000004' 13260000 DC X'0000000C' 13270000 PARSWORK EQU 00000000 46 BYTE(S) ON WORD 13280000 DDCHAIN EQU PARSWORK+00000000 FULLWORD POINTER 13290000 DAIR08PT EQU PARSWORK+00000004 FULLWORD POINTER 13300000 PARSPSCB EQU PARSWORK+00000008 FULLWORD POINTER 13310000 EXUPT EQU PARSWORK+00000012 FULLWORD POINTER 13320000 EXECT EQU PARSWORK+00000016 FULLWORD POINTER 13330000 EXECB EQU PARSWORK+00000020 FULLWORD POINTER 13340000 DEFAULT EQU PARSWORK+00000024 FULLWORD POINTER 13350000 MSGPTR EQU PARSWORK+00000028 FULLWORD POINTER 13360000 DAIR8CT EQU PARSWORK+00000032 HALFWORD INTEGER 13370000 SWA EQU PARSWORK+00000034 1 BYTE(S) 13380000 SWB EQU PARSWORK+00000035 1 BYTE(S) 13390000 LAST08 EQU PARSWORK+00000036 FULLWORD POINTER 13400000 LASTDD EQU PARSWORK+00000040 FULLWORD POINTER 13410000 DSNCT EQU PARSWORK+00000044 HALFWORD INTEGER 13420000 UPT EQU 00000000 FULLWORD INTEGER 13430000 ECT EQU 00000000 FULLWORD INTEGER 13440000 ECB EQU 00000000 FULLWORD INTEGER 13450000 R13 EQU 00000013 FULLWORD POINTER REGISTER 13460000 PTBACK EQU 00000004 FULLWORD POINTER 13470000 OLDR1 EQU 00000024 FULLWORD INTEGER 13480000 R15SLOT EQU 00000016 FULLWORD INTEGER 13490000 R0 EQU 00000000 FULLWORD INTEGER REGISTER 13500000 R1 EQU 00000001 FULLWORD INTEGER REGISTER 13510000 I EQU 00000006 FULLWORD INTEGER REGISTER 13520000 K EQU 00000005 FULLWORD INTEGER REGISTER 13530000 PTR08 EQU 00000002 FULLWORD POINTER REGISTER 13540000 DDPTR EQU 00000003 FULLWORD POINTER REGISTER 13550000 DDNAMES EQU 00000000 12 BYTE(S) ON WORD 13560000 DDELEMNT EQU DDNAMES+00000000 8 BYTE(S) ON WORD 13570000 DD08PTR EQU DDNAMES+00000000 FULLWORD POINTER 13580000 DDNEXT EQU DDNAMES+00000004 FULLWORD POINTER 13590000 DDEND EQU DDNAMES+00000008 FULLWORD INTEGER 13600000 COMPTR EQU 00000004 FULLWORD POINTER REGISTER 13610000 R15 EQU 00000015 FULLWORD INTEGER REGISTER 13620000 DFLTWORD EQU * 7 BYTE(S) 13630000 DC C'DEFAULT' 13640000 PATCH EQU * 10*3 BYTE(S) 13650000 DC 00010C'ZAP' 13660000 MSGTABLE EQU 00000000 64 BYTE(S) ON WORD 13670000 LISTPTR EQU MSGTABLE+00000000 FULLWORD POINTER 13680000 TMCTPTR EQU MSGTABLE+00000004 FULLWORD POINTER 13690000 MTCPPL EQU MSGTABLE+00000004 FULLWORD POINTER 13700000 ECBPTR EQU MSGTABLE+00000008 FULLWORD POINTER 13710000 A00023 EQU MSGTABLE+00000012 FULLWORD POINTER 13720000 MTHIGH EQU MSGTABLE+00000012 1 BIT(S) 13730000 MSGCSECT EQU MSGTABLE+00000016 FULLWORD POINTER 13740000 SW EQU MSGTABLE+00000020 1 BYTE POINTER 13750000 MTNOIDSW EQU MSGTABLE+00000020 1 BIT(S) 13760000 MTPUTLSW EQU MSGTABLE+00000020 1 BIT(S) 13770000 MTWTOSW EQU MSGTABLE+00000020 1 BIT(S) 13780000 MTHEXSW EQU MSGTABLE+00000020 1 BIT(S) 13790000 MTKEY1SW EQU MSGTABLE+00000020 1 BIT(S) 13800000 MTJOBISW EQU MSGTABLE+00000020 1 BIT(S) 13810000 MTWTPSW EQU MSGTABLE+00000020 1 BIT(S) 13820000 MTNHEXSW EQU MSGTABLE+00000020 1 BIT(S) 13830000 RETMSG EQU MSGTABLE+00000021 3 BYTE POINTER ON WORD+1 13840000 SW2 EQU MSGTABLE+00000024 1 BYTE POINTER 13850000 MT2OLDSW EQU MSGTABLE+00000024 1 BIT(S) 13860000 MTDOMSW EQU MSGTABLE+00000024 1 BIT(S) 13870000 A00024 EQU MSGTABLE+00000024 6 BIT(S) 13880000 A00025 EQU MSGTABLE+00000025 3 BYTE POINTER ON WORD+1 13890000 MTOLDPTR EQU MSGTABLE+00000028 FULLWORD POINTER 13900000 A00026 EQU MSGTABLE+00000032 FULLWORD POINTER 13910000 A00027 EQU MSGTABLE+00000036 FULLWORD POINTER 13920000 MSGID EQU MSGTABLE+00000040 4 BYTE(S) 13930000 MTINSRTS EQU MSGTABLE+00000044 16 BYTE(S) ON WORD 13940000 L1 EQU MSGTABLE+00000044 1 BYTE POINTER 13950000 HIGHL1 EQU MSGTABLE+00000044 1 BIT(S) 13960000 VAR1 EQU MSGTABLE+00000045 3 BYTE POINTER ON WORD+1 13970000 L2 EQU MSGTABLE+00000048 1 BYTE POINTER 13980000 HIGHL2 EQU MSGTABLE+00000048 1 BIT(S) 13990000 VAR2 EQU MSGTABLE+00000049 3 BYTE POINTER ON WORD+1 14000000 L3 EQU MSGTABLE+00000052 1 BYTE POINTER 14010000 HIGHL3 EQU MSGTABLE+00000052 1 BIT(S) 14020000 VAR3 EQU MSGTABLE+00000053 3 BYTE POINTER ON WORD+1 14030000 L4 EQU MSGTABLE+00000056 1 BYTE POINTER 14040000 HIGHL4 EQU MSGTABLE+00000056 1 BIT(S) 14050000 VAR4 EQU MSGTABLE+00000057 3 BYTE POINTER ON WORD+1 14060000 MSGRTN EQU MSGTABLE+00000060 FULLWORD POINTER 14070000 RET EQU 00000000 20 BYTE(S) ON WORD 14080000 RETSIZE EQU RET+00000000 HALFWORD INTEGER 14090000 RETCHAR EQU RET+00000002 18 BYTE(S) 14100000 MSGTMCT EQU 00000000 FULLWORD INTEGER 14110000 MSGECB EQU 00000000 FULLWORD INTEGER 14120000 ORG @DATA 14130000 DS 00000097C 14140000 @L EQU 1 14150000 @DATD DSECT 14160000 @SAV001 EQU @DATD+00000000 72 BYTE(S) ON WORD 14170000 INTFPTR EQU @DATD+00000072 FULLWORD POINTER 14180000 L EQU @DATD+00000076 FULLWORD INTEGER 14190000 DEFPARMS EQU @DATD+00000080 12 BYTE(S) ON WORD 14200000 DEFDSN EQU DEFPARMS+00000000 FULLWORD POINTER 14210000 DEFCODE EQU DEFPARMS+00000000 1 BYTE(S) 14220000 DEFPSCB EQU DEFPARMS+00000004 FULLWORD POINTER 14230000 DEFCON EQU DEFPARMS+00000004 1 BYTE(S) 14240000 DEFQUAL EQU DEFPARMS+00000008 FULLWORD POINTER 14250000 DEFLOC EQU DEFPARMS+00000008 1 BYTE POINTER 14260000 DEFCNTL EQU @DATD+00000092 8 BYTE(S) 14270000 DEFR15 EQU @DATD+00000100 FULLWORD POINTER 14280000 COPY EQU @DATD+00000104 46 BYTE(S) ON WORD 14290000 COPYLEN EQU COPY+00000000 HALFWORD INTEGER 14300000 COPYNAME EQU COPY+00000002 44 BYTE(S) 14310000 DS 00000150C 14320000 @TEMPS DS 0F 14330000 @TEMP4 DC F'0' 14340000 @PL001 DS 04F 14350000 @DATEND EQU * 14360000 IKJEFF17 CSECT , 14370000 HAVELEN EQU COPYBACK 14380000 END 14390000