TITLE 'APSUX02 - INSTALLATION EXIT JOB TRAILER ROUTINE' 00010000 **** START OF SPECIFICATIONS ***************************************** 00020000 * * 00030000 *01* MODULE NAME = APSUX02 * 00040000 * * 00050000 * $MOD(APSUX02 ) COMP(APS) PROD(PSF) : VERSION 3.2.0 * 00060000 * * 00070000 *01* DESCRIPTIVE NAME = DEFAULT INSTALLATION EXIT JOB TRAILER ROUTINE* 00080000 * * 00090000 *01* STATUS = VERSION 3, RELEASE 2, LEVEL 0 * 00100000 * * 00110000 *01* FUNCTION = Defines a job trailer separator page with the * 00120000 * JOBNAME in Block Letters and followed by job * 00130000 * related information lines. * 00140000 * * 00150000 * This job trailer exit contains the code @D2A* 00160000 * (commented out) to not transmit this trailer @D2A* 00170000 * page (branches around the exit code) if @D2A* 00180000 * connected to DPF (Distributed Print Facility). @D2A* 00190000 * Trailers are required to be @D2A* 00200000 * active when connected to DPF @D2A* 00210000 * so that PSF can inform DPF of the job @D2A* 00220000 * boundaries (required when below JES2 4.1.0 or @D2A* 00230000 * JES3 4.2.0). @D2A* 00240000 * * 00250000 * TRAILER SHEET * 00260000 * * 00270000 * There are 2 forms of this trailer sheet that can be printed. * 00280000 * If JES supports Enhanced Sysout Support (ESS) then the * 00290000 * ESS trailer sheet is printed. If JES does not support ESS * 00300000 * then the original trailer sheet is printed. * 00310000 * * 00320000 * The ESS trailer sheet provides 6 additional keywords. * 00330000 * They are: * 00340000 * TITLE: * 00350000 * NAME: * 00360000 * ROOM: * 00370000 * BUILDING: * 00380000 * DEPARTMENT: * 00390000 * ADDRESS: * 00400000 * * 00410000 * The 6 keywords are obtained from the Print Dataset's * 00420000 * OUTPUT JCL. * 00430000 * * 00440000 * A SEGMENT ID field may or may not be printed on * 00450000 * the same line as the JOBID on the ESS trailer sheet. * 00460000 * If the SYSOUT is not segmented, then the entire * 00470000 * SEGMENT ID field is omitted from the trailer sheet. * 00480000 * For segmented SYSOUT, the SEGMENT ID is formatted * 00490000 * and printed on the trailer sheet. If the segment ID is * 00500000 * negative or greater than 99999, then the SEGMENT ID field * 00510000 * is printed as ***** (indicates an invalid segment ID). * 00520000 * * 00530000 * The OUTPUT JCL (SWBTU) is the preferred source for NAME * 00540000 * and ROOM. The JCL values (6 new keywords) are * 00550000 * retrieved via the SWBTUREQ macro. If * 00560000 * NAME is not in the SWBTU, then the programmer name from the * 00570000 * JSPA is used. Likewise, if ROOM is not in the SWBTU, then * 00580000 * the room from the JSPA (Job Stmt) is used. * 00590000 * * 00600000 * The ADDRESS keyword allows the address to be from 1 to 4 * 00610000 * lines long. Any lines that are unused are printed as blank * 00620000 * lines, but the label ADDRESS appears on the first line even * 00630000 * if no address was specified on the OUTPUT JCL. * 00640000 * * 00650000 * If the SWBTUREQ macro returned an error, the ADDRESS line * 00660000 * is not printed. An error message is printed in the four * 00670000 * lines that would have contained the ADDRESS that contains * 00680000 * the SWBTUREQ Return Code and Reason Code. * 00690000 * * 00700000 * DESTINATION is a new field on the trailer sheet. Its value * 00710000 * is obtained from the JSPA. * 00720000 * * 00730000 * Enhanced Sysout Support (ESS) is supported by: * 00740000 * * 00750000 * MVS 4.1.0+ * 00760000 * JES2 4.10+ * 00770000 * JES3 4.20+ * 00780000 * * 00790000 * CONDITIONAL ASSEMBLY" * 00800000 * * 00810000 * Conditional assembly is used * 00820000 * in this module to determine whether to * 00830000 * assemble the ESS trailer sheet code or not assemble it. * 00840000 * The System Variable Symbol SYSPARM is used to determine the * 00850000 * conditional assembly. * 00860000 * * 00870000 * If SYSPARM is not specified in a job control statement (null) * 00880000 * or SYSPARM is specified as null ("SYSPARM ()"), then the * 00890000 * ESS trailer sheet code is not assembled. * 00900000 * * 00910000 * If SYSPARM is specified in a job control statement as * 00920000 * non-null ("SYSPARM (xxx)" where xxx is any character * 00930000 * string up to 255 characters), then the ESS trailer sheet * 00940000 * code is assembled. * 00950000 * * 00960000 * Example: //STEP EXEC ASMFC,PARM=(SYSPARM(ESS)) * 00970000 * * 00980000 * If the ESS trailer sheet code is assembled, the ESS * 00990000 * trailer sheet is still not printed unless JES supports * 01000000 * ESS (ECEJESS = 1). * 01010000 * * 01020000 * * 01030000 * * 01040000 *02* OPERATION = The following items are done by this exit: * 01050000 * 1. Create 12 block letter line records for * 01060000 * the job name. * 01070000 * 2. Pass the block letter lines to PSF. * 01080000 * 3. Build job information lines. * 01090000 * 4. Pass the information line record to PSF. * 01100000 * * 01110000 *01* NOTES = * 01120000 *02* DEPENDENCIES = NONE * 01130000 *02* RESTRICTIONS = NONE * 01140000 *02* REGISTER-CONVENTIONS = R15 = ENTRY ADDRESS, RESET ON RETURN * 01150000 * R13 = SAVE AREA ADDRESS * 01160000 * R12 = BASE REGISTER * 01170000 * R4-R11 = SEE ASSEMBLER EQUATES BELOW * 01180000 *02* PATCH LABEL = PSPACE * 01190000 * * 01200000 *01* MODULE TYPE = PROCEDURE * 01210000 *02* PROCESSOR = ASSEMBLER * 01220000 *02* ATTRIBUTES = REENTRANT * 01230000 * AMODE 31 * 01240000 * RMODE ANY * 01250000 * * 01260000 *01* ENTRY POINT = APSUX02 * 01270000 *02* LINKAGE = STANDARD CALL * 01280000 * R1 = ADDRESS OF A 4 BYTE FIELD WHICH * 01290000 * CONTAINS THE ADDRESS OF APSGEXTP * 01300000 * * 01310000 *01* INPUT = * 01320000 * APSUCOM - PSF Exits Constants Table * 01330000 * APSGEXTP - PSF Installation Exit Parameter Area * 01340000 * APSUECA - PSF Exit Communications Area * 01350000 * IAZJSPA - JOB Separator Page Area * 01360000 * IEFJMR - MVS Job Management Record * 01370000 * CVT - Communication Vector Table * 01380000 * IEESMCA - System Management Facilities Control @DYA* 01390000 * Table @DYA* 01400000 * IEFJESCT - Job Entry Subsystem Communication Table * 01410000 * IEFSJTRP - Scheduler JCL Facility SWBTUREQ RETRIEVE * 01420000 * Parameter List * 01430000 * IEFDOTUM - Dynamic Output Text Unit Mappings * 01440000 * IEFDOKEY - Dynamic Output Key Mapping * 01450000 * IEFSJTRC - Scheduler JCL Facility (SJF) SWBTUREQ * 01460000 * Services Return and Reason Codes * 01470000 * * 01480000 *01* OUTPUT = * 01490000 * LINE DATA RECORDS * 01500000 * * 01510000 *01* EXIT NORMAL = RETURN TO CALLER * 01520000 * * 01530000 *01* EXIT ERROR = NONE * 01540000 * * 01550000 *01* EXTERNAL REFERENCES = * 01560000 *02* ROUTINES = * 01570000 * APSUBLK - BUILD BLOCK LETTER RECORDS * 01580000 * APSUPUT - PUT RECORD TO PSF * 01590000 *02* DATA AREAS = * 01600000 * APSUCOM - PSF Exits Constants Table * 01610000 * APSGEXTP - PSF Installation Exit Parameter Area * 01620000 * APSUECA - PSF Exit Communications Area * 01630000 * IAZJSPA - JES Separator Page Area * 01640000 * IEFJMR - MVS Job Management Record * 01650000 * CVT - Communication Vector Table * 01660000 * IEESMCA - System Management Facilities Control @DYA* 01670000 * Table @DYA* 01680000 * IEFJESCT - Job Entry Subsystem Communication Table * 01690000 * IEFSJTRP - Scheduler JCL Facility SWBTUREQ RETRIEVE * 01700000 * Parameter List * 01710000 * IEFDOTUM - Dynamic Output Text Unit Mappings * 01720000 * IEFDOKEY - Dynamic Output Key Mapping * 01730000 * IEFSJTRC - Scheduler JCL Facility (SJF) SWBTUREQ * 01740000 * Services Return and Reason Codes * 01750000 *02* INCLUDES = NONE * 01760000 * * 01770000 *01* MACROS = NONE * 01780000 * * 01790000 *01* MESSAGES = NONE * 01800000 * * 01810000 * 01* CHANGE ACTIVITY = * 01820000 * $L1=LAPS0004, HAF1228, 880601, B53KELJ: RELEASE 3.0 * 01830000 * $H5=LAPS0005, HPRF102, 033189, B53KEMC: REL 2.1.0 NEW FUNCT @H5A* 01840000 * $H9=LAPS0005, HAF1237, 062990, B53KRLD: ESS NEW FUNCTION @H9A* 01850000 * $L2=LAPS0005, HPRF102, 910201, BJ13RLD: UPDATE PROLOG RELEASE @L2A* 01860000 * LEVEL (P1966) * 01870000 * $D2=LAPS0006, HPRF220, 930108, BJ13RLD: REL 2.2.0 - @D2A* 01880000 * ADD COMMENTED OUT CODE * 01890000 * TO BYPASS THE EXIT IF * 01900000 * CONNECTED TO DPF. PTR * 01910000 * BF00037. * 01920000 * $D2=LAPS0006, HPRF220, 930715, BJ13RLD: REL 2.2.0 - @D2A* 01930000 * ADD RETURN CODE CHECKING * 01940000 * UPON RETURN FROM APSUPUT. * 01950000 * PTR BF00097. * 01960000 * $01=OW08944, HPRF220, 950127, BJ13RLD: PRINT THE ENTIRE YEAR @01A* 01970000 * (1995) ON THE TRAILER * 01980000 * SHEET * 01990000 * $DU=LAPS0007,HPRF310,980604,BDKURLB: Version 3.1.0 @DUA* 02000000 * $DY=LAPS0008,HPRF320,991115,BDKURLD: System ID on Banner @DYA* 02010000 * $DX=LAPS0008,HPRF320,991117,BUQ4RLB: Version 3.2.0 @DXA* 02020000 * * 02030000 **** END OF SPECIFICATIONS ******************************************* 02040000 * 02050000 APSUX02 START 0 02060000 TITLE 'DSECT - XTP' 02070000 APSGEXTP LIST=YES 02080000 TITLE 'DSECT - ECA' 02090000 APSUECA LIST=YES 02100000 TITLE 'DSECT - JSPA' 02110000 IAZJSPA LIST=YES 02120000 TITLE 'DSECT - JMR' 02130000 IEFJMR 02140000 TITLE 'SMCA MAPPING' @DYA 02150000 IEESMCA @DYA 02160000 TITLE 'CVT MAPPING' 02170000 CVT DSECT=YES Required for SWBTUREQ @H9A 02180000 TITLE 'JESCT MAPPING' 02190000 IEFJESCT Required for SWBTUREQ @H9A 02200000 TITLE 'APSUX02 - INSTALLATION EXIT JOB TRAILER ROUTINE' 02210000 APSUX02 CSECT , 02220000 APSUX02 AMODE 31 @H5A 02230000 APSUX02 RMODE ANY @H5A 02240000 USING *,@15 02250000 B PROLOG 02260000 DC AL1(16) 02270000 DC CL8'APSUX02' @L1C 02280000 DC CL8'&SYSDATE' @L1C 02290000 DROP @15 02300000 * 02310000 ********************************************************************** 02320000 * PROLOG 02330000 ********************************************************************** 02340000 * 02350000 PROLOG DS 0H 02360000 STM @14,@12,12(@13) SAVE CALLERS REGISTERS 02370000 LR @12,@15 R12 IS BASE REG 02380000 USING APSUX02,@12 BASE APSUX02 ON R12 02390000 USING APSGEXTP,XTPPTR BASE APSGEXTP ON XTPPTR 02400000 USING APSUECA,ECAPTR BASE APSUECA ON ECAPTR 02410000 USING IAZJSPA,JSPAPTR BASE IAZJSPA ON JSPAPTR 02420000 USING JMR,JMRPTR BASE JMR ON JMRPTR 02430000 L @04,0(,@01) LOAD ADDRESS OF APSGEXTP 02440000 L @05,XTPECAP LOAD ADDRESS OF APSUECA 02450000 LA ECAWKPTR,ECAWKBUF LOAD ADDRESS OF ECA WORK 02460000 * BUFFER 02470000 USING BUFWRK,ECAWKPTR BASE WORK AREA ON ECA WORK 02480000 * BUFFER 02490000 LR @02,@13 LOAD ADDRESS OF CALLER SAVE 02500000 * AREA 02510000 LA @13,ECAUSAVE R13 POINTS TO APSUX02 02520000 * SAVE AREA 02530000 ST @02,4(,@13) SAVE CALLERS SAVE AREA ADDR 02540000 * 02550000 ********************************************************************** 02560000 * TO SUPPRESS THIS TRAILER WHEN ATTACHED TO THE @D2A 02570000 * DISTRIBUTED PRINT FUNCTION OF PSF/2 THEN UNCOMMENT @D2A 02580000 * THE FOLLOWING CODE. @D2A 02590000 ********************************************************************** 02600000 * 02610000 * USING APSUECE,@02 Get addressablity @D2A 02620000 * L @02,ECAECEP to ECE @D2A 02630000 * @D2A 02640000 * TM ECEFLAG,ECEDPF DPF attached printer?@D2A 02650000 * BO OUT YES - exit immediate @D2A 02660000 * @D2A 02670000 * DROP @02 Drop addr. to ECE @D2A 02680000 * @D2A 02690000 SLR RTNCODE,RTNCODE RESET RETURN CODE 02700000 XC ECAFLAGS(2),ECAFLAGS RESET ECAFLAGS 02710000 L JSPAPTR,XTPJSPAP LOAD ADDRESS OF IAZJSPA 02720000 L JMRPTR,JSPAJMR LOAD ADDRESS OF IEFJMR 02730000 L PUTPTR,ECAPUTP LOAD ADDRESS OF APSUPUT 02740000 NI ECAFLAGS,B'10111111' RESET LEFT ADJUST FLAG 02750000 MVI ECADRF,X'00' RESET RECORD TYPE FLAG 02760000 OI ECADRF,B'01010000' SET LINE MODE AND MACHINE 02770000 * CODE FLAGS 02780000 MVC ECARECLN(4),ONE GET LENGTH OF RECORD 02790000 LA @14,BUFWRK GET ADDRESS OF 02800000 ST @14,ECARECAD RECORD 02810000 * 02820000 ********************************************************************** 02830000 * PRINT THE JOB NAME IN STRAIGHT BLOCK LETTERS 02840000 ********************************************************************** 02850000 * 02860000 MVC ECABLKIN(8),JSPAJBNM OBTAIN JOB NAME 02870000 NI ECAFLAGS,B'01111111' TURN OFF SLANT INDICATOR 02880000 L @15,BLKPTR CALL 02890000 BALR @14,@15 APSUBLK 02900000 MVC ECARECLN(4),LINELGTH SET LENGTH OF THE BLOCK 02910000 * LETTER 02920000 LA @14,BUFWRK SET ADDRESS OF 02930000 ST @14,ECARECAD RECORD 02940000 MVI PRINTCC(@14),X'09' SET CC IN PRINT RECORD 02950000 LA @14,1 LOOP 02960000 STH @14,INDEX INDEX 02970000 LOOP LTR RTNCODE,RTNCODE CHECK RC OF APSUPUT 02980000 BNZ OUT NOT ZERO, EXIT 02990000 LR @15,PUTPTR CALL 03000000 BALR @14,@15 APSUPUT 03010000 LA @14,132 GET NEXT 03020000 AL @14,ECARECAD RECORD 03030000 ST @14,ECARECAD TO PRINT 03040000 MVI PRINTCC(@14),X'09' SET CC 03050000 LA @14,1 CHECK IF 03060000 AH @14,INDEX PRINTED 03070000 STH @14,INDEX TWELVE 03080000 C @14,TWELVE LINES 03090000 BNH LOOP 03100000 LTR RTNCODE,RTNCODE IF APSUPUT FAILED 03110000 BNZ OUT EXIT 03120000 * 03130000 ********************************************************************** 03140000 * PROVIDE 3 BLANK LINES BETWEEN BLOCK LETTER GROUPS 03150000 ********************************************************************** 03160000 * 03170000 LA @14,BUFWRK SET RECORD ADDRESS BACK TO 03180000 ST @14,ECARECAD BEGINNING OF WORK BUFFER 03190000 MVC ECARECLN(4),TWO GET LENGTH OF RECORD 03200000 MVI WRKCC,X'09' SET CC TO WRITE 03210000 MVC PRINTPOS(1),BLANK SET PRINTPOS TO BLANK 03220000 LA @14,1 LOOP 03230000 STH @14,INDEX INDEX 03240000 LOOP1 LTR RTNCODE,RTNCODE CHECK RC OF APSUPUT 03250000 BNZ OUT NOT ZERO, EXIT 03260000 LR @15,PUTPTR CALL 03270000 BALR @14,@15 APSUPUT 03280000 LA @14,1 CHECK IF 03290000 AH @14,INDEX PRINTED 03300000 STH @14,INDEX THREE 03310000 C @14,THREE LINES 03320000 BNH LOOP1 03330000 LTR RTNCODE,RTNCODE IF APSUPUT FAILED 03340000 BNZ OUT EXIT 03350000 * 03360000 ********************************************************************** 03370000 * PRINT THE JOB ID IN STRAIGHT BLOCK LETTERS 03380000 ********************************************************************** 03390000 * 03400000 MVC ECABLKIN(8),JSPAJBID OBTAIN JOB ID 03410000 NI ECAFLAGS,B'01111111' TURN OFF SLANT INDICATOR 03420000 L @15,BLKPTR CALL 03430000 BALR @14,@15 APSUBLK 03440000 MVC ECARECLN(4),LINELGTH SET LENGTH OF RECORD 03450000 LA @14,BUFWRK SET RECORD ADDRESS BACK TO 03460000 ST @14,ECARECAD BEGINNING OF PRINT RECORDS 03470000 MVI PRINTCC(@14),X'09' SET CC IN PRINT RECORD 03480000 LA @14,1 LOOP 03490000 STH @14,INDEX INDEX 03500000 LOOP2 LTR RTNCODE,RTNCODE CHECK RC OF APSUPUT 03510000 BNZ OUT NOT ZERO, EXIT 03520000 LR @15,PUTPTR CALL 03530000 BALR @14,@15 APSUPUT 03540000 LA @14,132 GET NEXT 03550000 AL @14,ECARECAD RECORD 03560000 ST @14,ECARECAD TO PRINT 03570000 MVI PRINTCC(@14),X'09' SET CC 03580000 LA @14,1 CHECK IF 03590000 AH @14,INDEX PRINTED 03600000 STH @14,INDEX TWELVE 03610000 C @14,TWELVE RECORDS 03620000 BNH LOOP2 03630000 LTR RTNCODE,RTNCODE IF APSUPUT FAILED 03640000 BNZ OUT EXIT 03650000 * 03660000 ********************************************************************** 03670000 * PROVIDE 3 BLANK LINES BETWEEN BLOCK LETTER GROUPS 03680000 ********************************************************************** 03690000 * 03700000 LA @14,BUFWRK SET RECORD ADDRESS BACK TO 03710000 ST @14,ECARECAD BEGINNING OF WORK BUFFER 03720000 MVC ECARECLN(4),TWO SET LENGTH OF RECORD 03730000 MVI WRKCC,X'09' SET CC TO WRITE 03740000 MVC PRINTPOS(1),BLANK SET PRINT POSITION TO BLANK 03750000 LA @14,1 LOOP 03760000 STH @14,INDEX INDEX 03770000 LOOP3 LTR RTNCODE,RTNCODE CHECK RC OF APSUPUT 03780000 BNZ OUT NOT ZERO, EXIT 03790000 LR @15,PUTPTR CALL 03800000 BALR @14,@15 APSUPUT 03810000 LA @14,1 CHECK 03820000 AH @14,INDEX IF PRINTED 03830000 STH @14,INDEX THREE 03840000 C @14,THREE LINES 03850000 BNH LOOP3 03860000 LTR RTNCODE,RTNCODE IF APSUPUT FAILED 03870000 BNZ OUT EXIT 03880000 * 03890000 ********************************************************************** 03900000 * 03910000 * Conditional assembly check for ESS 03920000 * 03930000 * The code between the AIF and the label .NOESS01 will be 03940000 * suppressed if SYSPARM is NULL. 03950000 * 03960000 ********************************************************************** 03970000 * 03980000 AIF ('&SYSPARM' EQ '').NOESS01 Branch - ESS not supp @H9A 03990000 * 04000000 ********************************************************************** 04010000 * Determine which separator format to print. * 04020000 * Room Number & Sysout Class are not printed in * 04030000 * straight block letters in ESS. * 04040000 ********************************************************************** 04050000 * 04060000 USING APSUECE,@02 Get addressability @H9A 04070000 L @02,ECAECEP to ECE @H9A 04080000 * 04090000 TM ECEFLAG,ECEJESS Does JES support ESS? @H9A 04100000 BNZ MAINPLIN YES -skip room & @H9A 04110000 * sysout 04120000 * NO -use room & sysout 04130000 * 04140000 DROP @02 Drop addr. to ECE @H9A 04150000 * 04160000 .NOESS01 ANOP @H9A 04170000 * 04180000 ********************************************************************** 04190000 * PRINT THE ROOM NUMBER & SYSOUT CLASS IN STRAIGHT BLOCK LETTERS 04200000 ********************************************************************** 04210000 * 04220000 MVI ECABLKIN,C' ' BLANK OUT 04230000 MVC ECABLKIN+1(7),ECABLKIN THE AREA 04240000 MVC ECABLKIN(4),JSPJRMNO OBTAIN ROOM NUMBER 04250000 MVC ECABLKIN+6(1),JSPJSOCL OBTAIN SYSOUT CLASS 04260000 NI ECAFLAGS,B'01111111' TURN OFF SLANT INDICATOR 04270000 L @15,BLKPTR CALL 04280000 BALR @14,@15 APSUBLK 04290000 MVC ECARECLN(4),LINELGTH GET LENGTH OF THE RECORD 04300000 LA @14,BUFWRK GET ADDRESS OF 04310000 ST @14,ECARECAD THE RECORD 04320000 MVI PRINTCC(@14),X'09' SET CC IN PRINT RECORD 04330000 LA @14,1 LOOP 04340000 STH @14,INDEX INDEX 04350000 LOOP4 LTR RTNCODE,RTNCODE CHECK RC OF APSUPUT 04360000 BNZ OUT NOT ZERO, EXIT 04370000 LR @15,PUTPTR CALL 04380000 BALR @14,@15 APSUPUT 04390000 LA @14,132 GET NEXT 04400000 AL @14,ECARECAD RECORD 04410000 ST @14,ECARECAD TO PRINT 04420000 MVI PRINTCC(@14),X'09' SET CC 04430000 LA @14,1 CHECK IF 04440000 AH @14,INDEX PRINTED 04450000 STH @14,INDEX TWELVE 04460000 C @14,TWELVE LINES 04470000 BNH LOOP4 04480000 LTR RTNCODE,RTNCODE IF APSUPUT FAILED 04490000 BNZ OUT EXIT 04500000 * 04510000 ********************************************************************** 04520000 * PROVIDE 2 BLANK LINES AFTER BLOCK LETTERS 04530000 ********************************************************************** 04540000 * 04550000 LA @14,BUFWRK SET ECARECAD TO WORK 04560000 ST @14,ECARECAD BUFFER ADDRESS 04570000 MVC ECARECLN(4),TWO SET LENGTH OF RECORD 04580000 MVI WRKCC,X'09' SET CC TO WRITE 04590000 MVC PRINTPOS(1),BLANK SET PRINT POSITION TO BLANK 04600000 LA @14,1 LOOP 04610000 STH @14,INDEX INDEX 04620000 LOOP5 LTR RTNCODE,RTNCODE CHECK RC OF APSUPUT 04630000 BNZ OUT NOT ZERO, EXIT 04640000 LR @15,PUTPTR CALL 04650000 BALR @14,@15 APSUPUT 04660000 LA @14,1 CHECK IF 04670000 AH @14,INDEX PRINTED 04680000 STH @14,INDEX TWO 04690000 C @14,TWO LINES 04700000 BNH LOOP5 04710000 LTR RTNCODE,RTNCODE APSUPUT FAILED 04720000 BNZ OUT EXIT 04730000 * 04740000 ********************************************************************** 04750000 * BEGIN BUILDING THE MAIN PRINT LINE 04760000 ********************************************************************** 04770000 * 04780000 MAINPLIN MVI BUFPRT+1,C' ' SET 04790000 MVC BUFPRT+2(125),BUFPRT+1 PRINT LINE @01C 04800000 MVC BUFPRT(1),BLANK TO BLANKS 04810000 * 04820000 ********************************************************************** 04830000 * OBTAIN TIME AND DATE 04840000 * 04850000 * The time and date are calculated here for both the original 04860000 * header sheet and the ESS header sheet. 04870000 * 04880000 * The date is returned in register 1 as packed decimal @01A 04890000 * digits of the form: @01A 04900000 * @01A 04910000 * 0CYYDDDF where @01A 04920000 * @01A 04930000 * C is a digit representing centuries beyond the twentieth. @01A 04940000 * In the years 1900 through 1999, C = 0. In the years @01A 04950000 * 2000 through 2099, C = 1. @01A 04960000 * YY is the last 2 digits of the year. @01A 04970000 * DDD is the day of the year. @01A 04980000 * F is a 4-bit sign character that allows the data to be @01A 04990000 * unpacked and printed. @01A 05000000 * 05010000 ********************************************************************** 05020000 * 05030000 LA @01,2 SET R1 05040000 SLR @00,@00 RESET R0 05050000 SVC 11 ISSUE TIME SVC 05060000 ST @01,WRKDATE SAVE THE DATE (PACKED DEC) 05070000 * 05080000 ********************************************************************** 05090000 * ADJUST TIME FOR AM/PM 05100000 ********************************************************************** 05110000 * 05120000 LA WRKPTR,WRKTIME GET ADDRESS OF WORK AREA 05130000 LA AMPMPTR,WRKAMPM GET ADDRESS OF AM/PM WORK 05140000 * AREA 05150000 MVC WRKAMPM(2),AM SET AM/PM TO AM 05160000 CL @00,=X'12000000' TEST FOR ZERO HOURS 05170000 BL PMORNING BRANCH IF AM 05180000 MVI 0(@03),C'P' CHANGE FROM AM TO PM 05190000 SL @00,=X'12000000' SUBTRACT TWELVE HOURS 05200000 PMORNING ST @00,0(,@02) STORE ADJUSTED TIME 05210000 CLI 0(@02),X'00' TEST FOR ZERO HOURS 05220000 BNE PADJERR BR IF NOT TO TEST ADJ ERR 05230000 MVI 0(@02),X'12' CONVERT ZERO TO TWELVE 05240000 PADJERR TM 0(@02),X'08' TEST FOR ADJUSTMENT ERRORS 05250000 BZ PEDTIME BRANCH IF NO ERROR 05260000 NI 0(@02),X'09' CORRECT FOR BINARY 05270000 * SUBSTRACT ERROR 05280000 PEDTIME DS 0H 05290000 * 05300000 ********************************************************************** 05310000 * UNPACK HOURS MINUTES SECONDS 05320000 ********************************************************************** 05330000 * 05340000 MVI WRKTH,X'0C' RESET LOW ORDER 2 BYTES 05350000 * WITH SIGN FOR PACKED DEC 05360000 UNPK WRKUTIME(7),WRKTIME(4) UNPACK TIME 05370000 CLI WRKHR,X'F0' IF HOUR HAS LEADING ZERO 05380000 BNE NEXT 05390000 MVC WRKHR(1),BLANK CHANGE ZERO TO BLANK 05400000 * 05410000 ********************************************************************** 05420000 * OBTAIN MONTH, DAY AND YEAR 05430000 ********************************************************************** 05440000 * 05450000 NEXT LA @01,4 ADDRESSABILITY TO 05460000 AL @01,ECAUCOMP JULIAN TABLE 05470000 MVC WRKJTBL(48),DAYTBL(@01) COPY TABLE FOR LEAP YEAR 05480000 * ADJUSTMENT 05490000 MVC WRKWORK+4(4),WRKDATE OBTAIN DATE FROM SAVED AREA 05500000 TM WRKWORK+5,X'01' TEST 05510000 BO NOLEAPYR FOR 05520000 TM WRKWORK+5,X'12' LEAP 05530000 BM NOLEAPYR YEAR 05540000 MVI WRKJTBL+4,29 ADJUST FEB FOR LEAP YEAR 05550000 NOLEAPYR MVC WRKED(3),=X'F02120' PLACE PATTERN FOR EDIT@01C 05560000 ED WRKED(3),WRKWORK+5 EDIT THE YEAR @01C 05570000 MVC WRKYY(2),WRKED+1 STORE THE YEAR @01A 05580000 MVC WRKWORK(6),ZEROES RESET ALL BUT JULIAN DATE 05590000 SLR @00,@00 CLEAR FOR IC 05600000 CVB 1,WRKWORK CONVERT TO BINARY DAY 05610000 LA 2,WRKJTBL-4 ADDRESS OF DATE CONVERSION 05620000 * TABLE 05630000 SEARCH SLR @01,@00 CONVERT 05640000 LA @02,4(,@02) JULIAN DAY 05650000 IC @00,0(,@02) TO 05660000 CLR @00,@01 STANDARD DAY 05670000 BL SEARCH 05680000 CVD 1,WRKWORK CONVERT TO DECIMAL DAY 05690000 UNPK WRKDD(2),WRKWORK+6(2) UNPACK THE DAY 05700000 OI WRKDD+1,X'F0' INSURE SIGN NIBBLE 05710000 MVC WRKMMM(3),1(@02) SET EBCIDIC ALPHA MONTH 05720000 * 05730000 MVC WCEN(4),XZERO CLEAR CENTURY FIELD @01A 05740000 MVC WCEN+3(1),WRKDATE OBTAIN CENTURY FROM @01A 05750000 * SAVED AREA @01A 05760000 L @02,WCEN LOAD CENTURY @01A 05770000 A @02,NINETEEN BUMP CENTURY BY 19 @01A 05780000 CVD @02,WRKWORK CONVERT TO DECIMAL @01A 05790000 UNPK WRKCEN(2),WRKWORK+6(2) UNPACK THE CENTURY @01A 05800000 OI WRKCEN+1,X'F0' ENSURE SIGN NIBBLE @01A 05810000 * 05820000 ********************************************************************** 05830000 * 05840000 * Conditional assembly check for ESS 05850000 * 05860000 * The code between the AIF and the label .NOESS02 will be 05870000 * suppressed if SYSPARM is NULL. 05880000 * 05890000 ********************************************************************** 05900000 * 05910000 AIF ('&SYSPARM' EQ '').NOESS02 Branch - ESS not supp @H9A 05920000 * 05930000 ********************************************************************** 05940000 * Determine which separator format to print * 05950000 ********************************************************************** 05960000 * 05970000 USING APSUECE,@02 Get addressability @H9A 05980000 L @02,ECAECEP to ECE @H9A 05990000 * 06000000 TM ECEFLAG,ECEJESS Does JES support ESS? @H9A 06010000 BNZ BUILDBOX YES -build detail box @H9A 06020000 * NO -create old hdr @H9A 06030000 * 06040000 DROP @02 Drop addr. to ECE @H9A 06050000 * 06060000 .NOESS02 ANOP @H9A 06070000 * 06080000 ********************************************************************** 06090000 * CONVERT THE JOE (JOB OUTPUT ELEMENT) ID'S TO UNPACKED FORMAT 06100000 ********************************************************************** 06110000 * 06120000 LH @14,JSPJGRP1 SET JOE ID 1 TO A FOUR 06130000 ST @14,WRKJID1 BYTE FIELD 06140000 LH @00,JSPJGRP2 SET JOE ID 2 TO A FOUR 06150000 ST @00,WRKJID2 BYTE FIELD 06160000 CVD @14,WRKJIDEC CONVERT JOE ID1 TO PACKED 06170000 UNPK WRKJID1Z(8),WRKJIDEC(8) CONVERT JOE ID1 TO ZONED 06180000 OI WRKJID1Z+7,X'F0' FORCE SIGN FOR EBCDIC 06190000 CVD @00,WRKJIDEC CONVERT JOE ID2 TO PACKED 06200000 UNPK WRKJID2Z(8),WRKJIDEC(8) CONVERT JOE ID2 TO ZONED 06210000 OI WRKJID2Z+7,X'F0' FORCE SIGN FOR EBCDIC 06220000 * 06230000 ********************************************************************** 06240000 * COMPOSE THE MAIN PRINT LINE 06250000 ********************************************************************** 06260000 * 06270000 MVI PRTFRAME,X'5C' SET FRAME CHARACTER 06280000 MVC PRTFORM(5),END TRAILER 06290000 * delete 1 line @01D 06300000 MVC PRTNUM(8),JSPAJBID SET JOB NUMBER 06310000 MVC PRTNAME(8),JSPAJBNM SET JOB NAME 06320000 MVC PRTJNAME(8),JSPJGRPN SET JOE NAME 06330000 MVC PRTJID1(3),WRKJID1Z+5 SET JOE ID 1 06340000 MVC PRTJID2(3),WRKJID2Z+5 SET JOE ID 2 06350000 MVI PRTJROUT+5,C' ' SET JOE 06360000 MVC PRTJROUT+6(2),PRTJROUT+5 ROUTE 06370000 MVC PRTJROUT(5),LOCALPR CODE 06380000 MVC PRTPNAME(20),JSPJPNAM SET PROGRAMMER NAME 06390000 MVC PRTRKEY(4),ROOM SET ROOM WORD 06400000 MVC PRTROOM(4),JSPJRMNO SET ROOM NUMBER 06410000 MVC PRTHR(2),WRKHR SET CURRENT HOUR 06420000 MVI PRTTS1,X'4B' SET TIME SEPARATOR 06430000 MVC PRTMIN(2),WRKMIN SET CURRENT MINUTE 06440000 MVI PRTTS2,X'4B' SET TIME SEPARATOR 06450000 MVC PRTSEC(2),WRKSEC SET CURRENT SECONDS 06460000 MVC PRTAMPM(2),WRKAMPM SET CURRENT AM/PM @H9A 06470000 MVC PRTDD(2),WRKDD SET CURRENT DAY 06480000 MVC PRTMMM(3),WRKMMM SET CURRENT MONTH 06490000 MVC PRTCEN(2),WRKCEN SET CURRENT CENTURY @01A 06500000 MVC PRTYY(2),WRKYY SET CURRENT YEAR 06510000 MVC PRTDNAME(8),JSPADEVN SET DEVICE NAME 06520000 MVC PRTSYS(4),JMRCPUID SET SYSTEM NAME 06530000 ********************************************************************** 06540000 * When running in an MAS environment and you want the system ID 06550000 * of the system on which the job was printed, uncomment the 06560000 * following 3 lines, compile, and linkedit the exit. @DYA 06570000 ********************************************************************** 06580000 * L @02,CVTPTR LOCATE @DYA 06590000 * L @02,CVTSMCA-CVT(,@02) SMCA @DYA 06600000 * MVC PRTSYS(4),SMCASID-SMCABASE(@02) USE SMF ID @DYA 06610000 MVC PRTCLASX(1),JSPJSOCL SET SYSOUT CLASS 06620000 * delete 1 line @01D 06630000 * 06640000 ********************************************************************** 06650000 * FILL REST OF SEPARATOR PAGE WITH MAIN PRINT LINE 06660000 ********************************************************************** 06670000 * 06680000 MVI WRKCC,X'09' CC IS WRITE WITH SPACE 06690000 MVC ECARECLN(4),LINELGTH GET LENGTH OF RECORD 06700000 LA @14,BUFWRK GET RECORD 06710000 ST @14,ECARECAD ADDRESS 06720000 LA @14,1 LOOP 06730000 STH @14,INDEX INDEX 06740000 LOOP6 LTR RTNCODE,RTNCODE CHECK RC OF APSUPUT 06750000 BNZ OUT NOT ZERO, EXIT 06760000 LR @15,PUTPTR CALL 06770000 BALR @14,@15 APSUPUT 06780000 LA @14,1 CHECK IF 06790000 AH @14,INDEX PRINTED 06800000 STH @14,INDEX SIXTEEN 06810000 C @14,SIXTEEN LINES 06820000 BNH LOOP6 06830000 OUT DS 0H 06840000 * 06850000 ********************************************************************** 06860000 * EPILOGUE 06870000 ********************************************************************** 06880000 * 06890000 SLR RTNCODE,RTNCODE RESET RETURN CODE 06900000 L @13,4(,@13) RESTORE CALLERS SAVE AREA 06910000 * ADDRESS 06920000 L @14,12(,@13) RESTORE CALLERS RETURN 06930000 * ADDRESS 06940000 LM @00,@12,20(@13) RESTORE CALLERS REGISTERS 06950000 BR @14 RETURN TO CALLER 06960000 DS 0H 06970000 EJECT 06980000 * 06990000 ********************************************************************** 07000000 * 07010000 * Conditional assembly check for ESS 07020000 * 07030000 * The code between the AIF and the label .NOESS03 will be 07040000 * suppressed if SYSPARM is NULL. 07050000 * 07060000 ********************************************************************** 07070000 * 07080000 AIF ('&SYSPARM' EQ '').NOESS03 Branch - ESS not supp @H9A 07090000 * 07100000 *********************************************************************** 07110000 * * 07120000 * BUILDBOX - Build the detail box and print it on the * 07130000 * separator page. * 07140000 * * 07150000 * FUNCTION: * 07160000 * * 07170000 * This code builds and prints the detail box on the * 07180000 * separator page. * 07190000 * * 07200000 * Addressability to the ECA buffer work area is * 07210000 * established and the routine CLRLINE is called to clear * 07220000 * the separator page line buffer. * 07230000 * * 07240000 * CLRLINE is called for each subsequent line to clear that * 07250000 * line and reset the buffer work space pointer. The detail * 07260000 * box information is then filled into the line buffer and * 07270000 * APSUPUT is invoked to print the line. * 07280000 * * 07290000 * This routine will retrieve the new ESS JCL keywords: * 07300000 * * 07310000 * * ADDRESS * 07320000 * * BUILDING * 07330000 * * DEPARTMENT * 07340000 * * TITLE * 07350000 * * ROOM * 07360000 * * NAME * 07370000 * * 07380000 * and place them on the separator page. The keywords * 07390000 * are retrieved using the Scheduler JCL Facility * 07400000 * SWBTUREQ macro. * 07410000 * * 07420000 * The separator page is formated as a detail box * 07430000 * in place of the repeated 16 lines. * 07440000 * * 07450000 * The new format is only available on: * 07460000 * * 07470000 * * MVS 4.1.0+ * 07480000 * * JES2 4.1.0+ * 07490000 * * JES3 4.2.0+ * 07500000 * * 07510000 * Storage located at the end of ECAWKBUF: * 07520000 * * 07530000 * * SWBTUREQ Parameter List * 07540000 * * SWBTUREQ Work Area * 07550000 * * Keylist * 07560000 * * List of SWBTU pointers * 07570000 * * 07580000 * Storage located in the area pointed to by ECEWKPTR: * 07590000 * * 07600000 * * SWBTUREQ OUTPUT AREA * 07610000 * * 07620000 * OTHER CONSIDERATIONS: * 07630000 * * 07640000 * None * 07650000 * * 07660000 *********************************************************************** 07670000 BUILDBOX DS 0H 07680000 * 07690000 ********************************************************************** 07700000 * * 07710000 * Fill in the SWBTUREQ RETRIEVE parameter list, IEFSJTRP. * 07720000 * * 07730000 * * 07740000 ********************************************************************** 07750000 * 07760000 XC SJTRP(SJTRLGTH),SJTRP Clear parameter list @H9A 07770000 MVC SJTRID,=A(SJTRCID) Assign function @H9A 07780000 MVI SJTRVERS,SJTRCVER Assign version number @H9A 07790000 LA @01,SJTRLGTH Set parameter list @H9A 07800000 STH @01,SJTRLEN length @H9A 07810000 * 07820000 * The Work Area is a 1K work area in ECAWKBUF that is used as 07830000 * a work area by the SWBTUREQ macro. 07840000 * 07850000 LA @01,SWBTUWS Set work area @H9A 07860000 ST @01,SJTRSTOR address @H9A 07870000 LA @01,L'SWBTUWS Set work area @H9A 07880000 STH @01,SJTRSTSZ length @H9A 07890000 * 07900000 LA @01,1 Indicate only ONE @H9A 07910000 STH @01,SJTRSWBN SWBTU pointer @H9A 07920000 LA @01,SBTLAREA Set SWBTU addr. list @H9A 07930000 ST @01,SJTRSWBA address (SJTRSBTL) @H9A 07940000 * 07950000 LA @01,6 Indicate six keys in @H9A 07960000 STH @01,SJTRKIDN key list @H9A 07970000 LA @01,KEYLIST Set key list @H9A 07980000 ST @01,SJTRKIDL address @H9A 07990000 ST @01,WRKKYLST Save keylist address @H9A 08000000 * 08010000 USING APSUECE,@02 Get addressability @H9A 08020000 L @02,ECAECEP to ECE @H9A 08030000 * 08040000 * This is a 1K Text Unit Output Area where the parameters are 08050000 * returned by the SWBTUREQ macro. 08060000 * 08070000 L @01,ECEWKPTR Set output area @H9A 08080000 ST @01,SJTRAREA address @H9A 08090000 L @01,ECEWKLEN Set output area @H9A 08100000 STH @01,SJTRSIZE length @H9A 08110000 * 08120000 ********************************************************************** 08130000 * * 08140000 * Initialize the SWBTU pointer list * 08150000 * * 08160000 ********************************************************************** 08170000 * 08180000 USING SJTRSBTL,@07 Establish @H9A 08190000 LA @07,SBTLAREA addressability @H9A 08200000 * 08210000 XC SBTLAREA(L'SBTLAREA),SBTLAREA Clear SWBTU list @H9A 08220000 * 08230000 * Set the address of the area containing the SWBTU data from the 08240000 * JCL for the SWBTUREQ macro. 08250000 * 08260000 MVC SJTRSTUP,ECETUPTR Set input SWBTU ptr @H9A 08270000 DROP @07 08280000 DROP @02 @H9A 08290000 * 08300000 ********************************************************************** 08310000 * * 08320000 * Insert the keys for all of the ESS * 08330000 * parameters being used into the key list. * 08340000 * * 08350000 ********************************************************************** 08360000 * 08370000 $JTRKEYL DS 0H 08380000 USING SJTRKEYL,@07 Establish @H9A 08390000 L @07,WRKKYLST addressability 08400000 * 08410000 XC SJTRKEYL(6*SJTRKLEN),SJTRKEYL Clear key list @H9A 08420000 * 08430000 LA @01,DOTITLE Request @H9A 08440000 STH @01,SJTRKYID+KYLSTTL TITLE key @H9A 08450000 * 08460000 LA @01,DONAME Request @H9A 08470000 STH @01,SJTRKYID+KYLSTNM NAME key @H9A 08480000 * 08490000 LA @01,DOROOM Request @H9A 08500000 STH @01,SJTRKYID+KYLSTRM ROOM key @H9A 08510000 * 08520000 LA @01,DOBUILD Request @H9A 08530000 STH @01,SJTRKYID+KYLSTBL BUILDING key @H9A 08540000 * 08550000 LA @01,DODEPT Request @H9A 08560000 STH @01,SJTRKYID+KYLSTDP DEPARTMENT key @H9A 08570000 * 08580000 LA @01,DOADDRES Request @H9A 08590000 STH @01,SJTRKYID+KYLSTAD ADDRESS key @H9A 08600000 * 08610000 DROP @07 08620000 * 08630000 ********************************************************************** 08640000 * * 08650000 * INVOKE the SWBTUREQ REQUEST=RETRIEVE Macro * 08660000 * ------------------------------------------ * 08670000 * * 08680000 * Set up R1 to point to a word of storage that * 08690000 * contains the address of the parameter list, IEFSJTRP. * 08700000 * * 08710000 ********************************************************************** 08720000 * 08730000 MVI SWBERR,C'N' Initialize to no @H9A 08740000 * SWBTUREQ error 08750000 * 08760000 LA @01,SJTRP Address of @H9A 08770000 ST @01,WRKPLPTR the SWBTUREQ @H9A 08780000 LA @01,WRKPLPTR parameter list @H9A 08790000 * 08800000 * 08810000 SWBTUREQ REQUEST=RETRIEVE INVOKE the Macro @H9A 08820000 * 08830000 * 08840000 C @15,FOUR Check return code @H9A 08850000 BL TOPLINE GOOD retrieval @H9A 08860000 * 08870000 * No keys matched indicates that none of the JCL keywords 08880000 * were specified on the OUTPUT JCL. No error message is 08890000 * printed. Instead the keywords are just left blank on the 08900000 * header sheet. 08910000 * 08920000 CLC SJTRREAS,=A(SJTRNOKY) No keys matched? @H9A 08930000 BE TOPLINE YES---Go to TOPLINE @H9A 08940000 * 08950000 ********************************************************************** 08960000 * * 08970000 * If the SWBTUREQ returns an error, the detail box is * 08980000 * still printed. An error message is printed on the * 08990000 * ADDRESS line. * 09000000 * * 09010000 * NOTE: The PSF-supplied exits should not receive any * 09020000 * errors from the SWBTUREQ. This code is mainly * 09030000 * supplied for diagnostic purposes when changing * 09040000 * the exit. * 09050000 * * 09060000 ********************************************************************** 09070000 * 09080000 REQ_BAD DS 0H 09090000 CVD @15,DBLWORD Convert to pkd dec. @H9A 09100000 MVC FULLWORD,DBLWORD+4 Move packed ret. cde @H9A 09110000 UNPK DBLWORD,FULLWORD Unpack return code @H9A 09120000 MVZ DBLWORD+7(1),DBLWORD+6 Correct the sign @H9A 09130000 * 09140000 MVC SWBRC(4),DBLWORD+4 Save return code @H9A 09150000 * 09160000 LH @01,SJTRREAS Load reason code 09170000 CVD @01,DBLWORD Convert to pkd dec. @H9A 09180000 MVC FULLWORD,DBLWORD+4 Move packed reas. cde @H9A 09190000 UNPK DBLWORD,FULLWORD Unpack reason code 09200000 MVZ DBLWORD+7(1),DBLWORD+6 Correct the sign @H9A 09210000 * 09220000 MVC SWBRS(4),DBLWORD+4 Save reason code @H9A 09230000 * 09240000 MVI SWBERR,C'Y' Indicate a SWBTUREQ @H9A 09250000 * error occurred and 09260000 * a msg is required 09270000 * 09280000 * 09290000 ********************************************************************** 09300000 * Build and print top line * 09310000 ********************************************************************** 09320000 * 09330000 TOPLINE DS 0H 09340000 BAL @14,CLRLINE Clear printline @H9A 09350000 MVC BOXLINE(10),ENDTAG Move in END tag @H9A 09360000 MVC BOXLINE+10(L'BOXLINE-10),BOXLINE Propogate chars @H9A 09370000 * 09380000 L @15,ECAPUTP CALL @H9A 09390000 BALR @14,@15 APSUPUT @H9A 09400000 LTR RTNCODE,RTNCODE APSUPUT FAILED? @D2A 09410000 BNZ OUT EXIT @D2A 09420000 * 09430000 ********************************************************************** 09440000 * Build and print 2 blank lines * 09450000 * ( Frame characters in box cols 01 & 80 ) * 09460000 ********************************************************************** 09470000 * 09480000 LA @06,2 LOAD Reg6 with 2 @H9A 09490000 TOPBLNKS DS 0H 09500000 BAL @14,CLRLINE Clear printline @H9A 09510000 * 09520000 L @15,ECAPUTP CALL @H9A 09530000 BALR @14,@15 APSUPUT @H9A 09540000 LTR RTNCODE,RTNCODE APSUPUT FAILED? @D2A 09550000 BNZ OUT EXIT @D2A 09560000 * 09570000 BCT @06,TOPBLNKS Build & print 2 lines @H9A 09580000 * 09590000 ********************************************************************** 09600000 * Build and print JOB ID line * 09610000 ********************************************************************** 09620000 * 09630000 BAL @14,CLRLINE Clear printline @H9A 09640000 * 09650000 MVC BOXDESC,LBJOBID Put JOB ID label @H9A 09660000 MVC BOXINFO(8),JSPAJBID Put JOBID into box @H9A 09670000 * 09680000 * 09690000 USING JSPEXT,@07 Base JSPA extension @H9A 09700000 TM JSPAFLG1,JSPA1EXT Does JSPA ext. exist? @H9A 09710000 BZ PRJOBID NO--Branch PRJOBID @H9A 09720000 * 09730000 LR @07,JSPAPTR Load JSPA address @H9A 09740000 AH @07,JSPALEN Add JSPA length @H9A 09750000 * 09760000 CLC JSPCESEG,XZERO Is SYSOUT segmented? @H9A 09770000 BE PRJOBID NO---Omit SEGMENT ID @H9A 09780000 * 09790000 MVC BOXSGLBL(13),LBSEGID Put SEGMENT ID label @H9A 09800000 L @14,JSPCESEG Load R14 SEGMENT# @H9A 09810000 * 09820000 CVD @14,DBLWORD Convert to pkd dec. @H9A 09830000 CP DBLWORD,PZERO Is SEGMENT# < 0? @H9A 09840000 BL INVSEG YES--put invalid SEG# @H9A 09850000 CP DBLWORD,MAXSEG# Is SEGMENT# > 99999? @H9A 09860000 BNH PRSEG# NO---put SEGMENT# @H9A 09870000 * 09880000 INVSEG MVC BOXSGINF(5),=C'*****' Set invalid SEGMENT# @H9A 09890000 B PRJOBID GO print this line @H9A 09900000 PRSEG# DS 0H 09910000 UNPK BOXSGINF,DBLWORD+5(3) Put SEGMENT# into box @H9A 09920000 OI BOXSGINF+4,X'F0' Insure positive sign @H9A 09930000 * 09940000 PRJOBID DS 0H 09950000 L @15,ECAPUTP CALL @H9A 09960000 BALR @14,@15 APSUPUT @H9A 09970000 DROP @07 @H9A 09980000 LTR RTNCODE,RTNCODE APSUPUT FAILED? @D2A 09990000 BNZ OUT EXIT @D2A 10000000 * 10010000 ********************************************************************** 10020000 * Build and print JOB NAME line * 10030000 ********************************************************************** 10040000 * 10050000 BAL @14,CLRLINE Clear printline @H9A 10060000 * 10070000 MVC BOXDESC,LBJOBNAM Put JOB NAME label @H9A 10080000 MVC BOXINFO(8),JSPAJBNM Put JOBNAME into box @H9A 10090000 * 10100000 L @15,ECAPUTP CALL @H9A 10110000 BALR @14,@15 APSUPUT @H9A 10120000 LTR RTNCODE,RTNCODE APSUPUT FAILED? @D2A 10130000 BNZ OUT EXIT @D2A 10140000 * 10150000 ********************************************************************** 10160000 * Build and print USER ID line * 10170000 ********************************************************************** 10180000 * 10190000 BAL @14,CLRLINE Clear printline @H9A 10200000 * 10210000 MVC BOXDESC,LBUSERID Put USER NAME label @H9A 10220000 * 10230000 USING JSPEXT,@07 Base JSPA extension @H9A 10240000 TM JSPAFLG1,JSPA1EXT Does JSPA ext. exist? @H9A 10250000 BZ PRUSRID NO--Branch PRUSRID @H9A 10260000 * 10270000 LR @07,JSPAPTR Load JSPA address @H9A 10280000 AH @07,JSPALEN Add JSPA length @H9A 10290000 * 10300000 MVC BOXINFO(8),JSPCEUID Put USER NAME @H9A 10310000 * 10320000 PRUSRID L @15,ECAPUTP CALL @H9A 10330000 BALR @14,@15 APSUPUT @H9A 10340000 DROP @07 @H9A 10350000 LTR RTNCODE,RTNCODE APSUPUT FAILED? @D2A 10360000 BNZ OUT EXIT @D2A 10370000 * 10380000 ********************************************************************** 10390000 * Build and print SYSOUT CLASS line * 10400000 ********************************************************************** 10410000 * 10420000 BAL @14,CLRLINE Clear printline @H9A 10430000 * 10440000 MVC BOXDESC,LBSYSCL Put SYSOUT CLASS lbl @H9A 10450000 MVC BOXINFO(1),JSPJSOCL Put SYSOUT CLASS @H9A 10460000 * 10470000 L @15,ECAPUTP CALL @H9A 10480000 BALR @14,@15 APSUPUT @H9A 10490000 LTR RTNCODE,RTNCODE APSUPUT FAILED? @D2A 10500000 BNZ OUT EXIT @D2A 10510000 * 10520000 ********************************************************************** 10530000 * Build and print OUTPUT GROUP line * 10540000 ********************************************************************** 10550000 * 10560000 BAL @14,CLRLINE Clear printline @H9A 10570000 * 10580000 MVC BOXDESC,LBOUTGRP Put OUTPUT GROUP lbl @H9A 10590000 MVC BOXJNAME(8),JSPJGRPN Put OUTPUT GRP NODE1 @H9A 10600000 * 10610000 MVI BOXGSEP1,C'.' Insert separator char @H9A 10620000 * 10630000 LH @00,JSPJGRP1 Get JOE ID1 @H9A 10640000 CVD @00,WRKJIDEC Convert to pkd decimal@H9A 10650000 UNPK BOXJID1,WRKJIDEC+5(3) Unpack NODE2 @H9A 10660000 OI BOXJZON1,X'F0' Insure positive sign @H9A 10670000 MVI BOXGSEP2,C'.' Insert separator char @H9A 10680000 * 10690000 LH @00,JSPJGRP2 Get JOE ID2 @H9A 10700000 CVD @00,WRKJIDEC Convert to pkd decimal@H9A 10710000 UNPK BOXJID2,WRKJIDEC+5(3) Unpack GRP NODE3 @H9A 10720000 OI BOXJZON2,X'F0' Insure positive sign @H9A 10730000 * 10740000 L @15,ECAPUTP CALL @H9A 10750000 BALR @14,@15 APSUPUT @H9A 10760000 LTR RTNCODE,RTNCODE APSUPUT FAILED? @D2A 10770000 BNZ OUT EXIT @D2A 10780000 * 10790000 * 10800000 ********************************************************************** 10810000 * Build and print TITLE line * 10820000 ********************************************************************** 10830000 * 10840000 BAL @14,CLRLINE Clear printline @H9A 10850000 * 10860000 MVC BOXDESC,LBTITLE Put TITLE label @H9A 10870000 * 10880000 USING SJTRKEYL,@02 Base KEYLIST @H9A 10890000 ICM @02,B'1111',WRKKYLST Load KEYLIST address @H9A 10900000 BZ PRTITLE Branch if NO KEYLIST @H9A 10910000 * 10920000 LA @02,KYLSTTL(,@02) Locate addr. of TITLE @H9A 10930000 * key in the KEYLIST @H9A 10940000 ICM @01,B'1111',SJTRTPAD Load TITLE TU address @H9A 10950000 BZ PRTITLE Branch if NO TITLE @H9A 10960000 * 10970000 LA @01,DOCNTENT-DOCNUNIT(,@01) Addr. of TEXT UNIT @H9A 10980000 BAL @08,MOVETU Get TITLE data @H9A 10990000 * from the TU 11000000 PRTITLE DS 0H 11010000 L @15,ECAPUTP CALL @H9A 11020000 BALR @14,@15 APSUPUT @H9A 11030000 * 11040000 DROP @02 Drop KEYLIST @H9A 11050000 LTR RTNCODE,RTNCODE APSUPUT FAILED? @D2A 11060000 BNZ OUT EXIT @D2A 11070000 * 11080000 ********************************************************************** 11090000 * Build and print a blank line * 11100000 * ( Frame characters in box cols 01 & 80 ) * 11110000 ********************************************************************** 11120000 * 11130000 BAL @14,CLRLINE Clear printline @H9A 11140000 L @15,ECAPUTP CALL @H9A 11150000 BALR @14,@15 APSUPUT @H9A 11160000 LTR RTNCODE,RTNCODE APSUPUT FAILED? @D2A 11170000 BNZ OUT EXIT @D2A 11180000 * 11190000 ********************************************************************** 11200000 * Build and print DESTINATION line * 11210000 ********************************************************************** 11220000 * 11230000 BAL @14,CLRLINE Clear printline @H9A 11240000 * 11250000 MVC BOXDESC,LBDEST Put DESTINATION label @H9A 11260000 MVC BOXINFO(8),JSPJGRPD Put DESTINATION @H9A 11270000 * 11280000 L @15,ECAPUTP CALL @H9A 11290000 BALR @14,@15 APSUPUT @H9A 11300000 LTR RTNCODE,RTNCODE APSUPUT FAILED? @D2A 11310000 BNZ OUT EXIT @D2A 11320000 * 11330000 ********************************************************************** 11340000 * Build and print NAME line * 11350000 ********************************************************************** 11360000 * 11370000 BAL @14,CLRLINE Clear printline @H9A 11380000 * 11390000 MVC BOXDESC,LBNAME Put NAME label @H9A 11400000 * 11410000 USING SJTRKEYL,@02 Base KEYLIST @H9A 11420000 ICM @02,B'1111',WRKKYLST Load KEYLIST Address @H9A 11430000 BZ NONAME Branch if no KEYLIST @H9A 11440000 * 11450000 LA @02,KYLSTNM(,@02) Locate Addr. of NAME @H9A 11460000 * key in the KEYLIST 11470000 ICM @01,B'1111',SJTRTPAD Load NAME TU address @H9A 11480000 BZ NONAME Branch if NO NAME @H9A 11490000 * 11500000 LA @01,DOCNTENT-DOCNUNIT(,@01) Addr of text unit @H9A 11510000 BAL @08,MOVETU Put NAME data from TU @H9A 11520000 B PRT_NAME Branch to PRT_NAME @H9A 11530000 * 11540000 DROP @02 Drop KEYLIST @H9A 11550000 * 11560000 NONAME DS 0H If name not in the JCL 11570000 * then use the name in 11580000 * the JSPA 11590000 MVC BOXINFO(L'JSPJPNAM),JSPJPNAM Set from JOB stmt @H9A 11600000 * 11610000 PRT_NAME DS 0H 11620000 L @15,ECAPUTP CALL @H9A 11630000 BALR @14,@15 APSUPUT @H9A 11640000 LTR RTNCODE,RTNCODE APSUPUT FAILED? @D2A 11650000 BNZ OUT EXIT @D2A 11660000 * 11670000 ********************************************************************** 11680000 * Build and print ROOM line * 11690000 ********************************************************************** 11700000 * 11710000 BAL @14,CLRLINE Clear printline @H9A 11720000 * 11730000 MVC BOXDESC,LBROOM Put ROOM label @H9A 11740000 * 11750000 USING SJTRKEYL,@02 Base KEYLIST @H9A 11760000 ICM @02,B'1111',WRKKYLST Load KEYLIST address @H9A 11770000 BZ NOROOM Branch if no KEYLIST @H9A 11780000 * 11790000 LA @02,KYLSTRM(,@02) Locate Addr of ROOM @H9A 11800000 * Key in the KEYLIST 11810000 ICM @01,B'1111',SJTRTPAD Load ROOM TU Address @H9A 11820000 BZ NOROOM Branch If no ROOM @H9A 11830000 * 11840000 LA @01,DOCNTENT-DOCNUNIT(,@01) Addr of TEXT UNIT @H9A 11850000 BAL @08,MOVETU Put ROOM data from TU @H9A 11860000 * 11870000 B PRT_ROOM Branch to PRTROOM @H9A 11880000 * 11890000 DROP @02 Drop KEYLIST @H9A 11900000 * 11910000 NOROOM DS 0H If room not in the JCL 11920000 * then use the room in 11930000 * the JSPA 11940000 MVC BOXINFO(L'JSPJRMNO),JSPJRMNO Set from JOB stmt @H9A 11950000 * 11960000 PRT_ROOM DS 0H 11970000 L @15,ECAPUTP CALL @H9A 11980000 BALR @14,@15 APSUPUT @H9A 11990000 LTR RTNCODE,RTNCODE APSUPUT FAILED? @D2A 12000000 BNZ OUT EXIT @D2A 12010000 * 12020000 ********************************************************************** 12030000 * Build and print BUILDING line * 12040000 ********************************************************************** 12050000 * 12060000 BAL @14,CLRLINE Clear printline @H9A 12070000 * 12080000 MVC BOXDESC,LBBLDG Put BLDG label @H9A 12090000 * 12100000 USING SJTRKEYL,@02 Base KEYLIST @H9A 12110000 ICM @02,B'1111',WRKKYLST Load KEYLIST address @H9A 12120000 BZ PRTBLDG Branch if no KEYLIST @H9A 12130000 * 12140000 LA @02,KYLSTBL(,@02) Locate addr of BLDG @H9A 12150000 ICM @01,B'1111',SJTRTPAD Load BLDG TU Address @H9A 12160000 BZ PRTBLDG Branch if no BUILDING @H9A 12170000 * 12180000 LA @01,DOCNTENT-DOCNUNIT(,@01) Addr of TEXT UNIT @H9A 12190000 BAL @08,MOVETU Put BLDG data from TU @H9A 12200000 * 12210000 PRTBLDG DS 0H 12220000 L @15,ECAPUTP CALL @H9A 12230000 BALR @14,@15 APSUPUT @H9A 12240000 * 12250000 DROP @02 Drop KEYLIST @H9A 12260000 LTR RTNCODE,RTNCODE APSUPUT FAILED? @D2A 12270000 BNZ OUT EXIT @D2A 12280000 * 12290000 ********************************************************************** 12300000 * Build and print DEPARTMENT line * 12310000 ********************************************************************** 12320000 * 12330000 BAL @14,CLRLINE Clear printline @H9A 12340000 * 12350000 MVC BOXDESC,LBDEPT Put DEPT label @H9A 12360000 * 12370000 USING SJTRKEYL,@02 Base KEYLIST @H9A 12380000 ICM @02,B'1111',WRKKYLST Load KEYLIST address @H9A 12390000 BZ PRTDEPT Branch if no KEYLIST @H9A 12400000 * 12410000 LA @02,KYLSTDP(,@02) Locate addr of DEPT @H9A 12420000 ICM @01,B'1111',SJTRTPAD Load DEPT TU address @H9A 12430000 BZ PRTDEPT Branch if no DEPT @H9A 12440000 * 12450000 LA @01,DOCNTENT-DOCNUNIT(,@01) Addr of TEXT UNIT @H9A 12460000 BAL @08,MOVETU Put DEPT data from TU @H9A 12470000 * 12480000 PRTDEPT DS 0H 12490000 L @15,ECAPUTP CALL @H9A 12500000 BALR @14,@15 APSUPUT @H9A 12510000 * 12520000 DROP @02 Drop KEYLIST @H9A 12530000 LTR RTNCODE,RTNCODE APSUPUT FAILED? @D2A 12540000 BNZ OUT EXIT @D2A 12550000 * 12560000 ********************************************************************** 12570000 * * 12580000 * BUILD AND PRINT ADDRESS LINES * 12590000 * ----------------------------- * 12600000 * The address can be from 1 to 4 lines long. Any lines * 12610000 * that are unused must be printed as blank lines, but the * 12620000 * label "ADDRESS:" must appear on the first line even if * 12630000 * no address was specified on the OUTPUT JCL. * 12640000 * * 12650000 * A blank line is printed after the four ADDRESS lines. * 12660000 * * 12670000 * If the SWBTUREQ macro returned an error, the ADDRESS * 12680000 * line is not printed. An error message is printed * 12690000 * in the four lines that would have contained the ADDRESS. * 12700000 * * 12710000 ********************************************************************** 12720000 * 12730000 BAL @14,CLRLINE Clear printline @H9A 12740000 * 12750000 MVC WRKADNUM(2),XZERO Zero number of lines @H9A 12760000 * 12770000 CLI SWBERR,C'Y' SWBTUREQ error? @H9A 12780000 BNE ADDRLBL NO - GO print @H9A 12790000 * ADDR label 12800000 * 12810000 * 12820000 ********************************************************************** 12830000 * Print the SWBTUREQ error msg * 12840000 ********************************************************************** 12850000 * 12860000 MVC BOXMSG1(40),LBMSG Set error msg text @H9A 12870000 * 12880000 L @15,ECAPUTP CALL @H9A 12890000 BALR @14,@15 APSUPUT @H9A 12900000 LTR RTNCODE,RTNCODE APSUPUT FAILED? @D2A 12910000 BNZ OUT EXIT @D2A 12920000 * 12930000 BAL @14,CLRLINE Clear printline @H9A 12940000 * 12950000 MVC BOXRCLB,LBRC Set RETURN CODE label @H9A 12960000 MVC BOXRC(4),SWBRC Set SWBTUREQ @H9A 12970000 * return code 12980000 * 12990000 L @15,ECAPUTP CALL @H9A 13000000 BALR @14,@15 APSUPUT @H9A 13010000 LTR RTNCODE,RTNCODE APSUPUT FAILED? @D2A 13020000 BNZ OUT EXIT @D2A 13030000 * 13040000 BAL @14,CLRLINE Clear printline @H9A 13050000 * 13060000 MVC BOXRSLB,LBRS Set REASON CODE label @H9A 13070000 MVC BOXRS(4),SWBRS Set SWBTUREQ @H9A 13080000 * reason code 13090000 * 13100000 L @15,ECAPUTP CALL @H9A 13110000 BALR @14,@15 APSUPUT @H9A 13120000 LTR RTNCODE,RTNCODE APSUPUT FAILED? @D2A 13130000 BNZ OUT EXIT @D2A 13140000 * 13150000 BAL @14,CLRLINE Clear printline @H9A 13160000 * 13170000 MVC WRKADNUM(2),THREE Set the number of @H9A 13180000 * ADDRESS lines used @H9A 13190000 * 13200000 B NOADDR GO to NOADDR to print @H9A 13210000 * the remaining lines 13220000 * as blank lines 13230000 ********************************************************************** 13240000 * Print the ADDRESS label * 13250000 ********************************************************************** 13260000 * 13270000 ADDRLBL MVC BOXDESC,LBADDR Put ADDRESS label @H9A 13280000 * 13290000 USING SJTRKEYL,@02 Base KEYLIST @H9A 13300000 ICM @02,B'1111',WRKKYLST Load KEYLIST address @H9A 13310000 BZ NOADDR Branch if no KEYLIST @H9A 13320000 * 13330000 LA @02,KYLSTAD(,@02) Locate addr of ADDR @H9A 13340000 * Key in the KEYLIST 13350000 ICM @01,B'1111',SJTRTPAD Load ADDR TU address @H9A 13360000 BZ NOADDR Branch if no ADDRESS @H9A 13370000 * 13380000 LH @07,DOCNTNUM-DOCNUNIT(,@01) Number of lines used @H9A 13390000 * for ADDRESS info 13400000 CL @07,FOUR Is number > 4 ? @H9A 13410000 BNH SAVENUML NO---Save number of @H9A 13420000 * lines 13430000 LA @07,4 YES---Set to MAX of 4 @H9A 13440000 * 13450000 SAVENUML DS 0H 13460000 STH @07,WRKADNUM Save number of lines @H9A 13470000 LTR @07,@07 Number > zero? @H9A 13480000 BZ NOADDR NO---print blank @H9A 13490000 * lines 13500000 * 13510000 DROP @02 Drop KEYLIST @H9A 13520000 * 13530000 ********************************************************************** 13540000 * LOOP to Build/Print Multiple Line ADDRESS * 13550000 ********************************************************************** 13560000 * 13570000 LA @01,DOCNTENT-DOCNUNIT(,@01) Addr of TEXT UNIT @H9A 13580000 USING DOCNTFLD,@01 @H9A 13590000 * 13600000 ADDRLOOP DS 0H 13610000 LR @06,@01 Save the TU address @H9A 13620000 BAL @08,MOVETU Put ADDR data from TU @H9A 13630000 * 13640000 L @15,ECAPUTP CALL @H9A 13650000 BALR @14,@15 APSUPUT @H9A 13660000 LTR RTNCODE,RTNCODE APSUPUT FAILED? @D2A 13670000 BNZ OUT EXIT @D2A 13680000 * 13690000 LR @01,@06 Restore TU address @H9A 13700000 LH @15,DOCNTLEN Bump down to next @H9A 13710000 LA @01,L'DOCNTLEN(@15,@01) ADDRESS length/data @H9A 13720000 * pair 13730000 * 13740000 BAL @14,CLRLINE Clear printline @H9A 13750000 * 13760000 BCT @07,ADDRLOOP Loop again if more @H9A 13770000 * data 13780000 DROP @01 Drop addressability @H9A 13790000 * 13800000 ********************************************************************** 13810000 * LOOP to Build/Print Multiple Blank ADDRESS Lines * 13820000 ********************************************************************** 13830000 * 13840000 NOADDR DS 0H 13850000 LA @06,4 Load MAX # of lines @H9A 13860000 LH @07,WRKADNUM Restore # of address @H9A 13870000 * lines used 13880000 SR @06,@07 Find number unused @H9A 13890000 * lines 13900000 LA @06,1(,@06) Add 1 for extra blank @H9A 13910000 * line 13920000 * 13930000 BLKLINE DS 0H 13940000 L @15,ECAPUTP CALL @H9A 13950000 BALR @14,@15 APSUPUT @H9A 13960000 LTR RTNCODE,RTNCODE APSUPUT FAILED? @D2A 13970000 BNZ OUT EXIT @D2A 13980000 * 13990000 BAL @14,CLRLINE Clear printline @H9A 14000000 BCT @06,BLKLINE LOOP if more to print @H9A 14010000 * 14020000 ********************************************************************** 14030000 * Build and print TIME line * 14040000 ********************************************************************** 14050000 * 14060000 BAL @14,CLRLINE Clear printline @H9A 14070000 * 14080000 MVC BOXDESC,LBPRTIME Put PRINT TIME label @H9A 14090000 * 14100000 CLC WRKHR(1),BLANK If hour has leading @H9A 14110000 * blank 14120000 BNE HROKAY NO - then branch @H9A 14130000 MVI WRKHR,X'F0' Change blank to zero @H9A 14140000 HROKAY MVC BOXHR(2),WRKHR Set current hour @H9A 14150000 MVI BOXTS1,X'7A' Set time separator @H9A 14160000 * 14170000 MVC BOXMIN(2),WRKMIN Set current minute @H9A 14180000 MVI BOXTS2,X'7A' Set time separator @H9A 14190000 * 14200000 MVC BOXSEC(2),WRKSEC Set current second @H9A 14210000 * 14220000 MVC BOXAMPM(2),WRKAMPM Set current AM/PM @H9A 14230000 * 14240000 L @15,ECAPUTP CALL @H9A 14250000 BALR @14,@15 APSUPUT @H9A 14260000 LTR RTNCODE,RTNCODE APSUPUT FAILED? @D2A 14270000 BNZ OUT EXIT @D2A 14280000 * 14290000 ********************************************************************** 14300000 * Build and print DATE line * 14310000 ********************************************************************** 14320000 * 14330000 BAL @14,CLRLINE Clear printline @H9A 14340000 * 14350000 MVC BOXDESC,LBPRDATE Put PRINT DATE label @H9A 14360000 * 14370000 MVC BOXDDD(2),WRKDD Set print DAY @H9A 14380000 MVC BOXMMM(3),WRKMMM Set print MONTH @H9A 14390000 MVC BOXCEN(2),WRKCEN Set print CENTURY @01A 14400000 MVC BOXYYY(2),WRKYY Set print YEAR @H9A 14410000 * 14420000 L @15,ECAPUTP CALL @H9A 14430000 BALR @14,@15 APSUPUT @H9A 14440000 LTR RTNCODE,RTNCODE APSUPUT FAILED? @D2A 14450000 BNZ OUT EXIT @D2A 14460000 * 14470000 ********************************************************************** 14480000 * Build and print PRINTER NAME line * 14490000 ********************************************************************** 14500000 * 14510000 BAL @14,CLRLINE Clear printline @H9A 14520000 * 14530000 MVC BOXDESC,LBPRNAME Put PRINTER NAME lbl @H9A 14540000 MVC BOXINFO(8),JSPADEVN Put device NAME @H9A 14550000 * 14560000 L @15,ECAPUTP CALL @H9A 14570000 BALR @14,@15 APSUPUT @H9A 14580000 LTR RTNCODE,RTNCODE APSUPUT FAILED? @D2A 14590000 BNZ OUT EXIT @D2A 14600000 * 14610000 ********************************************************************** 14620000 * Build and print SYSTEM NAME line * 14630000 ********************************************************************** 14640000 * 14650000 USING JMR,@07 Base JMR @H9A 14660000 L @07,JSPAJMR Load address of JMR @H9A 14670000 * 14680000 BAL @14,CLRLINE Clear printline @H9A 14690000 * 14700000 MVC BOXDESC,LBSYSTEM Put SYSTEM label @H9A 14710000 MVC BOXINFO(4),JMRCPUID Put SYSTEM ID @H9A 14720000 ********************************************************************** 14730000 * When running in an MAS environment and you want the system ID 14740000 * of the system on which the job was printed, uncomment the 14750000 * following 3 lines, compile, and linkedit the exit. @DYA 14760000 ********************************************************************** 14770000 * L @02,CVTPTR LOCATE @DYA 14780000 * L @02,CVTSMCA-CVT(,@02) SMCA @DYA 14790000 * MVC BOXINFO(4),SMCASID-SMCABASE(@02) USE SMF ID @DYA 14800000 * 14810000 L @15,ECAPUTP CALL @H9A 14820000 BALR @14,@15 APSUPUT @H9A 14830000 * 14840000 DROP @07 Drop Adress. to JMR @H9A 14850000 LTR RTNCODE,RTNCODE APSUPUT FAILED? @D2A 14860000 BNZ OUT EXIT @D2A 14870000 * 14880000 ********************************************************************** 14890000 * Build and print 2 blank lines * 14900000 * ( Frame characters in box cols 01 & 80 ) * 14910000 ********************************************************************** 14920000 * 14930000 LA @06,2 LOAD Reg6 with 2 @H9A 14940000 BOTBLNKS DS 0H 14950000 BAL @14,CLRLINE Clear printline @H9A 14960000 * 14970000 L @15,ECAPUTP CALL @H9A 14980000 BALR @14,@15 APSUPUT @H9A 14990000 LTR RTNCODE,RTNCODE APSUPUT FAILED? @D2A 15000000 BNZ OUT EXIT @D2A 15010000 * 15020000 BCT @06,BOTBLNKS Build & print 2 lines @H9A 15030000 * 15040000 ********************************************************************** 15050000 * Build and print bottom line * 15060000 ********************************************************************** 15070000 * 15080000 BAL @14,CLRLINE Clear printline @H9A 15090000 * 15100000 MVC BOXLINE(10),ENDTAG Move in END tag @H9A 15110000 MVC BOXLINE+10(L'BOXLINE-10),BOXLINE Propogate chars @H9A 15120000 * 15130000 L @15,ECAPUTP CALL @H9A 15140000 BALR @14,@15 APSUPUT @H9A 15150000 * 15160000 B OUT Return to PSF @H9A 15170000 * 15180000 ********************************************************************** 15190000 * END OF BUILDBOX 15200000 ********************************************************************** 15210000 * 15220000 EJECT 15230000 * 15240000 * 15250000 *********************************************************************** 15260000 * * 15270000 * CLRLINE - Clears the separator page line and * 15280000 * inserts the box frame characters. * 15290000 * * 15300000 * FUNCTION: * 15310000 * * 15320000 * This subroutine is called to clear the separator * 15330000 * page line. This is necessary so as to avoid * 15340000 * printing detail box information left over from * 15350000 * previous processing with the current line. * 15360000 * * 15370000 * LINKAGE: * 15380000 * * 15390000 * Accessed via BAL using the label as the entry address * 15400000 * and register 14 as the return address. * 15410000 * * 15420000 * INPUT: * 15430000 * The separator page line/box buffer ( WRKBUF). * 15440000 * * 15450000 * OUTPUT: * 15460000 * The separator page line is cleared and the frame * 15470000 * characters inserted in columns 1 and 80 of the * 15480000 * detail box. * 15490000 * * 15500000 * ECARECAD - Address of the separator page line * 15510000 * ECARECLN - Length of the separator page line * 15520000 * * 15530000 * REGISTER USAGE: * 15540000 * * 15550000 * REG VALUE ON ENTRY VALUE ON EXIT * 15560000 * * 15570000 * R1-R7 N/A Unchanged * 15580000 * R8 N/A Destroyed * 15590000 * R9-R13 N/A Unchanged * 15600000 * R14 Return address Unchanged * 15610000 * R15 N/A Unchanged * 15620000 * * 15630000 * RETURN CODES: * 15640000 * * 15650000 * None * 15660000 * * 15670000 * OTHER CONSIDERATIONS: * 15680000 * * 15690000 * None * 15700000 * * 15710000 *********************************************************************** 15720000 * 15730000 CLRLINE DS 0H 15740000 MVI WRKCC,X'09' Set CC to write @H9A 15750000 * 1 line 15760000 * 15770000 MVI PAGELINE,C' ' Clear 1st printline @H9A 15780000 * char 15790000 MVC PAGELINE+1(L'PAGELINE-1),PAGELINE Propogate @H9A 15800000 * spaces 15810000 * 15820000 MVI BOXCOL1,C'*' Insert box @H9A 15830000 MVI BOXCOL80,C'*' frame character @H9A 15840000 LA @08,BUFWRK Get record @H9A 15850000 ST @08,ECARECAD address @H9A 15860000 MVC ECARECLN(4),ESSLLEN Get length of record @H9A 15870000 BR @14 Return to caller @H9A 15880000 EJECT 15890000 * 15900000 *********************************************************************** 15910000 * * 15920000 * MOVETU - Move the TU text from the TU output area to the * 15930000 * detail line DSECT. * 15940000 * * 15950000 * FUNCTION: * 15960000 * * 15970000 * This subroutine is called to move the TU text from the * 15980000 * TU output area to the detail line DSECT area. Since * 15990000 * TUs are variable length (up to sixty characters long), * 16000000 * the detail line is padded with blanks on the right after * 16010000 * the move is performed. * 16020000 * * 16030000 * LINKAGE: * 16040000 * * 16050000 * Accessed via BAL using the label as the entry address * 16060000 * and register 8 as the return address. * 16070000 * * 16080000 * INPUT: * 16090000 * R1 - Address of TU length/parameter pair * 16100000 * * 16110000 * OUTPUT: * 16120000 * The text from the TU parameter is copied into the * 16130000 * detail line DSECT area ( BOXINFO ). * 16140000 * * 16150000 * REGISTER USAGE: * 16160000 * * 16170000 * REG VALUE ON ENTRY VALUE ON EXIT * 16180000 * * 16190000 * R0 N/A Destroyed * 16200000 * R1 Length/Parameter Pair Destroyed * 16210000 * R2-R7 N/A Unchanged * 16220000 * R8 Return Address Unchanged * 16230000 * R9-R13 N/A Unchanged * 16240000 * R14-R15 N/A Destroyed * 16250000 * * 16260000 * RETURN CODES: * 16270000 * * 16280000 * None * 16290000 * * 16300000 * OTHER CONSIDERATIONS: * 16310000 * * 16320000 * None * 16330000 * * 16340000 *********************************************************************** 16350000 * 16360000 USING DOCNTFLD,@01 @H9A 16370000 MOVETU LA @14,DOCNTPRM Load TU text address @H9A 16380000 LH @15,DOCNTLEN Length of TU text @H9A 16390000 ICM @15,B'1000',BLANKS Set pad char to blank @H9A 16400000 * 16410000 LA @00,BOXINFO Set up the @H9A 16420000 LA @01,L'BOXINFO receiving field @H9A 16430000 * 16440000 MVCL @00,@14 Move the text @H9A 16450000 * 16460000 BR @08 Return to caller @H9A 16470000 DROP @01 @H9A 16480000 * 16490000 .NOESS03 ANOP @H9A 16500000 * 16510000 PSIZE EQU ((*-APSUX02+99)/100)*5 PATCH AREA SIZE 16520000 DC C'PATCH AREA - APSUX02 88.XXX' 16530000 PSPACE DC 25S(*) PATCH AREA 16540000 ORG PSPACE 16550000 DC ((PSIZE+1)/2)S(*) 16560000 ORG , 16570000 * 16580000 ********************************************************************** 16590000 * MISC CONSTANTS 16600000 ********************************************************************** 16610000 * 16620000 XZERO DC F'0' @H9A 16630000 ONE DC F'1' 16640000 TWO DC F'2' 16650000 THREE DC F'3' 16660000 FOUR DC F'4' @H9A 16670000 TWELVE DC F'12' 16680000 SIXTEEN DC F'16' 16690000 NINETEEN DC F'19' @01A 16700000 LINELGTH DC F'127' 16710000 ESSLLEN DC F'133' @H9A 16720000 ZEROES DC X'000000000000' 16730000 BLANK DC X'40' 16740000 BLANKS DC CL8' ' 16750000 END DC CL5'END ' 16760000 LOCALPR DC CL5'LOCAL' 16770000 ROOM DC CL4'ROOM' 16780000 AM DC CL2'AM' 16790000 ENDTAG DC CL10'**END*****' @H9A 16800000 MAXSEG# DC PL8'99999' @H9A 16810000 PZERO DC PL8'00000' @H9A 16820000 * 16830000 *********************************************************************** 16840000 * All labels that will appear in the detail box are listed * 16850000 * below. * 16860000 *********************************************************************** 16870000 * 16880000 LBJOBID DC CL(L'BOXDESC)'JOBID:' @H9A 16890000 LBSEGID DC CL(L'BOXDESC)'SEGMENT ID:' @H9A 16900000 LBJOBNAM DC CL(L'BOXDESC)'JOB NAME:' @H9A 16910000 LBUSERID DC CL(L'BOXDESC)'USERID:' @H9A 16920000 LBSYSCL DC CL(L'BOXDESC)'SYSOUT CLASS:' @H9A 16930000 LBOUTGRP DC CL(L'BOXDESC)'OUTPUT GROUP:' @H9A 16940000 LBTITLE DC CL(L'BOXDESC)'TITLE:' @H9A 16950000 LBDEST DC CL(L'BOXDESC)'DESTINATION:' @H9A 16960000 LBNAME DC CL(L'BOXDESC)'NAME:' @H9A 16970000 LBROOM DC CL(L'BOXDESC)'ROOM:' @H9A 16980000 LBBLDG DC CL(L'BOXDESC)'BUILDING:' @H9A 16990000 LBDEPT DC CL(L'BOXDESC)'DEPARTMENT:' @H9A 17000000 LBADDR DC CL(L'BOXDESC)'ADDRESS:' @H9A 17010000 LBPRTIME DC CL(L'BOXDESC)'PRINT TIME:' @H9A 17020000 LBPRDATE DC CL(L'BOXDESC)'PRINT DATE:' @H9A 17030000 LBPRNAME DC CL(L'BOXDESC)'PRINTER:' @H9A 17040000 LBSYSTEM DC CL(L'BOXDESC)'SYSTEM ID:' @H9A 17050000 * 17060000 LBMSG DC CL(L'BOXMSG)'EXIT ERROR -- SWBTUREQ MACRO FAILED' 17070000 * @H9A 17080000 LBRC DC CL(L'BOXRCLB)'RETURN CODE:' @H9A 17090000 LBRS DC CL(L'BOXRSLB)'REASON CODE:' @H9A 17100000 * 17110000 ********************************************************************** 17120000 * 17130000 * Conditional assembly check for ESS 17140000 * 17150000 * The code between the AIF and the label .NOESS04 will be 17160000 * suppressed if SYSPARM is NULL. 17170000 * 17180000 ********************************************************************** 17190000 * 17200000 AIF ('&SYSPARM' EQ '').NOESS04 Branch - ESS not supp @H9A 17210000 * 17220000 ********************************************************************** 17230000 * Key list equates * 17240000 ********************************************************************** 17250000 * 17260000 KYLSTTL EQU 0*SJTRKLEN Title key @H9A 17270000 KYLSTNM EQU 1*SJTRKLEN Name key @H9A 17280000 KYLSTRM EQU 2*SJTRKLEN Room key @H9A 17290000 KYLSTBL EQU 3*SJTRKLEN Building key @H9A 17300000 KYLSTDP EQU 4*SJTRKLEN Dept key @H9A 17310000 KYLSTAD EQU 5*SJTRKLEN Address key @H9A 17320000 * 17330000 ********************************************************************** 17340000 * 17350000 .NOESS04 ANOP @H9A 17360000 * 17370000 ********************************************************************** 17380000 * EQUATES FOR REGISTERS 0-15 17390000 ********************************************************************** 17400000 * 17410000 @00 EQU 00 17420000 @01 EQU 01 17430000 @02 EQU 02 17440000 @03 EQU 03 17450000 @04 EQU 04 17460000 @05 EQU 05 17470000 @06 EQU 06 17480000 @07 EQU 07 17490000 @08 EQU 08 17500000 @09 EQU 09 17510000 @10 EQU 10 17520000 @11 EQU 11 17530000 @12 EQU 12 17540000 @13 EQU 13 17550000 @14 EQU 14 17560000 @15 EQU 15 17570000 * 17580000 ********************************************************************** 17590000 * POINTER REGISTERS AND ROUTINES 17600000 ********************************************************************** 17610000 * 17620000 PUTPTR EQU @10 APSUPUT POINTER 17630000 WRKPTR EQU @02 WORK AREA POINTER 17640000 AMPMPTR EQU @03 POINTER TO AM/PM PRINT AREA 17650000 XTPPTR EQU @04 APSGEXTP POINTER 17660000 ECAPTR EQU @05 APSUECA POINTER 17670000 JMRPTR EQU @07 JMR POINTER 17680000 ECAWKPTR EQU @09 ECA WORK BUFFER POINTER 17690000 JSPAPTR EQU @11 JSPA POINTER 17700000 RTNCODE EQU @15 RETURN CODE 17710000 BLKPTR EQU ECABLKP APSUBLK POINTER 17720000 APSUPUT EQU 0 17730000 APSUBLK EQU 0 17740000 BUFPRI EQU 0 17750000 PRINTCC EQU BUFPRI 17760000 DAYTBL EQU 0 17770000 * 17780000 ********************************************************************** 17790000 * APSUECA WORK BUFFER 17800000 ********************************************************************** 17810000 * 17820000 BUFWRK DSECT 17830000 WRKCC DS CL1 CARRIAGE CONTROL 17840000 WRKDATA DS CL132 DATA LINE 17850000 WRKARORG DS 0CL1 Work Area ORG @H9A 17860000 * 17870000 ********************************************************************** 17880000 * INFORMATION PRINT LINE (Original Trailer Sheet) 17890000 ********************************************************************** 17900000 * 17910000 BUFPRT EQU WRKDATA 17920000 ORG WRKDATA 17930000 PRTFRAME DS CL1 FRAME '*' 17940000 PRTFORM DS CL5 END 17950000 DS CL1 SPACE 17960000 PRTNUM DS CL8 JOB NUMBER 17970000 DS CL1 SPACE 17980000 PRTNAME DS CL8 JOB NAME 17990000 DS CL1 SPACE 18000000 PRTJNAME DS CL8 JOE NAME 18010000 DS CL1 SPACE 18020000 PRTJID1 DS CL3 JOE ID1 18030000 DS CL1 SPACE 18040000 PRTJID2 DS CL3 JOE ID2 18050000 DS CL1 SPACE 18060000 PRTJROUT DS CL8 JOE ROUTE CODE 18070000 DS CL1 SPACE 18080000 PRTPNAME DS CL20 PROGRAMMER NAME 18090000 DS CL1 SPACE 18100000 PRTRKEY DS CL4 'ROOM' 18110000 DS CL1 SPACE 18120000 PRTROOM DS CL4 ROOM NUMBER 18130000 DS CL1 SPACE 18140000 PRTTIME DS CL8 PRINT TIME 18150000 ORG PRTTIME 18160000 PRTHR DS CL2 HOUR 18170000 PRTTS1 DS CL1 SEPARATOR 18180000 PRTMIN DS CL2 MINUTE 18190000 PRTTS2 DS CL1 SEPARATOR 18200000 PRTSEC DS CL2 SECOND 18210000 DS CL1 SPACE 18220000 PRTAMPM DS CL2 AM/PM 18230000 DS CL1 SPACE 18240000 PRTDATE DS CL11 PRINT DATE @01C 18250000 ORG PRTDATE 18260000 PRTDD DS CL2 DAY 18270000 DS CL1 SPACE 18280000 PRTMMM DS CL3 MONTH 18290000 DS CL1 SPACE 18300000 PRTCEN DS CL2 CENTURY @01A 18310000 PRTYY DS CL2 YEAR 18320000 DS CL1 SPACE 18330000 PRTDNAME DS CL8 DEVICE NAME 18340000 DS CL1 SPACE 18350000 PRTSYS DS CL4 SYSTEM NAME 18360000 DS CL1 SPACE 18370000 * deleted 2 lines @01D 18380000 PRTCLASX DS CL1 CLASS 18390000 DS CL5 SPACES @01C 18400000 * 18410000 ********************************************************************** 18420000 * WORK AREA 18430000 ********************************************************************** 18440000 * 18450000 BUFBLK EQU WRKDATA 18460000 SHORTLIN EQU WRKDATA 18470000 PRINTPOS EQU SHORTLIN 18480000 INDEX EQU ECAGWRK 18490000 * 18500000 ********************************************************************** 18510000 * Begin separator page line & detail box mapping (ESS) * 18520000 ********************************************************************** 18530000 * 18540000 ORG WRKDATA Separator page line & @H9A 18550000 * detail box 18560000 PAGELINE DS 0CL132 @H9A 18570000 DS CL26 Left margin @H9A 18580000 * 18590000 BOXLINE DS 0CL80 @H9A 18600000 * COL DESCRIPTION 18610000 * (relative) 18620000 BOXCOL1 DS CL1 1 Frame Character @H9A 18630000 DS CL1 2 Blank @H9A 18640000 BOXDESC DS CL13 3-15 Line Description @H9A 18650000 DS CL2 16-17 Blanks @H9A 18660000 BOXINFO DS CL60 18-77 Line Information @H9A 18670000 DS CL2 78-79 Blanks @H9A 18680000 BOXCOL80 DS CL1 80 Frame Character @H9A 18690000 DS CL26 Right margin @H9A 18700000 * 18710000 ORG BOXLINE+39 Segment area @H9A 18720000 BOXSGLBL DS C'SEGMENT ID: ' 40-52 Segment ID label @H9A 18730000 BOXSGINF DS CL5 53-57 Segment ID Numb. @H9A 18740000 * 18750000 ORG BOXINFO Output Group area @H9A 18760000 BOXJNAME DS CL8 18-25 JOE name @H9A 18770000 BOXGSEP1 DS CL1 26 Group separator @H9A 18780000 BOXJID1 DS 0CL5 27-31 JOE ID 1 @H9A 18790000 DS CL4 27-30 @H9A 18800000 BOXJZON1 DS CL1 31 Byte field for MVZ 18810000 * @H9A 18820000 BOXGSEP2 DS CL1 32 Group separator @H9A 18830000 BOXJID2 DS 0CL5 33-37 JOE ID 2 @H9A 18840000 DS CL4 33-36 @H9A 18850000 BOXJZON2 DS CL1 37 Byte field for MVZ 18860000 * @H9A 18870000 * 18880000 ORG BOXINFO Print Time Area @H9A 18890000 BOXTIME DS 0CL11 18-28 @H9A 18900000 BOXHR DS CL2 18-19 Print Hour @H9A 18910000 BOXTS1 DS CL1 20 Separator @H9A 18920000 BOXMIN DS CL2 21-22 Print Minute @H9A 18930000 BOXTS2 DS CL1 23 Separator @H9A 18940000 BOXSEC DS CL2 24-25 Print Second @H9A 18950000 DS CL1 26 @H9A 18960000 BOXAMPM DS CL2 27-28 AM / PM @H9A 18970000 * 18980000 ORG BOXINFO Print Date Area @H9A 18990000 BOXDATE DS 0CL11 18-28 Printing Date @01C 19000000 BOXDDD DS CL2 18-19 Printing Day @H9A 19010000 DS CL1 20 @H9A 19020000 BOXMMM DS CL3 21-23 Printing Month @H9A 19030000 DS CL1 24 @H9A 19040000 BOXCEN DS CL2 25-26 Printing Century @01A 19050000 BOXYYY DS CL2 27-28 Printing Year @01C 19060000 * 19070000 ORG BOXINFO SWBTUREQ Error Msg Area @H9A 19080000 BOXMSG DS 0CL40 18-57 @H9A 19090000 BOXMSG1 DS CL40 18-57 Static msg text @H9A 19100000 ORG BOXINFO @H9A 19110000 BOXRCLB DS CL12 18-29 RETURN CDE label @H9A 19120000 DS CL1 30 19130000 BOXRC DS CL4 31-34 SWBTUREQ @H9A 19140000 * return code 19150000 ORG BOXINFO @H9A 19160000 BOXRSLB DS CL12 18-29 REASON CDE label @H9A 19170000 DS CL1 30 @H9A 19180000 BOXRS DS CL4 31-34 SWBTUREQ @H9A 19190000 * reason code 19200000 * 19210000 ********************************************************************** 19220000 * End separator page line & detail box mapping 19230000 ********************************************************************** 19240000 * 19250000 * 19260000 ********************************************************************** 19270000 * Work Areas (Both Original & ESS Trailer Sheets) 19280000 ********************************************************************** 19290000 * 19300000 WRKAREAS EQU WRKARORG @H9A 19310000 ORG WRKARORG @H9A 19320000 DS 0F @H9A 19330000 WRKDATE DS CL4 CURRENT DATE - PACKED 19340000 WRKTIME DS CL4 CURRENT TIME - PACKED 19350000 ORG WRKTIME 19360000 DS CL3 HOURS MINUTES SECONDS 19370000 WRKTH DS CL1 TENTHS AND HUNDREDTHS 19380000 WRKUDATE DS CL10 CURRENT DATE-UNPACKED @01C 19390000 ORG WRKUDATE 19400000 WRKMMM DS CL3 MONTH 19410000 WRKDD DS CL2 DAY 19420000 WRKCEN DS CL2 CENTURY @01A 19430000 WRKYY DS CL2 YEAR 19440000 DS CL1 RESERVED 19450000 WRKAMPM DS CL2 CURRENT AM/PM @H9A 19460000 WRKUTIME DS CL7 CURRENT TIME - UNPACKED 19470000 ORG WRKUTIME 19480000 WRKHR DS CL2 HOUR 19490000 WRKMIN DS CL2 MINUTE 19500000 WRKSEC DS CL2 SECOND 19510000 DS CL1 SIGN BYTE 19520000 DS CL1 RESERVED 19530000 WRKED DS CL3 EDIT PATTERN @01A 19540000 DS CL1 RESERVED @01A 19550000 WRKJID1 DS F WORK AREA FOR JOE ID 1 19560000 WRKJID2 DS F WORK AREA FOR JOE ID 2 19570000 WCEN DS F WORK AREA FOR CENTURY @01A 19580000 DS 0D ALIGNMENT @H9A 19590000 WRKJIDEC DS CL8 WORK AREA JOE ID TO DECIMAL 19600000 WRKJID1Z DS CL8 WORK AREA JOE ID 1 TO ZONED 19610000 WRKJID2Z DS CL8 WORK AREA JOE ID 2 TO ZONED 19620000 WRKWORK DS CL8 WORK AREA FOR CONVERSION 19630000 WRKJTBL DS CL48 JULIAN CONVERSION TABLE 19640000 * 19650000 ********************************************************************** 19660000 * SWBTUREQ DECLARES 19670000 ********************************************************************** 19680000 * 19690000 DS 0F 19700000 WRKJSPE@ DS F Pointer to JSPA Extension 19710000 WRKADNUM DS H Number of ADDRESS @H9A 19720000 * lines 19730000 WRKPLPTR DS F Address of SWBTUREQ @H9A 19740000 * parm list 19750000 WRKKYLST DS F Keylist address @H9A 19760000 * (SJTRKEYL) 19770000 * 19780000 FULLWORD DS F Full word work area @H9A 19790000 DBLWORD DS D Double word work area @H9A 19800000 * 19810000 SWBRC DS F SWBTUREQ return code @H9A 19820000 SWBRS DS F SWBTUREQ reason code @H9A 19830000 SWBERR DS CL1 SWBTUREQ error = "Y" @H9A 19840000 * 19850000 DS 0F 19860000 KEYLIST DS CL64 SJTRKEYL Area @H9A 19870000 SBTLAREA DS CL16 SJTRSBTL Area @H9A 19880000 SWBTUWS DS CL1024 SWBTUREQ Work Area @H9A 19890000 * 19900000 ********************************************************************** 19910000 * 19920000 * Conditional assembly check for ESS 19930000 * 19940000 * The code between the AIF and the label .NOESS05 will be 19950000 * suppressed if SYSPARM is NULL. 19960000 * 19970000 ********************************************************************** 19980000 * 19990000 AIF ('&SYSPARM' EQ '').NOESS05 Branch - ESS not supp @H9A 20000000 * 20010000 ********************************************************************** 20020000 * 20030000 ********************************************************************** 20040000 * 20050000 * Even though the SWBTUREQ parameter list is invoked 20060000 * with DSECT=NO, there are still DSECTs in the macro. 20070000 * Therefore do NOT attempt to add DCs or DSs after this 20080000 * macro that are not part of a DSECT. 20090000 * 20100000 ********************************************************************** 20110000 * 20120000 IEFSJTRP DSECT=NO SWBTUREQ parm. list @H9A 20130000 * 20140000 ********************************************************************** 20150000 * * 20160000 * End of APSUECA work buffer * 20170000 * * 20180000 ********************************************************************** 20190000 * 20200000 * 20210000 IEFDOTUM Text unit mapping @H9A 20220000 IEFDOKEY OUTPUT key mapping @H9A 20230000 IEFSJTRC SWBTUREQ return codes @H9A 20240000 * 20250000 .NOESS05 ANOP @H9A 20260000 * 20270000 END APSUX02 20280000