diff --git a/endevor/Field-Developed-Programs/API-Assembler-Examples/APIALDST.asm b/endevor/Field-Developed-Programs/API-Assembler-Examples/APIALDST.asm index 785fbbd..62b047d 100644 --- a/endevor/Field-Developed-Programs/API-Assembler-Examples/APIALDST.asm +++ b/endevor/Field-Developed-Programs/API-Assembler-Examples/APIALDST.asm @@ -1,157 +1,157 @@ -APIALDST TITLE 'ENDEVOR - API LIST DESTINATION INFO ' -* THESE ROUTINES ARE DISTRIBUTED BY THE CA TECHNOLOGIES STAFF -* "AS IS". NO WARRANTY, EITHER EXPRESSED OR IMPLIED, IS MADE -* FOR THEM. CA TECHNOLOGIES CANNOT GUARANTEE THAT THE ROUTINES -* ARE ERROR FREE, OR THAT IF ERRORS ARE FOUND, THEY WILL BE -* CORRECTED. -* -* /* WRITTEN BY DAN WALTHER */ -*********************************************************************** -* DESCRIPTION: THIS SAMPLE PROGRAM ISSUES REQUESTS TO THE -* ENDEVOR API TO EXTRACT ENDEVOR Destination INFO. -* -* HOW TO USE: PASS THE destination IN THE PARM WITH THE PROGRAM -* CALL. -* EXAMPLE: -* EXEC PGM=NDVRC1, -* PARM='CONCALL,DDN:STEPLIB,APIALDST,' -* -* REGISTER USAGE: -* R2 -> SAVE RETURN CODE -* R3 -> SAVE REASON CODE -* R12 -> BASE PROGRAM -* R13 -> STANDARD USAGE........ -* R15 -> RETURN CODE FROM CALL -* ==> -> WE USE STANDARD STACK SAVEAREA USAGE -* -*********************************************************************** -* WORKAREA -*********************************************************************** -WORKAREA DSECT -SAVEAREA DS 18F -WPARMLST DS 4F PARAMETER LIST -WCNT DS H ACTION COUNTER - DS 0D -*********************************************************************** -* API CONTROL BLOCK -** CAPRD.SIQ7006.SOURCE(ENHALPKG) -*********************************************************************** - ENHAACTL DSECT=NO -*********************************************************************** -* API ACTION REQUEST BLOCKS -*********************************************************************** - ENHALDST DSECT=NO -WORKLN EQU *-WORKAREA -*********************************************************************** -* REQISTER EQUATES -*********************************************************************** -R0 EQU 0 -R1 EQU 1 -R2 EQU 2 -R3 EQU 3 -R4 EQU 4 -R5 EQU 5 -R6 EQU 6 -R7 EQU 7 -R8 EQU 8 -R9 EQU 9 -R10 EQU 10 -R11 EQU 11 -R12 EQU 12 -R13 EQU 13 -R14 EQU 14 -R15 EQU 15 -APIALDST CSECT -APIALDST AMODE 31 -APIALDST RMODE ANY -*********************************************************************** -* HOUSEKEEPING -*********************************************************************** - SAVE (14,12) SAVE CALLERS REG 12(13) - LR R12,R15 POINT TO THIS PROGRAM - USING APIALDST,R12 -*********************************************************************** -* VALIDATE PARM LEN -*********************************************************************** -* - L R6,0(,R1) - LA R6,2(,R6) POINT TO package id in parm -* -*********************************************************************** -* GET STORAGE FOR WORKAREA -*********************************************************************** - L R0,=A(WORKLN) GET SIZE OF W.A - GETMAIN R,LV=(0) GET WORKING STORAGE - ST R1,8(R13) STORE NEW STACK +8(OLD) - ST R13,4(R1) STORE OLD STACK +4(NEW) - LR R13,R1 POINT R13 TO OUR STACK - USING SAVEAREA,R13 ESTABLISH ADDRESSIBILIY - SPACE , -************************************************************ -* INITIALIZE AND POPULATE THE CONTROL STRUCTURE -* NOTE: IF ANY INVENTORY MANAGEMENT MESSAGES ARE ISSUED, THEY -* ARE WRITTEN TO THE MSG DATA SET. THE OUTPUT FROM THIS REQUEST -* IS WRITTEN TO THE LIST DATA SET. -************************************************************ -* -XSCL000 DS 0H -************************************************************ -* INITIALIZE AND POPULATE THE REQUEST STRUCTURE -************************************************************ -* - API$INIT STG=AACTL,BLOCK=AACTL - API$INIT STG=ALDST_RQ,BLOCK=ALDST_RQ - API$INIT STG=ALDST_RS,BLOCK=ALDST_RS -* - MVC AACTL_MSG_DDN(8),=C'APIMSGS ' - MVC AACTL_LIST_DDN(8),=C'APILIST ' -* - MVI ALDST_RQ_DESTID,C' ' Blank out dest name - MVC ALDST_RQ_DESTID+1(6),ALDST_RQ_DESTID " - MVC ALDST_RQ_DESTID(7),0(R6) Move Dest name to request -* -************************************************************ -* BUILD PARMLIST -************************************************************ - LA R1,WPARMLST - LA R14,AACTL - ST R14,0(0,R1) - LA R14,ALDST_RQ - ST R14,4(0,R1) - LA R14,ALDST_RS - ST R14,8(0,R1) - OI 8(R1),X'80' -************************************************************ -* -* CALL THE ENDEVOR API INTERFACE PROGRAM -************************************************************ -XCALLAPI DS 0H - L R15,=V(ENA$NDVR) - BALR R14,R15 - LR R2,R15 HOLD ONTO THE RETURN CODE - LR R3,R0 HOLD ONTO THE REASON CODE -************************************************************ -* SHUTDOWN THE API SERVER. ONLY THE AACTL BLOCK IS REQUIRED. -************************************************************ -XSHUTDWN DS 0H - API$INIT STG=AACTL,BLOCK=AACTL - MVI AACTL_SHUTDOWN,C'Y' - LA R1,WPARMLST - LA R14,AACTL - ST R14,0(0,R1) - OI 0(R1),X'80' - L R15,=V(ENA$NDVR) - BALR R14,R15 -*********************************************************************** -* PROGRAM EXIT -*********************************************************************** - LR R5,R13 SAVE SAVEAREA ADDRESS - L R13,4(R13) POINT TO PREVIOUS SAVEAREA -* CLEAN UP THIS PROGRAM'S STORAGE - L R0,=A(WORKLN) GET SIZE - FREEMAIN R,A=(R5),LV=(R0) FREE STORAGE - LR R15,R2 SET RETURN CODE - L R14,12(R13) - LM R0,R12,20(R13) - BSM 0,R14 RETURN - END +APIALDST TITLE 'ENDEVOR - API LIST DESTINATION INFO ' +* THESE ROUTINES ARE DISTRIBUTED BY THE CA TECHNOLOGIES STAFF +* "AS IS". NO WARRANTY, EITHER EXPRESSED OR IMPLIED, IS MADE +* FOR THEM. CA TECHNOLOGIES CANNOT GUARANTEE THAT THE ROUTINES +* ARE ERROR FREE, OR THAT IF ERRORS ARE FOUND, THEY WILL BE +* CORRECTED. +* +* /* WRITTEN BY DAN WALTHER */ +*********************************************************************** +* DESCRIPTION: THIS SAMPLE PROGRAM ISSUES REQUESTS TO THE +* ENDEVOR API TO EXTRACT ENDEVOR Destination INFO. +* +* HOW TO USE: PASS THE destination IN THE PARM WITH THE PROGRAM +* CALL. +* EXAMPLE: +* EXEC PGM=NDVRC1, +* PARM='CONCALL,DDN:STEPLIB,APIALDST,' +* +* REGISTER USAGE: +* R2 -> SAVE RETURN CODE +* R3 -> SAVE REASON CODE +* R12 -> BASE PROGRAM +* R13 -> STANDARD USAGE........ +* R15 -> RETURN CODE FROM CALL +* ==> -> WE USE STANDARD STACK SAVEAREA USAGE +* +*********************************************************************** +* WORKAREA +*********************************************************************** +WORKAREA DSECT +SAVEAREA DS 18F +WPARMLST DS 4F PARAMETER LIST +WCNT DS H ACTION COUNTER + DS 0D +*********************************************************************** +* API CONTROL BLOCK +** CAPRD.SIQ7006.SOURCE(ENHALPKG) +*********************************************************************** + ENHAACTL DSECT=NO +*********************************************************************** +* API ACTION REQUEST BLOCKS +*********************************************************************** + ENHALDST DSECT=NO +WORKLN EQU *-WORKAREA +*********************************************************************** +* REQISTER EQUATES +*********************************************************************** +R0 EQU 0 +R1 EQU 1 +R2 EQU 2 +R3 EQU 3 +R4 EQU 4 +R5 EQU 5 +R6 EQU 6 +R7 EQU 7 +R8 EQU 8 +R9 EQU 9 +R10 EQU 10 +R11 EQU 11 +R12 EQU 12 +R13 EQU 13 +R14 EQU 14 +R15 EQU 15 +APIALDST CSECT +APIALDST AMODE 31 +APIALDST RMODE ANY +*********************************************************************** +* HOUSEKEEPING +*********************************************************************** + SAVE (14,12) SAVE CALLERS REG 12(13) + LR R12,R15 POINT TO THIS PROGRAM + USING APIALDST,R12 +*********************************************************************** +* VALIDATE PARM LEN +*********************************************************************** +* + L R6,0(,R1) + LA R6,2(,R6) POINT TO package id in parm +* +*********************************************************************** +* GET STORAGE FOR WORKAREA +*********************************************************************** + L R0,=A(WORKLN) GET SIZE OF W.A + GETMAIN R,LV=(0) GET WORKING STORAGE + ST R1,8(R13) STORE NEW STACK +8(OLD) + ST R13,4(R1) STORE OLD STACK +4(NEW) + LR R13,R1 POINT R13 TO OUR STACK + USING SAVEAREA,R13 ESTABLISH ADDRESSIBILIY + SPACE , +************************************************************ +* INITIALIZE AND POPULATE THE CONTROL STRUCTURE +* NOTE: IF ANY INVENTORY MANAGEMENT MESSAGES ARE ISSUED, THEY +* ARE WRITTEN TO THE MSG DATA SET. THE OUTPUT FROM THIS REQUEST +* IS WRITTEN TO THE LIST DATA SET. +************************************************************ +* +XSCL000 DS 0H +************************************************************ +* INITIALIZE AND POPULATE THE REQUEST STRUCTURE +************************************************************ +* + API$INIT STG=AACTL,BLOCK=AACTL + API$INIT STG=ALDST_RQ,BLOCK=ALDST_RQ + API$INIT STG=ALDST_RS,BLOCK=ALDST_RS +* + MVC AACTL_MSG_DDN(8),=C'APIMSGS ' + MVC AACTL_LIST_DDN(8),=C'APILIST ' +* + MVI ALDST_RQ_DESTID,C' ' Blank out dest name + MVC ALDST_RQ_DESTID+1(6),ALDST_RQ_DESTID " + MVC ALDST_RQ_DESTID(7),0(R6) Move Dest name to request +* +************************************************************ +* BUILD PARMLIST +************************************************************ + LA R1,WPARMLST + LA R14,AACTL + ST R14,0(0,R1) + LA R14,ALDST_RQ + ST R14,4(0,R1) + LA R14,ALDST_RS + ST R14,8(0,R1) + OI 8(R1),X'80' +************************************************************ +* +* CALL THE ENDEVOR API INTERFACE PROGRAM +************************************************************ +XCALLAPI DS 0H + L R15,=V(ENA$NDVR) + BALR R14,R15 + LR R2,R15 HOLD ONTO THE RETURN CODE + LR R3,R0 HOLD ONTO THE REASON CODE +************************************************************ +* SHUTDOWN THE API SERVER. ONLY THE AACTL BLOCK IS REQUIRED. +************************************************************ +XSHUTDWN DS 0H + API$INIT STG=AACTL,BLOCK=AACTL + MVI AACTL_SHUTDOWN,C'Y' + LA R1,WPARMLST + LA R14,AACTL + ST R14,0(0,R1) + OI 0(R1),X'80' + L R15,=V(ENA$NDVR) + BALR R14,R15 +*********************************************************************** +* PROGRAM EXIT +*********************************************************************** + LR R5,R13 SAVE SAVEAREA ADDRESS + L R13,4(R13) POINT TO PREVIOUS SAVEAREA +* CLEAN UP THIS PROGRAM'S STORAGE + L R0,=A(WORKLN) GET SIZE + FREEMAIN R,A=(R5),LV=(R0) FREE STORAGE + LR R15,R2 SET RETURN CODE + L R14,12(R13) + LM R0,R12,20(R13) + BSM 0,R14 RETURN + END diff --git a/endevor/Field-Developed-Programs/API-Assembler-Examples/APIALSUM.asm b/endevor/Field-Developed-Programs/API-Assembler-Examples/APIALSUM.asm index 0d84135..b14ee1f 100644 --- a/endevor/Field-Developed-Programs/API-Assembler-Examples/APIALSUM.asm +++ b/endevor/Field-Developed-Programs/API-Assembler-Examples/APIALSUM.asm @@ -1,155 +1,155 @@ -APIALSUM TITLE 'ENDEVOR - API LIST PACKAGE ACTION SUMMARY' -* THESE ROUTINES ARE DISTRIBUTED BY THE CA TECHNOLOGIES STAFF -* "AS IS". NO WARRANTY, EITHER EXPRESSED OR IMPLIED, IS MADE -* FOR THEM. CA TECHNOLOGIES CANNOT GUARANTEE THAT THE ROUTINES -* ARE ERROR FREE, OR THAT IF ERRORS ARE FOUND, THEY WILL BE -* CORRECTED. -* -* /* WRITTEN BY DAN WALTHER */ -*********************************************************************** -* DESCRIPTION: THIS SAMPLE PROGRAM ISSUES REQUESTS TO THE -* ENDEVOR API TO EXTRACT ENDEVOR PACKAGE BACKOUT INFO. -* -* HOW TO USE: PASS THE PACKAGE NAME IN THE PARM WITH THE PROGRAM -* CALL. -* EXAMPLE: -* EXEC PGM=NDVRC1, -* PARM='CONCALL,DDN:STEPLIB,APIALSUM,PR#BACKOUT#TEST1' -* -* REGISTER USAGE: -* R2 -> SAVE RETURN CODE -* R3 -> SAVE REASON CODE -* R12 -> BASE PROGRAM -* R13 -> STANDARD USAGE........ -* R15 -> RETURN CODE FROM CALL -* ==> -> WE USE STANDARD STACK SAVEAREA USAGE -* -*********************************************************************** -* WORKAREA -*********************************************************************** -WORKAREA DSECT -SAVEAREA DS 18F -WPARMLST DS 4F PARAMETER LIST -WCNT DS H ACTION COUNTER - DS 0D -*********************************************************************** -* API CONTROL BLOCK -** CAPRD.SIQ7006.SOURCE(ENHALSUM) -*********************************************************************** - ENHAACTL DSECT=NO -*********************************************************************** -* API ACTION REQUEST BLOCKS -*********************************************************************** - ENHALSUM DSECT=NO -WORKLN EQU *-WORKAREA -*********************************************************************** -* REQISTER EQUATES -*********************************************************************** -R0 EQU 0 -R1 EQU 1 -R2 EQU 2 -R3 EQU 3 -R4 EQU 4 -R5 EQU 5 -R6 EQU 6 -R7 EQU 7 -R8 EQU 8 -R9 EQU 9 -R10 EQU 10 -R11 EQU 11 -R12 EQU 12 -R13 EQU 13 -R14 EQU 14 -R15 EQU 15 -APIALSUM CSECT -APIALSUM AMODE 31 -APIALSUM RMODE ANY -*********************************************************************** -* HOUSEKEEPING -*********************************************************************** - SAVE (14,12) SAVE CALLERS REG 12(13) - LR R12,R15 POINT TO THIS PROGRAM - USING APIALSUM,R12 -*********************************************************************** -* VALIDATE PARM LEN -*********************************************************************** -* - L R6,0(,R1) - LA R6,2(,R6) POINT TO package id in parm -* -*********************************************************************** -* GET STORAGE FOR WORKAREA -*********************************************************************** - L R0,=A(WORKLN) GET SIZE OF W.A - GETMAIN R,LV=(0) GET WORKING STORAGE - ST R1,8(R13) STORE NEW STACK +8(OLD) - ST R13,4(R1) STORE OLD STACK +4(NEW) - LR R13,R1 POINT R13 TO OUR STACK - USING SAVEAREA,R13 ESTABLISH ADDRESSIBILIY - SPACE , -************************************************************ -* INITIALIZE AND POPULATE THE CONTROL STRUCTURE -* NOTE: IF ANY INVENTORY MANAGEMENT MESSAGES ARE ISSUED, THEY -* ARE WRITTEN TO THE MSG DATA SET. THE OUTPUT FROM THIS REQUEST -* IS WRITTEN TO THE LIST DATA SET. -************************************************************ -* -XSCL000 DS 0H -************************************************************ -* INITIALIZE AND POPULATE THE REQUEST STRUCTURE -************************************************************ -* - API$INIT STG=AACTL,BLOCK=AACTL - API$INIT STG=ALSUM_RQ,BLOCK=ALSUM_RQ - API$INIT STG=ALSUM_RS,BLOCK=ALSUM_RS -* - MVC AACTL_MSG_DDN(8),=C'APIMSGS ' - MVC AACTL_LIST_DDN(8),=C'APILIST ' -* - MVC ALSUM_RQ_PKGID(16),0(R6) Move package id to request -* -************************************************************ -* BUILD PARMLIST -************************************************************ - LA R1,WPARMLST - LA R14,AACTL - ST R14,0(0,R1) - LA R14,ALSUM_RQ - ST R14,4(0,R1) - LA R14,ALSUM_RS - ST R14,8(0,R1) - OI 8(R1),X'80' -************************************************************ -* -* CALL THE ENDEVOR API INTERFACE PROGRAM -************************************************************ -XCALLAPI DS 0H - L R15,=V(ENA$NDVR) - BALR R14,R15 - LR R2,R15 HOLD ONTO THE RETURN CODE - LR R3,R0 HOLD ONTO THE REASON CODE -************************************************************ -* SHUTDOWN THE API SERVER. ONLY THE AACTL BLOCK IS REQUIRED. -************************************************************ -XSHUTDWN DS 0H - API$INIT STG=AACTL,BLOCK=AACTL - MVI AACTL_SHUTDOWN,C'Y' - LA R1,WPARMLST - LA R14,AACTL - ST R14,0(0,R1) - OI 0(R1),X'80' - L R15,=V(ENA$NDVR) - BALR R14,R15 -*********************************************************************** -* PROGRAM EXIT -*********************************************************************** - LR R5,R13 SAVE SAVEAREA ADDRESS - L R13,4(R13) POINT TO PREVIOUS SAVEAREA -* CLEAN UP THIS PROGRAM'S STORAGE - L R0,=A(WORKLN) GET SIZE - FREEMAIN R,A=(R5),LV=(R0) FREE STORAGE - LR R15,R2 SET RETURN CODE - L R14,12(R13) - LM R0,R12,20(R13) - BSM 0,R14 RETURN - END +APIALSUM TITLE 'ENDEVOR - API LIST PACKAGE ACTION SUMMARY' +* THESE ROUTINES ARE DISTRIBUTED BY THE CA TECHNOLOGIES STAFF +* "AS IS". NO WARRANTY, EITHER EXPRESSED OR IMPLIED, IS MADE +* FOR THEM. CA TECHNOLOGIES CANNOT GUARANTEE THAT THE ROUTINES +* ARE ERROR FREE, OR THAT IF ERRORS ARE FOUND, THEY WILL BE +* CORRECTED. +* +* /* WRITTEN BY DAN WALTHER */ +*********************************************************************** +* DESCRIPTION: THIS SAMPLE PROGRAM ISSUES REQUESTS TO THE +* ENDEVOR API TO EXTRACT ENDEVOR PACKAGE BACKOUT INFO. +* +* HOW TO USE: PASS THE PACKAGE NAME IN THE PARM WITH THE PROGRAM +* CALL. +* EXAMPLE: +* EXEC PGM=NDVRC1, +* PARM='CONCALL,DDN:STEPLIB,APIALSUM,PR#BACKOUT#TEST1' +* +* REGISTER USAGE: +* R2 -> SAVE RETURN CODE +* R3 -> SAVE REASON CODE +* R12 -> BASE PROGRAM +* R13 -> STANDARD USAGE........ +* R15 -> RETURN CODE FROM CALL +* ==> -> WE USE STANDARD STACK SAVEAREA USAGE +* +*********************************************************************** +* WORKAREA +*********************************************************************** +WORKAREA DSECT +SAVEAREA DS 18F +WPARMLST DS 4F PARAMETER LIST +WCNT DS H ACTION COUNTER + DS 0D +*********************************************************************** +* API CONTROL BLOCK +** CAPRD.SIQ7006.SOURCE(ENHALSUM) +*********************************************************************** + ENHAACTL DSECT=NO +*********************************************************************** +* API ACTION REQUEST BLOCKS +*********************************************************************** + ENHALSUM DSECT=NO +WORKLN EQU *-WORKAREA +*********************************************************************** +* REQISTER EQUATES +*********************************************************************** +R0 EQU 0 +R1 EQU 1 +R2 EQU 2 +R3 EQU 3 +R4 EQU 4 +R5 EQU 5 +R6 EQU 6 +R7 EQU 7 +R8 EQU 8 +R9 EQU 9 +R10 EQU 10 +R11 EQU 11 +R12 EQU 12 +R13 EQU 13 +R14 EQU 14 +R15 EQU 15 +APIALSUM CSECT +APIALSUM AMODE 31 +APIALSUM RMODE ANY +*********************************************************************** +* HOUSEKEEPING +*********************************************************************** + SAVE (14,12) SAVE CALLERS REG 12(13) + LR R12,R15 POINT TO THIS PROGRAM + USING APIALSUM,R12 +*********************************************************************** +* VALIDATE PARM LEN +*********************************************************************** +* + L R6,0(,R1) + LA R6,2(,R6) POINT TO package id in parm +* +*********************************************************************** +* GET STORAGE FOR WORKAREA +*********************************************************************** + L R0,=A(WORKLN) GET SIZE OF W.A + GETMAIN R,LV=(0) GET WORKING STORAGE + ST R1,8(R13) STORE NEW STACK +8(OLD) + ST R13,4(R1) STORE OLD STACK +4(NEW) + LR R13,R1 POINT R13 TO OUR STACK + USING SAVEAREA,R13 ESTABLISH ADDRESSIBILIY + SPACE , +************************************************************ +* INITIALIZE AND POPULATE THE CONTROL STRUCTURE +* NOTE: IF ANY INVENTORY MANAGEMENT MESSAGES ARE ISSUED, THEY +* ARE WRITTEN TO THE MSG DATA SET. THE OUTPUT FROM THIS REQUEST +* IS WRITTEN TO THE LIST DATA SET. +************************************************************ +* +XSCL000 DS 0H +************************************************************ +* INITIALIZE AND POPULATE THE REQUEST STRUCTURE +************************************************************ +* + API$INIT STG=AACTL,BLOCK=AACTL + API$INIT STG=ALSUM_RQ,BLOCK=ALSUM_RQ + API$INIT STG=ALSUM_RS,BLOCK=ALSUM_RS +* + MVC AACTL_MSG_DDN(8),=C'APIMSGS ' + MVC AACTL_LIST_DDN(8),=C'APILIST ' +* + MVC ALSUM_RQ_PKGID(16),0(R6) Move package id to request +* +************************************************************ +* BUILD PARMLIST +************************************************************ + LA R1,WPARMLST + LA R14,AACTL + ST R14,0(0,R1) + LA R14,ALSUM_RQ + ST R14,4(0,R1) + LA R14,ALSUM_RS + ST R14,8(0,R1) + OI 8(R1),X'80' +************************************************************ +* +* CALL THE ENDEVOR API INTERFACE PROGRAM +************************************************************ +XCALLAPI DS 0H + L R15,=V(ENA$NDVR) + BALR R14,R15 + LR R2,R15 HOLD ONTO THE RETURN CODE + LR R3,R0 HOLD ONTO THE REASON CODE +************************************************************ +* SHUTDOWN THE API SERVER. ONLY THE AACTL BLOCK IS REQUIRED. +************************************************************ +XSHUTDWN DS 0H + API$INIT STG=AACTL,BLOCK=AACTL + MVI AACTL_SHUTDOWN,C'Y' + LA R1,WPARMLST + LA R14,AACTL + ST R14,0(0,R1) + OI 0(R1),X'80' + L R15,=V(ENA$NDVR) + BALR R14,R15 +*********************************************************************** +* PROGRAM EXIT +*********************************************************************** + LR R5,R13 SAVE SAVEAREA ADDRESS + L R13,4(R13) POINT TO PREVIOUS SAVEAREA +* CLEAN UP THIS PROGRAM'S STORAGE + L R0,=A(WORKLN) GET SIZE + FREEMAIN R,A=(R5),LV=(R0) FREE STORAGE + LR R15,R2 SET RETURN CODE + L R14,12(R13) + LM R0,R12,20(R13) + BSM 0,R14 RETURN + END diff --git a/endevor/Field-Developed-Programs/ISPF-tools-for-Quick-Edit-and-Endevor/@SITE.rex b/endevor/Field-Developed-Programs/ISPF-tools-for-Quick-Edit-and-Endevor/@SITE.rex index b61c4d1..d33b344 100644 --- a/endevor/Field-Developed-Programs/ISPF-tools-for-Quick-Edit-and-Endevor/@SITE.rex +++ b/endevor/Field-Developed-Programs/ISPF-tools-for-Quick-Edit-and-Endevor/@SITE.rex @@ -1,171 +1,66 @@ - /* REXX */ - PARSE ARG Parm - -/* Required for all Bundles : */ - /* Enter High Level Qualifiers */ - SHLQ='IPRFX.IQUAL' /* Systems High Level Qualifier */ - FHLQ='IPRFX.IQUAL' /* Field Developed Program (FDP) HLQ */ - AHLQ='UPRFX.UQUAL' /* Applications High Level Qualifier */ - /* Enter the name of the main Libraries for CA Services tools */ -/* APF Authorized libraries: \ */ - MyAUTULibrary = SHLQ'.CSIQAUTU' - MyAUTHLibrary = SHLQ'.CSIQAUTH' - MyLOADLibrary = SHLQ'.CSIQLOAD' - MyLOA2Library = FHLQ'.CSIQLOA2' -/* Non-APF Authorized library: \ */ - MyUTILLibrary = FHLQ'.CSIQLOA2' - MyCLS0Library = SHLQ'.CSIQCLS0' - MyCLS2Library = FHLQ'.CSIQCLS2' - MyOPTNLibrary = SHLQ'.CSIQOPTN' - MyOPT2Library = FHLQ'.CSIQOPT2' - MyMENULibrary = SHLQ'.CSIQMENU' - MyMEN2Library = FHLQ'.CSIQMEN2' - MyPENULibrary = SHLQ'.CSIQPENU' - MyPEN2Library = FHLQ'.CSIQPEN2' - MySENULibrary = SHLQ'.CSIQSENU' - MySEN2Library = FHLQ'.CSIQSEN2' - MyTENULibrary = SHLQ'.CSIQTENU' - MyTEN2Library = FHLQ'.CSIQTEN2' - MySampLibrary = SHLQ'.CSIQSAMP' - MyDATALibrary = SHLQ'.CSIQDATA' - MyJCLLibrary = SHLQ'.CSIQJCL' - MyJCL2Library = FHLQ'.CSIQJCL2' - MySRC2Library = FHLQ'.CSIQSRC2' - /* JOB INFO FOR ALTERNATE ID & CONVERSION JOBS*/ - JnmPfx = userid() /* default job name prefix */ - AltIDAcctCode = '55800000' - AltIDJobClass = 'B' - AltIDMsgClass = 'X' - -/* Bundle Switch Area */ - PackageBundle = 'N' - ParallelDevelopmentBundle = 'N' - QuickEditBundle = 'N' - -/************************************************************/ -/* Required for the Package Functions bundle : */ - SchedulingPackageShipBundle = 'Y' ;/* Auto/Sched Shipping */ - MyHomeAddress = '?????' ; /* Use HOMETEST for ip address */ - /* If SchedulingPackageShipBundle, list Transmission methods */ - TransmissionMethods = 'NETVIEW_FTP LOCAL ' - /* If SchedulingPackageShipBundle, list Shipment Models (JCL) */ - TransmissionModels = 'SHIP#FTP SHIPLOCL' - - /* Select one of the following - Usually 'Rules' */ - ShipSchedulingMethod = 'One ' ;/* 1 Destination */ - ShipSchedulingMethod = 'None ' ;/* No Shipping */ - ShipSchedulingMethod = 'Notes' ;/* Use PKG Notes */ - ShipSchedulingMethod = 'Rules' ;/* Rules / Notes */ - /* Verify the name of the Trigger File - must be allocated */ - TriggerFileName = AHLQ'.SHIPMENT.TRIGGER' - - /* If you want to schedule production moves */ - /* or package shipping, use the SchedulingOption */ - SchedulingOption = ' ' ; /* no scheduling of any kind */ - /* The 'Move to' option causes the execution window to be */ - /* automatically updated for named Env and stage */ - SchedulingOption = 'MOVE TO SMPLPROD P' - /* The 'SHIP FROM' option causes automated shipments for */ - /* packages that delivered to the Env and stage */ - SchedulingOption = 'SHIP FROM SMPLPROD P' - -/************************************************************/ -/* Required for the Parallel Development Support bundle : */ - /* For XFER processing (Parallel Bundle) : */ - /* Select one line and comment out or delete the other: */ - XFER_AutoExecute = 'Y' ; /* Auto Execute XFER packages */ - XFER_AutoExecute = 'N' ; /* Manual or Other Package Execution */ - /*Note: Other Package Execution requires the */ - /* Package Bundle Implementation */ - /* This option should be 'N' if Package Bundle is installed */ - -/* For ALIASE processing (Parallel Bundle) : */ - ALIASE_LibraryPrefix = AHLQ ; /* Lib and Alias prefix */ - /* Note: Required: Typically indicates the Application HLQ */ - /* for COPY and LOAD datasets in the */ - /* Endevor development environment . */ - ALIASE_Generate_Process = 'Y' ; /* Use an Endevor processor */ - /* Note: 'Y' requires installation of a processor, */ - /* Like the GALIAS processor provided. */ - /* Addtionally, a type named ALIAS must be */ - /* defined in development Environment . */ - ALIASE_Generate_Process = 'N' ; /* Just make Aliases */ - /* Note: 'N' is the typical and simple choice for */ - /* this option. */ - - ALIASE_Subsystem = '' ; /* Use related subsys */ - /* Note: Applicable only if ALIASE_Generate_Process = 'Y' */ - /* If blank, ALIAS elements will be placed */ - /* into the same Subsystem they relate to.*/ - /* If non-blank, Alias elements will be */ - /* placed into the named Subsystem. */ -/************************************************************/ -/* Required for the Quick-Edit bundle : */ - AlertRexxProgram = 'PDA' ; /* Use PDA or PDNF3 or BC1PPDNR */ - /* Verify the name of the Endevor Element Catalog file */ - ElementCatalogName = 'CAPRD.END40.SMPL.ELMCATL' - /* Enter one or more mapping representations (not Prod) */ - /* where PDA should search for inventory. */ - PDAMaplist = , /* required only for PDA */ - " SMPLTEST/T-SMPLTEST/Q ", - " SMPLPROD/E-SMPLPROD/E " - /* Enter a value for the temporary element name used by */ - /* RETRO actions: */ - /* '1' Use the original element name and '##' suffix. */ - /* You must support 10-char element names with this */ - /* option */ - /* 'user' Use the userid of the person executing the RETRO */ - /* extended to 8 characters with the use of '#' */ - /* extended to 8 characters with the use of '#' */ - /*''Use the designated name - one that is not used for*/ - /* any real elements in the Endevor inventory. */ - /* Select one and enter value... */ - RetroTempName ='1' ; /*original element name and '##' */ - RetroTempName ='QQQQQQQQ' /*replace 'QQQQQQQ' with name */ - RetroTempName ='user' ; /*userid and '##' */ - -/************************************************************/ -/* Required for the SnapMon (Endevor Activity feature: */ -/************************************************************/ - SNAPMOND = "Y,,0,*,*,IS ACTIVE IN SCREEN*," || , - "Y,XSYS,0,*,CTLIELEM,*," || , - "Y,,0,*,LSERVDSN,*," || , - "Y,,0,*,FDPDSN,"MyCLS2Library"," || , - "Y,,0,*,SYSDSN,"AHLQ"*," || , - "Y,,0,*,SYSDSN,"SHLQ".CSIQPLD*," || , - "N,,0,*,SYSDSN,SYS7.ENDEVOR.*," - /* - The SanpMon defaults are set as a single value - that is in effect a comma delimited table. - Each row contains: - * Yes/No Flag to indicate if this line is active - * XSYS value or blank to indicate if XSYS is searched - * Limit (or zero for none) to limit the Enqueues returned - * Resource fliter (or * for all) - * Queue Name (or * for all) - * Resource Name (or * for all) - - The default entries include ENQueue searches for the - Endevor ISPF sessions, Element enqueus (CTLIELEM), - L-Serv enqueus (used by Endevor to searlialise L-Serv access) - and a few sample SYSDSN entries which are filtered to find - the ACMROOT, Elelmet Catalog and Package files. A special - entry with Queue Name FDPDSN will be counted to hilite - users with the FDP clist dataset allocated. - - Note: Because comma is used as the delimiter, each row should - contain exactly six(6) commas. i.e. no commas in the "data" - The current limit is nine(9) rows. - */ -/***************************************************************/ -/* REQUIRED FOR ENDEVOR HILITE SYSVIEW SUPPORT */ -/* SPECIFY THE HIGH LEVEL QUALIFIER FOR SYSVIEW (.CMN4BLOD) */ -/* MySysviewPref = 'CAIPROD.SYSVW.R150S2' */ - MySysviewPref = 'CAIPROD.SYSVW.R1600.CAR2001' -/***************************************************************/ - /* do not alter following - required for all bundle processing */ -/************************************************************/ - /* do not alter following - required for all bundle processing */ - IF SYMBOL(Parm)='VAR' THEN RETURN VALUE(Parm) - ELSE RETURN 'Not-valid:'||Parm - EXIT + /* REXX */ + PARSE ARG Parm + +/* Required for all Bundles : */ + /* Enter High Level Qualifiers */ + SHLQ='IPRFX.IQUAL' /* Systems High Level Qualifier */ + FHLQ='IPRFX.IQUAL' /* Field Developed Program (FDP) HLQ */ + AHLQ='UPRFX.UQUAL' /* Applications High Level Qualifier */ + /* Enter the name of the main Libraries for CA Services tools */ +/* APF Authorized libraries: \ */ + MyAUTULibrary = SHLQ'.CSIQAUTU' + MyAUTHLibrary = SHLQ'.CSIQAUTH' + MyLOADLibrary = SHLQ'.CSIQLOAD' + MyLOA2Library = FHLQ'.CSIQLOA2' +/* Non-APF Authorized library: \ */ + MyUTILLibrary = FHLQ'.CSIQLOA2' + MyCLS0Library = SHLQ'.CSIQCLS0' + MyCLS2Library = FHLQ'.CSIQCLS2' + MyOPTNLibrary = SHLQ'.CSIQOPTN' + MyOPT2Library = FHLQ'.CSIQOPT2' + MyMENULibrary = SHLQ'.CSIQMENU' + MyMEN2Library = FHLQ'.CSIQMEN2' + MyPENULibrary = SHLQ'.CSIQPENU' + MyPEN2Library = FHLQ'.CSIQPEN2' + MySENULibrary = SHLQ'.CSIQSENU' + MySEN2Library = FHLQ'.CSIQSEN2' + MyTENULibrary = SHLQ'.CSIQTENU' + MyTEN2Library = FHLQ'.CSIQTEN2' + MySampLibrary = SHLQ'.CSIQSAMP' + MyDATALibrary = SHLQ'.CSIQDATA' + MyJCLLibrary = SHLQ'.CSIQJCL' + MyJCL2Library = FHLQ'.CSIQJCL2' + MySRC2Library = FHLQ'.CSIQSRC2' + /* JOB INFO FOR ALTERNATE ID & CONVERSION JOBS*/ + JnmPfx = userid() /* default job name prefix */ + AltIDAcctCode = '00000000' + AltIDJobClass = 'A' + AltIDMsgClass = 'X' + +/************************************************************/ +/* Required for the Package Functions bundle : */ + SchedulingPackageShipBundle = 'Y' ;/* Auto/Sched Shipping */ + MyHomeAddress = '?????' ; /* Use HOMETEST for ip address */ + /* If SchedulingPackageShipBundle, list Transmission methods */ + TransmissionMethods = 'NETVIEW_FTP LOCAL ' + /* If SchedulingPackageShipBundle, list Shipment Models (JCL) */ + TransmissionModels = 'SHIP#FTP SHIPLOCL' + + /* Select one of the following - Usually 'Rules' */ + ShipSchedulingMethod = 'One ' ;/* 1 Destination */ + ShipSchedulingMethod = 'None ' ;/* No Shipping */ + ShipSchedulingMethod = 'Notes' ;/* Use PKG Notes */ + ShipSchedulingMethod = 'Rules' ;/* Rules / Notes */ + /* Verify the name of the Trigger File - must be allocated */ + TriggerFileName = AHLQ'.SHIPMENT.TRIGGER' + + +/************************************************************/ +/***************************************************************/ +/***************************************************************/ + /* do not alter following - required for all bundle processing */ +/************************************************************/ + /* do not alter following - required for all bundle processing */ + IF SYMBOL(Parm)='VAR' THEN RETURN VALUE(Parm) + ELSE RETURN 'Not-valid:'||Parm + EXIT diff --git a/endevor/Field-Developed-Programs/ISPF-tools-for-Quick-Edit-and-Endevor/JCLCOMMT.rex b/endevor/Field-Developed-Programs/ISPF-tools-for-Quick-Edit-and-Endevor/JCLCOMMT.rex index ce7769a..4b2aa3f 100644 --- a/endevor/Field-Developed-Programs/ISPF-tools-for-Quick-Edit-and-Endevor/JCLCOMMT.rex +++ b/endevor/Field-Developed-Programs/ISPF-tools-for-Quick-Edit-and-Endevor/JCLCOMMT.rex @@ -1,19 +1,24 @@ -/* REXX */ -/* Can be used as an edit macro when editing a PROCESS or INC */ -/* or JCL */ -/* Just enter JCLCOMMT on the command line while in QuickEdit*/ -/* It gets the */ -/* name of the element and places the element name onto */ -/* each line that contains 'PGM=' and is blank in col 60. */ - ADDRESS ISREDIT - "ISREDIT MACRO " - ADDRESS ISPEXEC, - "VGET (ZSCREEN ZSCREENC ZSCREENI) SHARED" -/* ZSCREENI = Substr(ZSCREENI,161) */ - C1Element = Word(ZSCREENI,1) - "EXCLUDE ALL" - "FIND 'PGM=' ALL " - "EXCLUDE P'@' 1 ALL " - "EXCLUDE ' ' 1 ALL " - "CHANGE p' ========' ' "C1Element"' 59 all nx" - Exit +/* REXX */ +/* Can be used as an edit macro when editing a PROCESS or INC */ +/* or JCL while in Quick-Edit or any ISPF edit session. */ +/* Just enter JCLCOMMT on the command line. */ +/* It gets the name of the element or member, */ +/* and places the name onto me onto each line that contains */ +/* 'PGM=' and is blank in col 60. */ + ADDRESS ISREDIT + "ISREDIT MACRO " + ADDRESS ISPEXEC, + "VGET (ZSCREEN ZSCREENC ZSCREENI) SHARED" +/* ZSCREENI = Substr(ZSCREENI,161) */ + C1Element = Word(ZSCREENI,1) + If C1Element = 'File' then, + Do + ADDRESS ISREDIT " (MEMBER) = MEMBER " ; + C1Element = MEMBER + End + "EXCLUDE ALL" + "FIND 'PGM=' ALL " + "EXCLUDE P'@' 1 ALL " + "EXCLUDE ' ' 1 ALL " + "CHANGE p' ========' ' "C1Element"' 59 all nx" + Exit diff --git a/endevor/Field-Developed-Programs/Package-Automation/#PSNFTPE.skl b/endevor/Field-Developed-Programs/Package-Automation/#PSNFTPE.skl new file mode 100644 index 0000000..c008af1 --- /dev/null +++ b/endevor/Field-Developed-Programs/Package-Automation/#PSNFTPE.skl @@ -0,0 +1,43 @@ +@REM ********************************************************** +@REM ************************************************* #PSNFTPE +@REM * CONTENTS: ENDEVOR/MVS - REMOTE EXECUTION OF THE AHJOB +@REM * TRANSMITTER: NETVIEW FILE TRANSFER PROGRAM +@REM * PURPOSE: SUBMIT ARJOB DATASET FOR EXECUTION VIA TSO +@REM * AT THE REMOTE SITE. +@REM ********************************************************** +//* ****************************************************************** +//* FRD JOBSTEP JCL TO SUBMIT JCL REMOTELY USING FTP +//* ENDEVOR DESTINATION &VNBLSDST +//* NODE NAME &NODENAME +//* ****************************************************************** +//*================================================================ +//* ****************************************************************** +//SUBFTP01 EXEC PGM=FTP,COND=(4,LT) #PSNFTPE +//ABNLIGNR DD DUMMY +//SYSPRINT DD SYSOUT=* +//SYSABEND DD SYSOUT=* +//NETRC DD DISP=SHR,DSN=&SYSUID..ENDEVOR.NETRC(SHIPPING) +//SYSOUT DD SYSOUT=* +//*UTPUT DD SYSOUT=* +//OUTPUT DD DSN=&&FTPOUT, +// DISP=(,PASS),SPACE=(TRK,(1,0)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//INPUT DD * +&NODENAME +SITE FILETYPE=JES + PUT '&AHJOBDSN' +STOP +QUIT +/* +//*---------------------------------------------------------- +//FTPSCAN EXEC PGM=IRXJCL,COND=(8,LE), #PSNFTPE +// PARM='UPDTTGGR &DESTID #PSNFTPE &PACKAGE' +//SYSEXEC DD DSN=YOURSITE.YOUR.NDVR.NODES1.CLSTREXX, +// DISP=SHR +// DD DSN=YOUR.NDVR.CSIQCLS0, +// DISP=SHR +//FTPOUT DD DSN=&&FTPOUT,DISP=(OLD,DELETE) +//OUTPUT DD SYSOUT=* #PSNFTPE +//SYSTSPRT DD SYSOUT=* +//*---------------------------------------------------------- diff --git a/endevor/Field-Developed-Programs/Package-Automation/BILDTGGR.rex b/endevor/Field-Developed-Programs/Package-Automation/BILDTGGR.rex index edc2cf9..854c268 100644 --- a/endevor/Field-Developed-Programs/Package-Automation/BILDTGGR.rex +++ b/endevor/Field-Developed-Programs/Package-Automation/BILDTGGR.rex @@ -1,754 +1,760 @@ -/* REXX */ -/* From Rules info, update Trigger file for each expected shipment */ - - /* If a DDNAME of BILDTGGR is allocated, then Trace */ - WhatDDName = 'BILDTGGR' - CALL BPXWDYN "INFO FI("WhatDDName")", - "INRTDSN(DSNVAR) INRDSNT(myDSNT)" - if Substr(DSNVAR,1,1) /= ' ' then TraceRc = 1; - IF TraceRc = 1 then Trace R - -/* Variable settings for each site ---> */ - /* Determine the DSORG for TriggerFileNAme */ - /* x = LISTDSI("'"TriggerFileName"'" RECALL ); */ - TriggerFileDsorg = 'PS' ; /* VS / PS .... */ - - WhereIam = WHERE@M1() - - interpret 'Call' WhereIam "'MyCLS2Library'" - MyCLS2Library = Result - Say 'Running BILDTGGR in' MyCLS2Library - - interpret 'Call' WhereIam "'TriggerFileName'" - TriggerFileName = Result - - interpret 'Call' WhereIam "'MyDATALibrary'" - MyDATALibrary = Result - ShipRules = MyDATALibrary"(SHIPRULE)" - - interpret 'Call' WhereIam "'MySEN2Library'" - MySEN2Library = Result -/* <---- Variable settings for each site */ - -/* */ -/* This Rexx creates Trigger entrires for a package just executed. */ -/* It is called by the Endevor exit program C1UEXT07 */ -/* */ -/* */ - STRING = "ALLOC DD(SYSTSPRT) SYSOUT(A) " - CALL BPXWDYN STRING; - - /* Do not allow the Trace to start until after the allocation - above for SYSTSPRT. - */ - - ARG Parms ; - -/* if called by zowe, then this is the Argument .... */ - If Length(Parms) < 18 then, - Do - Package = Translate(Parms,' ',"'") - Package = Strip(Package) - Say Length(Package) Package - End /* If Length(Parms) < 18 */ - Else - Do - /* if called by exit, then these are the Arguments.... */ - Notes.7 = Substr(PARMS,414,60) ; - If Substr(Notes.7,1,5) = 'TRACE' then Trace r - Package = Substr(PARMS,1,16) ; -/* No longer attempting to leverage promotion packages - Environ = Substr(PARMS,18,08) ; - pkgStage = Substr(PARMS,27,01) ; */ - CREATE_USER = Substr(PARMS,29,08) ; - UPDATE_USER = Substr(PARMS,37,08) ; - CAST_USER = Substr(PARMS,45,08) ; - Notes.1 = Substr(PARMS,054,60) ; - Notes.2 = Substr(PARMS,114,60) ; - Notes.3 = Substr(PARMS,174,60) ; - Notes.4 = Substr(PARMS,234,60) ; - Notes.5 = Substr(PARMS,294,60) ; - Notes.6 = Substr(PARMS,354,60) ; - Notes.7 = Substr(PARMS,414,60) ; - Notes.8 = Substr(PARMS,474,60) ; - ShipOutput = Substr(PARMS,584,03) ; - End /* Else */ - -/* TYPRUN = ' ' */ - - Userid = CAST_USER ; - MyRC = 0 ; - /* Intitialize a list of shipments for this package */ - Shipment_List = '' - - - /* Install Date 06 JUN 2013 15:22 */ - /* ----+----1----+----2----+----3-- */ - - rulSt = '_' - InstallDate = Word(Notes.8,5) ; - - If InstallDate = '' | Word(Notes.8,1) /= 'SHIP' then, - Do - InstallDate = DATE('S') - InstallTime = '0000' - rulSt = 'R' ; /* This Trigger file entry to be Reviewed */ - End - Else, - Do - InstallTime = Word(Notes.8,6) ; - InstallTime = Substr(Installtime,1,2) || Substr(Installtime,4) - ListMonths =, - "JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC" ; - mon = Substr(InstallDate,3,3) ; - mon#= Right(Wordpos(mon,ListMonths),2,'0') ; - year = Substr(InstallDate,6) - Century = '20' ; - day = Substr(InstallDate,1,2) ; - InstallDate = Century || year || mon# || day - End - - Call DateConvert ; - - /* Capture Content of Rules into Rexx Stem array format */ - Call AllocateandReadRules; - if TraceRc = 1 then Trace r - $rulHeading_Variable_count = Words($heading.SHIPRULE) - -/* Examine Package actions and */ -/* compare each against the Rules stem array data */ -/* make an entry into the ImmediateTrigger stem array */ -/* Do one of these: - Call APIALSUM_For_Package_Target_Info ; - -- or --- - Call CSV_to_List_Package_Actions - **Note CSV_to_List_Package_Actions has a timing problem - on the 18.0.12 release. The package shows it is not yet - Executed. Use APIALSUM_For_Package_Target_Info -*/ - - Call APIALSUM_For_Package_Target_Info ; - - sa = pkgEnvironment pkgStage - - If Words(Shipment_List) > 0 then, - Do - Call FreeTriggerFile ; - Say 'BILDTGGR: Found these destinations -' Shipment_List - Exit(1) - End -/* */ -/* All Done */ -/* */ - Exit(0) - -/* */ -/* Allocate the Rules member for Read only */ -/* */ - -AllocateandReadRules: - - If TraceRc = 1 then Say 'AllocateandReadRules+ ' - /* Call utility to get SHIPRULE details */ - /* Save ShipRule in stem array data */ - Call TBLUNLOD ShipRules "ALL" - - LastRecord.T#SYSTMS = 0 - /* Capture results from utility */ - qtotal = QUEUED() - Trace Off - - /* Capture contents of ShipRule table */ - Value.SHIPRULE = ' ' - Do q# = 1 to qtotal - Parse Pull something - If TraceRc = 1 then Say "Rules+" something - interpret something - End; - - Return ; - -/* */ -/* Convert Date formats */ -/* */ - -AllocateTriggerForMod: - - STRING = "ALLOC DD(TRIGGER)", - " DA('"TriggerFileName"') MOD REUSE" - seconds = '000005' /* Number of Seconds to wait if needed */ - - Do Forever /* or at least until the file is available */ - CALL BPXWDYN STRING; - MyResult = RESULT ; - If MyResult = 0 then Leave - Say 'BILDTGGR is waiting for' TriggerFileName - Call WaitAwhile - End /* Do Forever */ - - Return ; - -CreateNewTriggerEntry: - - If TraceRc = 1 then Say 'CreateNewTriggerEntry+ ' - If TraceRc = 1 then Trace r - Jobnumber = ' '; -/* Time = TIME() - Time = Substr(Time,1,2) || Substr(Time,4,2) */ - Time = rulTime ; - - Say 'My_BILDTGGR Creating new Trigger file Entry' - rulAdjustDate = Strip(rulAdjustDate,'L','+') ; - rulAdjustDate = Strip(rulAdjustDate) - #days = DATE('B') - #days = DATE('B',InstallDate,'S') ; - if rulAdjustDate < '0' then rulAdjustDate = '0' - #days = #days + rulAdjustDate ; - TriggerDate = DATE('S',#days,'B') ; - Date = DATE('S',#days,'B') ; - - Trigger = Copies(' ',400) ; - - $Heading_TriggerVar_count = WORDS($trigger_variables) ; - Do $pos = 1 to $Heading_TriggerVar_count - $HeadingVariable = Word($trigger_variables,$pos) ; - /* Build ...pos variables and values */ - - tmp = "Trigger = Overlay(", - $HeadingVariable",Trigger,"$HeadingVariable"pos)" - - Sa= tmp - Interpret tmp - end; /* DO $pos = 1 to $Heading_TriggerVar_count */ - - Sa= Trigger - - Push Trigger - - "EXECIO 1 DISKW TRIGGER (FINIS" - - Trace Off - Return ; - - -FreeTriggerFile: - - STRING = "FREE DD(TRIGGER)" - CALL BPXWDYN STRING; - - Return ; - -/* */ -/* Convert Date formats */ -/* */ - -DateConvert: - - /* Date may be in this format 6/15/2013 */ - tmpdate = Translate(InstallDate,' ','/') ; - If Wordlength(tmpdate,1) < '4' then do - InstallDatenumeric = Word(tmpdate,3) ||, - Right(Word(tmpdate,1),2,'0') ||, - Word(tmpdate,2) ; - end - else do - InstallDatenumeric = Word(tmpdate,1) || , - Word(tmpdate,2) ||, - Word(tmpdate,3) ; - end - Return - - if Substr(InstallDate,1,1) = '0' then - InstallDate = Substr(InstallDate,2) - MONTHSLISTUPPER = 'JAN FEB MAR APR MAY JUN JUL AUG SEP NOV DEC' - monthslistlower = 'Jan Feb Mar Apr May Jun Jul Aub Sep Nov Dec' - MONTHUPPER = Word(InstallDate,2) ; - pos = Wordpos(MONTHUPPER,MONTHSLISTUPPER) - monthlower = Word(monthslistlower,pos) ; - InstallDate = Word(InstallDate,1) monthlower Word(InstallDate,3) - - InstallDatenumeric = DATE(S,InstallDate) - Sa= InstallDate InstallDatenumeric - - Return - -WaitAwhile: - /* */ - /* A resource is unavailable. Wait awhile and try */ - /* accessing the resource again. */ - /* */ - /* The length of the wait is designated in the parameter */ - /* value which specifies a number of seconds. */ - /* A parameter value of '000003' causes a wait for 3 seconds. */ - /* */ - - seconds = Abs(seconds) - seconds = Trunc(seconds,0) - Say "Waiting for" seconds "seconds at " DATE(S) TIME() - - /* AOPBATCH and BPXWDYN are IBM programs */ - CALL BPXWDYN "ALLOC DD(STDOUT) DUMMY SHR REUSE" - CALL BPXWDYN "ALLOC DD(STDERR) DUMMY SHR REUSE" - CALL BPXWDYN "ALLOC DD(STDIN) DUMMY SHR REUSE" - - /* AOPBATCH and BPXWDYN are IBM programs */ - parm = "sleep "seconds - Address LINKMVS "AOPBATCH parm" - - Return - -InitializeValuesFromRules: - Sa= InitializeValuesFromRules - Do $pos = 1 to $rulHeading_Variable_count - $rulHeadingVariable = Word(Rul$table_variables,$pos) ; - $start = $rulStarting_$position.$rulHeadingVariable - $stop = $rulEnding_$position.$rulHeadingVariable - $len = $stop - $start + 1; - /* Assign values from the rules record */ - tmp = $rulHeadingVariable" =", - "Strip(Substr(rules.rul#,"$start","$len"))" - Sa= tmp - Sa= Value($rulHeadingVariable) - Interpret tmp - - end; /* DO $pos = 1 to $rulHeading_Variable_count */ - - Return ; - -Process_Trigger_Heading : - - "EXECIO 1 DISKR TRIGGER (Stem $tablerec. FINIS" -/* Get layout of TRIGGER file from heading */ - -/* The subroutine below is modified from the TBL#TOOL */ - - $tbl = 1 ; - $TableHeadingChar = '*' - - $LastWord = Word($tablerec.$tbl,Words($tablerec.$tbl)); - If DATATYPE($LastWord) = 'NUM' then, - Do - Say 'Please remove sequence numbers from the Table' - Exit(12) - End - - $tmprec = Substr($tablerec.$tbl,2) ; - $PositionSpclChar = POS('-',$tmprec) ; - If $PositionSpclChar = 0 then, - $PositionSpclChar = POS('*',$tmprec) ; - $tmpreplaces = '-,.'$TableHeadingChar ; - $tmprec = TRANSLATE($tmprec,' ',$tmpreplaces); - $table_variables = strip($tmprec); - $Heading_Variable_count = WORDS($table_variables) ; - If $Heading_Variable_count /=, - Words(Substr($tablerec.$tbl,2)) then, - Do - Say 'Invalid table Heading:' $tablerec.$tbl - exit(12) - End - - $heading = Overlay(' ',$tablerec.$tbl,1); /* Space leading * */ - Do $pos = 1 to $Heading_Variable_count - $HeadingVariable = Word($table_variables,$pos) ; - $tmp = Wordindex($Heading,$pos) ; - $Starting_$position.$HeadingVariable = $tmp - $tmp = $tmp + Length(Word($Heading,$pos)) -1 ; - $Ending_$position.$HeadingVariable = $tmp - - /* Build ...pos variables and values */ - tmp = ""$HeadingVariable"pos =", - $Starting_$position.$HeadingVariable - Sa= tmp - Interpret tmp - - end; /* DO $pos = 1 to $Heading_Variable_count */ - - $Heading = Translate($Heading,' ','-*') - $trigger_variables = $Heading - - Return ; - -APIALSUM_For_Package_Target_Info: - - SA= "GETTING CURRENT LOCATIONS FROM ENDEVOR" ; - - STRING = "ALLOC DD(BSTAPI) SYSOUT(A) " - CALL BPXWDYN STRING; - STRING = "ALLOC DD(BSTERR) SYSOUT(A) " - CALL BPXWDYN STRING; - STRING = "ALLOC DD(C1MSGS1) SYSOUT(A) " - CALL BPXWDYN STRING; - STRING = "ALLOC DD(C1MSGS2) SYSOUT(A) " - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(APILIST) LRECL(2048) BLKSIZE(22800) ", - " DSORG(PS) ", - " SPACE(5,5) RECFM(V,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(APIMSGS) LRECL(133) BLKSIZE(13300) ", - " DSORG(PS) ", - " SPACE(1,1) RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - /* Call the APIALSUM api program */ - ADDRESS LINKMVS 'APIALSUM' Package - CallRc = Rc; - If CallRc /= 0 then, - Do - parm = 'DDN:STEPLIB,APIALSUM,'Package - ADDRESS LINKMVS 'CONCALL' "parm" - End - - "EXECIO * DISKR APILIST (STEM pkglst. finis" - IF pkglst.0 = 0 then, - Do - Say 'Package' Package ' is not-found or not-CAST ' - Exit(8) - End; - - STRING = "FREE DD(BSTAPI)" - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTERR) " - CALL BPXWDYN STRING; - STRING = "FREE DD(C1MSGS1) " - CALL BPXWDYN STRING; - STRING = "FREE DD(C1MSGS2) " - CALL BPXWDYN STRING; - - sa= pkglst.1 - /* Get Target Endevor info */ - - Do api# = 1 to pkglst.0 - ALSUM_RS_TENV = Substr(pkglst.1,304,008) - pkgEnvironment = ALSUM_RS_TENV - If pkgEnvironment = ' ' then - Do - ALSUM_RS_SENV = Substr(pkglst.1,191,008) - ALSUM_RS_SSTGI= Substr(pkglst.1,234,001) - ALSUM_RS_SSYS = Substr(pkglst.1,199,008) - ALSUM_RS_SSBS = Substr(pkglst.1,207,008) - Sa= 'Messages from BILDTGGR:' - pkgEnvironment = ALSUM_RS_SENV - pkgStage = ALSUM_RS_SSTGI - pkgSystem = ALSUM_RS_SSYS - pkgSubsys = ALSUM_RS_SSBS - End - Else, - Do - ALSUM_RS_TSTGI= Substr(pkglst.1,347,001) - ALSUM_RS_TSYS = Substr(pkglst.1,312,008) - ALSUM_RS_TSBS = Substr(pkglst.1,320,008) - Sa= 'Messages from BILDTGGR:' - pkgEnvironment = ALSUM_RS_TENV - pkgStage = ALSUM_RS_TSTGI - pkgSystem = ALSUM_RS_TSYS - pkgSubsys = ALSUM_RS_TSBS - End - - ALSUM_RS_TTYP = Substr(pkglst.1,330,008) - RuleMatch = 'N' - Call DoesPkgMatchRule; - End; /* Do api# = 1 to pkglst.0 */ - - sa= pkglst.2 - sa= pkglst.3 - sa= pkglst.4 - - STRING = "FREE DD(APIMSGS)" - CALL BPXWDYN STRING; - STRING = "FREE DD(APILIST)" - CALL BPXWDYN STRING; - - Return ; - -CSV_to_List_Package_Actions: - - /* To Search the package shipping table, we need the Entry */ - /* Environment information as a search criteria. */ - /* Get it from the USER-DATA field on the 1st element. */ - - STRING = "ALLOC DD(C1MSGS1) DUMMY " - CALL BPXWDYN STRING; - STRING = "ALLOC DD(BSTERR) DUMMY " - CALL BPXWDYN STRING; - STRING = "ALLOC DD(BSTAPI) DUMMY " - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(EXTRACTM) LRECL(4000) BLKSIZE(32000) ", - " DSORG(PS) ", - " SPACE(1,5) RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(BSTIPT01) LRECL(80) BLKSIZE(800) ", - " DSORG(PS) ", - " SPACE(1,5) RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - QUEUE "LIST PACKAGE ACTION FROM PACKAGE '"Package"'" - QUEUE " TO DDNAME 'EXTRACTM' " - QUEUE " ." - - "EXECIO" QUEUED() "DISKW BSTIPT01 (FINIS "; - - ADDRESS LINK 'BC1PCSV0' ; /* load from authlib */ - -/* ADDRESS TSO 'ISRDDN' */ - call_rc = rc ; - - "EXECIO * DISKR EXTRACTM (STEM CSV. finis" - - STRING = "FREE DD(EXTRACTM)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTIPT01)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(C1MSGS1)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTERR)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTAPI)" ; - CALL BPXWDYN STRING; - /* To Search the package action data in CSV format. */ - /* Identify matches with Rules file, determining Ship Dests */ - - IF CSV.0 < 2 THEN RETURN; - - /* CSV data heading - showing CSV variables */ - $table_variables= Strip(CSV.1,'T') - - $table_variables = translate($table_variables,"_"," ") ; - $table_variables = translate($table_variables," ",',"') ; - $table_variables = translate($table_variables,"@","/") ; - $table_variables = translate($table_variables,"@",")") ; - $table_variables = translate($table_variables,"@","(") ; - - Do rec# = 2 to CSV.0 - $detail = CSV.rec# - Drop SBS_NAME_@T@ - - Trace Off - /* Parse the Detail record until done */ - Do $column = 1 to Words($table_variables) - Call ParseDetailCSVline - End - - If TraceRc = 1 then Trace r - IF Substr(ENV_NAME_@T@,1,1) = ' ' then, - Do - ENV_NAME_@T@ = ENV_NAME_@S@ ; - STG_#_@T@ = STG_#_@S@ ; - STG_NAME_@T@ = STG_NAME_@S@ ; - STG_ID_@T@ = STG_ID_@S@ ; - SYS_NAME_@T@ = SYS_NAME_@S@ ; - SBS_NAME_@T@ = SBS_NAME_@S@ ; - TYPE_NAME_@T@ = TYPE_NAME_@S@ - End - IF Substr(SBS_NAME_@T@,1,1) = ' ' then, - SBS_NAME_@T@ = SBS_NAME_@S@ ; - Say 'ELM='ELM_@S@, - 'ENV_NAME='ENV_NAME_@T@, - 'pkgStage='STG_#_@T@, - 'SYS_NAME='SYS_NAME_@T@, - 'SBS_NAME='SBS_NAME_@T@, - 'TYPE_NAME='TYPE_NAME_@S@, - 'ELM_ACT='ELM_ACT - pkgStage = STG_ID_@T@ - - If TraceRc = 1 then Trace r - Sa= 'Messages from BILDTGGR:' - pkgElement = ELM_@S@ - pkgEnvironment = ENV_NAME_@T@ - pkgStage = STG_ID_@T@ - pkgSystem = SYS_NAME_@T@ - pkgSubsys = SBS_NAME_@T@ - pkgType = TYPE_NAME_@T@ - Trace Off - RuleMatch = 'N' - Call DoesPkgMatchRule; -/* If Length(pkgStage) = 1 then leave; */ - End; /* Do rec# = 1 to CSV.0 */ - - RETURN ; - -DoesPkgMatchRule: - - If TraceRc = 1 then Say 'DoesPkgMatchRule+ ' - - Do rul# = 2 to LastRecord.SHIPRULE - - If TraceRc = 1 then TRACE R - Say 'BILDTGGR: Comparing pkg with rul#' rul# pkgElement, - pkgEnvironment pkgStage pkgSystem - - Drop Environment ; - rulEnvironment = Value.SHIPRULE.Environment.rul# - If TestMatch(pkgEnvironment,rulEnvironment) /= 1 then Iterate; - Environment = pkgEnvironment - - Drop Stage - rulStage = Value.SHIPRULE.Stage.rul# - If TestMatch(pkgStage,rulStage) /= 1 then Iterate; - Stage = pkgStage - - Drop System - rulSystem= Value.SHIPRULE.System.rul# - If TestMatch(pkgSystem,rulSystem) /= 1 then Iterate; - System = pkgSystem - - Drop Subsys - rulSubsys= Value.SHIPRULE.Subsys.rul# - If TestMatch(pkgSubsys,rulSubsys) /= 1 then Iterate; - Subsys = pkgSubsys - -/* - Drop Type - rulType = Value.SHIPRULE.Type.rul# - If TestMatch(pkgType,rulType) /= 1 then Iterate; - Type = pkgType - - Drop Element ElmPrefx - rulElmPrefx= Value.SHIPRULE.ElmPrefx.rul# - If TestMatch(pkgElement,rulElmPrefx) /= 1 then Iterate; - Element = pkgElement -*/ - - Drop Destination - newDestination= Value.SHIPRULE.Destination.rul# - If TraceRc = 1 then, - Say 'found newDestination=' newDestination - - if Length(newDestination) > 7 |, - Pos('.',newDestination) > 0 |, - Wordpos(newDestination,Shipment_List) > 0 then, - Iterate ; - - Shipment_List = newDestination Shipment_List - If TraceRc = 1 then, - Say 'Shipment_List =' Shipment_List - - /* If finding first destination for shipping */ - /* then, allocate Trigger file for DISP=MOD */ - If Words(Shipment_List) = 1 then, - Do - Call AllocateTriggerForMod - Call Process_Trigger_Heading - End - - Destination = newDestination - - Drop Date - rulAdjustDate = Value.SHIPRULE.Date.rul# - If TraceRc = 1 then, - Say 'found rulAdjustDate =' rulAdjustDate - Drop Time - rulTime = Value.SHIPRULE.Time.rul# - If TraceRc = 1 then, - Say 'found rulTime =' rulTime - - - /* Capture remaining values from Rules file .. */ - AlreadyAssigned =, - 'Environment Stage System Subsys ', - 'Type Destination Element Date Time ' - Do w# = 1 to Words($heading.SHIPRULE) - rulWord = Word($heading.SHIPRULE,w#) - If Wordpos(rulWord,AlreadyAssigned) > 0 then iterate; - tmp = "Drop" rulWord - interpret tmp - rulValue = Value(Value.SHIPRULE.rulWord.rul#) - If Substr(rulValue,1,15) = 'VALUE.SHIPRULE.' then, - rulValue = ' ' - tmp = rulWord "= '"rulValue"'" - If TraceRc = 1 then, - say 'From Rules+' tmp - interpret tmp - End - - /* Variables are now assigned values either from */ - /* the Endevor package or from the Rules File */ - Call CreateNewTriggerEntry - - If TraceRc = 1 then Trace r - /* If the package shipment can be done now.... */ - /* Set the return code to 1 .... */ - Drop Date - rulDate = Value.SHIPRULE.Date.rul# - if rulDate = ' ' | Length(rulDate) > 5 then, - rulDate = '+0' - if rulTime = ' ' | Length(rulTime) > 5 then, - rulTime = '0000' - If rulDate = '+0' & rulTime = '0000' then, - MyRC = 1 ; - - End; /* Do rul# = 2 to LastRecord.SHIPRULE */ - - RETURN ; - -TestMatch: - - Arg String,Mask ; - - If Mask = '*' then Return(1) - Mask = Strip(Mask,'T',"*") - lenMask = Length(Mask) - Return ABBREV(String,Mask) - -/* */ - -ParseDetailCSVline: - - /* Find the data for the current $column */ - - $dlmchar = Substr($detail,1,1); - - If $dlmchar = "'" then, - Do - SA= 'parsing with single quote ' - PARSE VAR $detail "'" $temp_value "'" $detail ; - If Substr($detail,1,1) = ',' then, - $detail = Strip(Substr($detail,2),'L') - End - Else, - If $dlmchar = '"' then, - Do - SA= 'parsing with double quote ' - PARSE VAR $detail '"' $temp_value '"' $detail ; - If Substr($detail,1,1) = ',' then, - $detail = Strip(Substr($detail,2),'L') - End - Else, - If $dlmchar = ',' then, - Do - SA= 'parsing with comma ' - PARSE VAR $detail ',' $temp_value ',' $detail ; - If Substr($detail,1,1)/= ',' then, - $detail = "," || $detail - $detail = Strip(Substr($detail,2),'L') */ - End - Else, - If Words($detail) = 0 then, - $temp_value = ' ' - Else, - Do - SA= 'parsing with comma ' - PARSE VAR $detail $temp_value ',' $detail ; - Sa= '$temp_value=>' $temp_value '<' - End - $temp_value = STRIP($temp_value) ; - $rslt = $temp_value - $rslt = Strip($rslt,'B','"') ; - $rslt = Strip($rslt,'B',"'") ; - if Length($rslt) < 1 then $rslt = ' ' - if Length($rslt) < 250 then, - $temp = WORD($table_variables,$column) '= "'$rslt'"'; - Else, - $temp = WORD($table_variables,$column) "=$rslt" - INTERPRET $temp; - If rec# < 3 then Say $temp - - RETURN ; - +/* REXX */ +/* */ +/* https://github.com/BroadcomMFD/broadcom-product-scripts */ +/* */ +/* This rexx is a called subroutine. */ +/* From data in SHIPRULE, BILDTGGR updates the Trigger file */ +/* for each expected shipment. PULLTGGR submits package ship jobs. */ +/* */ + + /* If a DDNAME of BILDTGGR is allocated, then Trace */ + WhatDDName = 'BILDTGGR' + CALL BPXWDYN "INFO FI("WhatDDName")", + "INRTDSN(DSNVAR) INRDSNT(myDSNT)" + if Substr(DSNVAR,1,1) /= ' ' then TraceRc = 1; + IF TraceRc = 1 then Trace R + +/* Variable settings for each site ---> */ + /* Determine the DSORG for TriggerFileNAme */ + /* x = LISTDSI("'"TriggerFileName"'" RECALL ); */ + TriggerFileDsorg = 'PS' ; /* VS / PS .... */ + + WhereIam = WHERE@M1() + + interpret 'Call' WhereIam "'MyCLS2Library'" + MyCLS2Library = Result + Say 'Running BILDTGGR in' MyCLS2Library + + interpret 'Call' WhereIam "'TriggerFileName'" + TriggerFileName = Result + + interpret 'Call' WhereIam "'MyDATALibrary'" + MyDATALibrary = Result + ShipRules = MyDATALibrary"(SHIPRULE)" + + interpret 'Call' WhereIam "'MySEN2Library'" + MySEN2Library = Result +/* <---- Variable settings for each site */ + +/* */ +/* This Rexx creates Trigger entrires for a package just executed. */ +/* It is called by the Endevor exit program C1UEXT07 */ +/* */ +/* */ + STRING = "ALLOC DD(SYSTSPRT) SYSOUT(A) " + CALL BPXWDYN STRING; + + /* Do not allow the Trace to start until after the allocation + above for SYSTSPRT. + */ + + ARG Parms ; + +/* if called by zowe, then this is the Argument .... */ + If Length(Parms) < 18 then, + Do + Package = Translate(Parms,' ',"'") + Package = Strip(Package) + Say Length(Package) Package + End /* If Length(Parms) < 18 */ + Else + Do + /* if called by exit, then these are the Arguments.... */ + Notes.7 = Substr(PARMS,414,60) ; + If Substr(Notes.7,1,5) = 'TRACE' then Trace r + Package = Substr(PARMS,1,16) ; +/* No longer attempting to leverage promotion packages + Environ = Substr(PARMS,18,08) ; + pkgStage = Substr(PARMS,27,01) ; */ + CREATE_USER = Substr(PARMS,29,08) ; + UPDATE_USER = Substr(PARMS,37,08) ; + CAST_USER = Substr(PARMS,45,08) ; + Notes.1 = Substr(PARMS,054,60) ; + Notes.2 = Substr(PARMS,114,60) ; + Notes.3 = Substr(PARMS,174,60) ; + Notes.4 = Substr(PARMS,234,60) ; + Notes.5 = Substr(PARMS,294,60) ; + Notes.6 = Substr(PARMS,354,60) ; + Notes.7 = Substr(PARMS,414,60) ; + Notes.8 = Substr(PARMS,474,60) ; + ShipOutput = Substr(PARMS,584,03) ; + End /* Else */ + +/* TYPRUN = ' ' */ + + Userid = CAST_USER ; + MyRC = 0 ; + /* Intitialize a list of shipments for this package */ + Shipment_List = '' + + + /* Install Date 06 JUN 2013 15:22 */ + /* ----+----1----+----2----+----3-- */ + + rulSt = '_' + InstallDate = Word(Notes.8,5) ; + + If InstallDate = '' | Word(Notes.8,1) /= 'SHIP' then, + Do + InstallDate = DATE('S') + InstallTime = '0000' + rulSt = 'R' ; /* This Trigger file entry to be Reviewed */ + End + Else, + Do + InstallTime = Word(Notes.8,6) ; + InstallTime = Substr(Installtime,1,2) || Substr(Installtime,4) + ListMonths =, + "JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC" ; + mon = Substr(InstallDate,3,3) ; + mon#= Right(Wordpos(mon,ListMonths),2,'0') ; + year = Substr(InstallDate,6) + Century = '20' ; + day = Substr(InstallDate,1,2) ; + InstallDate = Century || year || mon# || day + End + + Call DateConvert ; + + /* Capture Content of Rules into Rexx Stem array format */ + Call AllocateandReadRules; + if TraceRc = 1 then Trace r + $rulHeading_Variable_count = Words($heading.SHIPRULE) + +/* Examine Package actions and */ +/* compare each against the Rules stem array data */ +/* make an entry into the ImmediateTrigger stem array */ +/* Do one of these: + Call APIALSUM_For_Package_Target_Info ; + -- or --- + Call CSV_to_List_Package_Actions + **Note CSV_to_List_Package_Actions has a timing problem + on the 18.0.12 release. The package shows it is not yet + Executed. Use APIALSUM_For_Package_Target_Info +*/ + + Call CSV_to_List_Package_Actions ; + + sa = pkgEnvironment pkgStage + + If Words(Shipment_List) > 0 then, + Do + Call FreeTriggerFile ; + Say 'BILDTGGR: Found these destinations -' Shipment_List + Exit(1) + End +/* */ +/* All Done */ +/* */ + Exit(0) + +/* */ +/* Allocate the Rules member for Read only */ +/* */ + +AllocateandReadRules: + + If TraceRc = 1 then Say 'AllocateandReadRules+ ' + /* Call utility to get SHIPRULE details */ + /* Save ShipRule in stem array data */ + Call TBLUNLOD ShipRules "ALL" + + LastRecord.T#SYSTMS = 0 + /* Capture results from utility */ + qtotal = QUEUED() + Trace Off + + /* Capture contents of ShipRule table */ + Value.SHIPRULE = ' ' + Do q# = 1 to qtotal + Parse Pull something + If TraceRc = 1 then Say "Rules+" something + interpret something + End; + + Return ; + +/* */ +/* Convert Date formats */ +/* */ + +AllocateTriggerForMod: + + STRING = "ALLOC DD(TRIGGER)", + " DA('"TriggerFileName"') MOD REUSE" + seconds = '000005' /* Number of Seconds to wait if needed */ + + Do Forever /* or at least until the file is available */ + CALL BPXWDYN STRING; + MyResult = RESULT ; + If MyResult = 0 then Leave + Say 'BILDTGGR is waiting for' TriggerFileName + Call WaitAwhile + End /* Do Forever */ + + Return ; + +CreateNewTriggerEntry: + + If TraceRc = 1 then Say 'CreateNewTriggerEntry+ ' + If TraceRc = 1 then Trace r + Jobnumb = ' '; +/* Time = TIME() + Time = Substr(Time,1,2) || Substr(Time,4,2) */ + Time = rulTime ; + + Say 'My_BILDTGGR Creating new Trigger file Entry' + rulAdjustDate = Strip(rulAdjustDate,'L','+') ; + rulAdjustDate = Strip(rulAdjustDate) + #days = DATE('B') + #days = DATE('B',InstallDate,'S') ; + if rulAdjustDate < '0' then rulAdjustDate = '0' + #days = #days + rulAdjustDate ; + TriggerDate = DATE('S',#days,'B') ; + Date = DATE('S',#days,'B') ; + + Trigger = Copies(' ',400) ; + + $Heading_TriggerVar_count = WORDS($trigger_variables) ; + Do $pos = 1 to $Heading_TriggerVar_count + $HeadingVariable = Word($trigger_variables,$pos) ; + /* Build ...pos variables and values */ + + tmp = "Trigger = Overlay(", + $HeadingVariable",Trigger,"$HeadingVariable"pos)" + + Sa= tmp + Interpret tmp + end; /* DO $pos = 1 to $Heading_TriggerVar_count */ + + Sa= Trigger + + Push Trigger + + "EXECIO 1 DISKW TRIGGER (FINIS" + + Trace Off + Return ; + + +FreeTriggerFile: + + STRING = "FREE DD(TRIGGER)" + CALL BPXWDYN STRING; + + Return ; + +/* */ +/* Convert Date formats */ +/* */ + +DateConvert: + + /* Date may be in this format 6/15/2013 */ + tmpdate = Translate(InstallDate,' ','/') ; + If Wordlength(tmpdate,1) < '4' then do + InstallDatenumeric = Word(tmpdate,3) ||, + Right(Word(tmpdate,1),2,'0') ||, + Word(tmpdate,2) ; + end + else do + InstallDatenumeric = Word(tmpdate,1) || , + Word(tmpdate,2) ||, + Word(tmpdate,3) ; + end + Return + + if Substr(InstallDate,1,1) = '0' then + InstallDate = Substr(InstallDate,2) + MONTHSLISTUPPER = 'JAN FEB MAR APR MAY JUN JUL AUG SEP NOV DEC' + monthslistlower = 'Jan Feb Mar Apr May Jun Jul Aub Sep Nov Dec' + MONTHUPPER = Word(InstallDate,2) ; + pos = Wordpos(MONTHUPPER,MONTHSLISTUPPER) + monthlower = Word(monthslistlower,pos) ; + InstallDate = Word(InstallDate,1) monthlower Word(InstallDate,3) + + InstallDatenumeric = DATE(S,InstallDate) + Sa= InstallDate InstallDatenumeric + + Return + +WaitAwhile: + /* */ + /* A resource is unavailable. Wait awhile and try */ + /* accessing the resource again. */ + /* */ + /* The length of the wait is designated in the parameter */ + /* value which specifies a number of seconds. */ + /* A parameter value of '000003' causes a wait for 3 seconds. */ + /* */ + + seconds = Abs(seconds) + seconds = Trunc(seconds,0) + Say "Waiting for" seconds "seconds at " DATE(S) TIME() + + /* AOPBATCH and BPXWDYN are IBM programs */ + CALL BPXWDYN "ALLOC DD(STDOUT) DUMMY SHR REUSE" + CALL BPXWDYN "ALLOC DD(STDERR) DUMMY SHR REUSE" + CALL BPXWDYN "ALLOC DD(STDIN) DUMMY SHR REUSE" + + /* AOPBATCH and BPXWDYN are IBM programs */ + parm = "sleep "seconds + Address LINKMVS "AOPBATCH parm" + + Return + +InitializeValuesFromRules: + Sa= InitializeValuesFromRules + Do $pos = 1 to $rulHeading_Variable_count + $rulHeadingVariable = Word(Rul$table_variables,$pos) ; + $start = $rulStarting_$position.$rulHeadingVariable + $stop = $rulEnding_$position.$rulHeadingVariable + $len = $stop - $start + 1; + /* Assign values from the rules record */ + tmp = $rulHeadingVariable" =", + "Strip(Substr(rules.rul#,"$start","$len"))" + Sa= tmp + Sa= Value($rulHeadingVariable) + Interpret tmp + + end; /* DO $pos = 1 to $rulHeading_Variable_count */ + + Return ; + +Process_Trigger_Heading : + + "EXECIO 1 DISKR TRIGGER (Stem $tablerec. FINIS" +/* Get layout of TRIGGER file from heading */ + +/* The subroutine below is modified from the TBL#TOOL */ + + $tbl = 1 ; + $TableHeadingChar = '*' + + $LastWord = Word($tablerec.$tbl,Words($tablerec.$tbl)); + If DATATYPE($LastWord) = 'NUM' then, + Do + Say 'Please remove sequence numbers from the Table' + Exit(12) + End + + $tmprec = Substr($tablerec.$tbl,2) ; + $PositionSpclChar = POS('-',$tmprec) ; + If $PositionSpclChar = 0 then, + $PositionSpclChar = POS('*',$tmprec) ; + $tmpreplaces = '-,.'$TableHeadingChar ; + $tmprec = TRANSLATE($tmprec,' ',$tmpreplaces); + $table_variables = strip($tmprec); + $Heading_Variable_count = WORDS($table_variables) ; + If $Heading_Variable_count /=, + Words(Substr($tablerec.$tbl,2)) then, + Do + Say 'Invalid table Heading:' $tablerec.$tbl + exit(12) + End + + $heading = Overlay(' ',$tablerec.$tbl,1); /* Space leading * */ + Do $pos = 1 to $Heading_Variable_count + $HeadingVariable = Word($table_variables,$pos) ; + $tmp = Wordindex($Heading,$pos) ; + $Starting_$position.$HeadingVariable = $tmp + $tmp = $tmp + Length(Word($Heading,$pos)) -1 ; + $Ending_$position.$HeadingVariable = $tmp + + /* Build ...pos variables and values */ + tmp = ""$HeadingVariable"pos =", + $Starting_$position.$HeadingVariable + Sa= tmp + Interpret tmp + + end; /* DO $pos = 1 to $Heading_Variable_count */ + + $Heading = Translate($Heading,' ','-*') + $trigger_variables = $Heading + + Return ; + +APIALSUM_For_Package_Target_Info: + + SA= "GETTING CURRENT LOCATIONS FROM ENDEVOR" ; + + STRING = "ALLOC DD(BSTAPI) SYSOUT(A) " + CALL BPXWDYN STRING; + STRING = "ALLOC DD(BSTERR) SYSOUT(A) " + CALL BPXWDYN STRING; + STRING = "ALLOC DD(C1MSGS1) SYSOUT(A) " + CALL BPXWDYN STRING; + STRING = "ALLOC DD(C1MSGS2) SYSOUT(A) " + CALL BPXWDYN STRING; + + STRING = "ALLOC DD(APILIST) LRECL(2048) BLKSIZE(22800) ", + " DSORG(PS) ", + " SPACE(5,5) RECFM(V,B) TRACKS ", + " NEW UNCATALOG REUSE "; + CALL BPXWDYN STRING; + + STRING = "ALLOC DD(APIMSGS) LRECL(133) BLKSIZE(13300) ", + " DSORG(PS) ", + " SPACE(1,1) RECFM(F,B) TRACKS ", + " NEW UNCATALOG REUSE "; + CALL BPXWDYN STRING; + + /* Call the APIALSUM api program */ + ADDRESS LINKMVS 'APIALSUM' Package + CallRc = Rc; + If CallRc /= 0 then, + Do + parm = 'DDN:STEPLIB,APIALSUM,'Package + ADDRESS LINKMVS 'CONCALL' "parm" + End + + "EXECIO * DISKR APILIST (STEM pkglst. finis" + IF pkglst.0 = 0 then, + Do + Say 'Package' Package ' is not-found or not-CAST ' + Exit(8) + End; + + STRING = "FREE DD(BSTAPI)" + CALL BPXWDYN STRING; + STRING = "FREE DD(BSTERR) " + CALL BPXWDYN STRING; + STRING = "FREE DD(C1MSGS1) " + CALL BPXWDYN STRING; + STRING = "FREE DD(C1MSGS2) " + CALL BPXWDYN STRING; + + sa= pkglst.1 + /* Get Target Endevor info */ + + Do api# = 1 to pkglst.0 + ALSUM_RS_TENV = Substr(pkglst.1,304,008) + pkgEnvironment = ALSUM_RS_TENV + If pkgEnvironment = ' ' then + Do + ALSUM_RS_SENV = Substr(pkglst.1,191,008) + ALSUM_RS_SSTGI= Substr(pkglst.1,234,001) + ALSUM_RS_SSYS = Substr(pkglst.1,199,008) + ALSUM_RS_SSBS = Substr(pkglst.1,207,008) + Sa= 'Messages from BILDTGGR:' + pkgEnvironment = ALSUM_RS_SENV + pkgStage = ALSUM_RS_SSTGI + pkgSystem = ALSUM_RS_SSYS + pkgSubsys = ALSUM_RS_SSBS + End + Else, + Do + ALSUM_RS_TSTGI= Substr(pkglst.1,347,001) + ALSUM_RS_TSYS = Substr(pkglst.1,312,008) + ALSUM_RS_TSBS = Substr(pkglst.1,320,008) + Sa= 'Messages from BILDTGGR:' + pkgEnvironment = ALSUM_RS_TENV + pkgStage = ALSUM_RS_TSTGI + pkgSystem = ALSUM_RS_TSYS + pkgSubsys = ALSUM_RS_TSBS + End + + ALSUM_RS_TTYP = Substr(pkglst.1,330,008) + RuleMatch = 'N' + Call DoesPkgMatchRule; + End; /* Do api# = 1 to pkglst.0 */ + + sa= pkglst.2 + sa= pkglst.3 + sa= pkglst.4 + + STRING = "FREE DD(APIMSGS)" + CALL BPXWDYN STRING; + STRING = "FREE DD(APILIST)" + CALL BPXWDYN STRING; + + Return ; + +CSV_to_List_Package_Actions: + + /* To Search the package shipping table, we need the Entry */ + /* Environment information as a search criteria. */ + /* Get it from the USER-DATA field on the 1st element. */ + + STRING = "ALLOC DD(C1MSGS1) DUMMY " + CALL BPXWDYN STRING; + STRING = "ALLOC DD(BSTERR) DUMMY " + CALL BPXWDYN STRING; + STRING = "ALLOC DD(BSTAPI) DUMMY " + CALL BPXWDYN STRING; + + STRING = "ALLOC DD(EXTRACTM) LRECL(4000) BLKSIZE(32000) ", + " DSORG(PS) ", + " SPACE(1,5) RECFM(F,B) TRACKS ", + " NEW UNCATALOG REUSE "; + CALL BPXWDYN STRING; + + STRING = "ALLOC DD(BSTIPT01) LRECL(80) BLKSIZE(800) ", + " DSORG(PS) ", + " SPACE(1,5) RECFM(F,B) TRACKS ", + " NEW UNCATALOG REUSE "; + CALL BPXWDYN STRING; + + QUEUE "LIST PACKAGE ACTION FROM PACKAGE '"Package"'" + QUEUE " TO DDNAME 'EXTRACTM' " + QUEUE " ." + + "EXECIO" QUEUED() "DISKW BSTIPT01 (FINIS "; + + ADDRESS LINK 'BC1PCSV0' ; /* load from authlib */ + +/* ADDRESS TSO 'ISRDDN' */ + call_rc = rc ; + + "EXECIO * DISKR EXTRACTM (STEM CSV. finis" + + STRING = "FREE DD(EXTRACTM)" ; + CALL BPXWDYN STRING; + STRING = "FREE DD(BSTIPT01)" ; + CALL BPXWDYN STRING; + STRING = "FREE DD(C1MSGS1)" ; + CALL BPXWDYN STRING; + STRING = "FREE DD(BSTERR)" ; + CALL BPXWDYN STRING; + STRING = "FREE DD(BSTAPI)" ; + CALL BPXWDYN STRING; + /* To Search the package action data in CSV format. */ + /* Identify matches with Rules file, determining Ship Dests */ + + IF CSV.0 < 2 THEN RETURN; + + /* CSV data heading - showing CSV variables */ + $table_variables= Strip(CSV.1,'T') + + $table_variables = translate($table_variables,"_"," ") ; + $table_variables = translate($table_variables," ",',"') ; + $table_variables = translate($table_variables,"@","/") ; + $table_variables = translate($table_variables,"@",")") ; + $table_variables = translate($table_variables,"@","(") ; + + Do rec# = 2 to CSV.0 + $detail = CSV.rec# + Drop SBS_NAME_@T@ + + Trace Off + /* Parse the Detail record until done */ + Do $column = 1 to Words($table_variables) + Call ParseDetailCSVline + End + + If TraceRc = 1 then Trace r + IF Substr(ENV_NAME_@T@,1,1) = ' ' then, + Do + ENV_NAME_@T@ = ENV_NAME_@S@ ; + STG_#_@T@ = STG_#_@S@ ; + STG_NAME_@T@ = STG_NAME_@S@ ; + STG_ID_@T@ = STG_ID_@S@ ; + SYS_NAME_@T@ = SYS_NAME_@S@ ; + SBS_NAME_@T@ = SBS_NAME_@S@ ; + TYPE_NAME_@T@ = TYPE_NAME_@S@ + End + IF Substr(SBS_NAME_@T@,1,1) = ' ' then, + SBS_NAME_@T@ = SBS_NAME_@S@ ; + Say 'ELM='ELM_@S@, + 'ENV_NAME='ENV_NAME_@T@, + 'pkgStage='STG_#_@T@, + 'SYS_NAME='SYS_NAME_@T@, + 'SBS_NAME='SBS_NAME_@T@, + 'TYPE_NAME='TYPE_NAME_@S@, + 'ELM_ACT='ELM_ACT + pkgStage = STG_ID_@T@ + + If TraceRc = 1 then Trace r + Sa= 'Messages from BILDTGGR:' + pkgElement = ELM_@S@ + pkgEnvironment = ENV_NAME_@T@ + pkgStage = STG_ID_@T@ + pkgSystem = SYS_NAME_@T@ + pkgSubsys = SBS_NAME_@T@ + pkgType = TYPE_NAME_@T@ + Trace Off + RuleMatch = 'N' + Call DoesPkgMatchRule; +/* If Length(pkgStage) = 1 then leave; */ + End; /* Do rec# = 1 to CSV.0 */ + + RETURN ; + +DoesPkgMatchRule: + + If TraceRc = 1 then Say 'DoesPkgMatchRule+ ' + + Do rul# = 2 to LastRecord.SHIPRULE + + If TraceRc = 1 then TRACE R + Say 'BILDTGGR: Comparing pkg with rul#' rul# pkgElement, + pkgEnvironment pkgStage pkgSystem + + Drop Environment ; + rulEnvironment = Value.SHIPRULE.Environment.rul# + If TestMatch(pkgEnvironment,rulEnvironment) /= 1 then Iterate; + Environment = pkgEnvironment + + Drop Stage + rulStage = Value.SHIPRULE.Stage.rul# + If TestMatch(pkgStage,rulStage) /= 1 then Iterate; + Stage = pkgStage + + Drop System + rulSystem= Value.SHIPRULE.System.rul# + If TestMatch(pkgSystem,rulSystem) /= 1 then Iterate; + System = pkgSystem + + Drop Subsys + rulSubsys= Value.SHIPRULE.Subsys.rul# + If TestMatch(pkgSubsys,rulSubsys) /= 1 then Iterate; + Subsys = pkgSubsys + +/* + Drop Type + rulType = Value.SHIPRULE.Type.rul# + If TestMatch(pkgType,rulType) /= 1 then Iterate; + Type = pkgType + + Drop Element ElmPrefx + rulElmPrefx= Value.SHIPRULE.ElmPrefx.rul# + If TestMatch(pkgElement,rulElmPrefx) /= 1 then Iterate; + Element = pkgElement +*/ + + Drop Destination + newDestination= Value.SHIPRULE.Destination.rul# + If TraceRc = 1 then, + Say 'found newDestination=' newDestination + + if Length(newDestination) > 7 |, + Pos('.',newDestination) > 0 |, + Wordpos(newDestination,Shipment_List) > 0 then, + Iterate ; + + Shipment_List = newDestination Shipment_List + If TraceRc = 1 then, + Say 'Shipment_List =' Shipment_List + + /* If finding first destination for shipping */ + /* then, allocate Trigger file for DISP=MOD */ + If Words(Shipment_List) = 1 then, + Do + Call AllocateTriggerForMod + Call Process_Trigger_Heading + End + + Destination = newDestination + + Drop Date + rulAdjustDate = Value.SHIPRULE.Date.rul# + If TraceRc = 1 then, + Say 'found rulAdjustDate =' rulAdjustDate + Drop Time + rulTime = Value.SHIPRULE.Time.rul# + If TraceRc = 1 then, + Say 'found rulTime =' rulTime + + + /* Capture remaining values from Rules file .. */ + AlreadyAssigned =, + 'Environment Stage System Subsys ', + 'Type Destination Element Date Time ' + Do w# = 1 to Words($heading.SHIPRULE) + rulWord = Word($heading.SHIPRULE,w#) + If Wordpos(rulWord,AlreadyAssigned) > 0 then iterate; + tmp = "Drop" rulWord + interpret tmp + rulValue = Value(Value.SHIPRULE.rulWord.rul#) + If Substr(rulValue,1,15) = 'VALUE.SHIPRULE.' then, + rulValue = ' ' + tmp = rulWord "= '"rulValue"'" + If TraceRc = 1 then, + say 'From Rules+' tmp + interpret tmp + End + + /* Variables are now assigned values either from */ + /* the Endevor package or from the Rules File */ + Call CreateNewTriggerEntry + + If TraceRc = 1 then Trace r + /* If the package shipment can be done now.... */ + /* Set the return code to 1 .... */ + Drop Date + rulDate = Value.SHIPRULE.Date.rul# + if rulDate = ' ' | Length(rulDate) > 5 then, + rulDate = '+0' + if rulTime = ' ' | Length(rulTime) > 5 then, + rulTime = '0000' + If rulDate = '+0' & rulTime = '0000' then, + MyRC = 1 ; + + End; /* Do rul# = 2 to LastRecord.SHIPRULE */ + + RETURN ; + +TestMatch: + + Arg String,Mask ; + + If Mask = '*' then Return(1) + Mask = Strip(Mask,'T',"*") + lenMask = Length(Mask) + Return ABBREV(String,Mask) + +/* */ + +ParseDetailCSVline: + + /* Find the data for the current $column */ + + $dlmchar = Substr($detail,1,1); + + If $dlmchar = "'" then, + Do + SA= 'parsing with single quote ' + PARSE VAR $detail "'" $temp_value "'" $detail ; + If Substr($detail,1,1) = ',' then, + $detail = Strip(Substr($detail,2),'L') + End + Else, + If $dlmchar = '"' then, + Do + SA= 'parsing with double quote ' + PARSE VAR $detail '"' $temp_value '"' $detail ; + If Substr($detail,1,1) = ',' then, + $detail = Strip(Substr($detail,2),'L') + End + Else, + If $dlmchar = ',' then, + Do + SA= 'parsing with comma ' + PARSE VAR $detail ',' $temp_value ',' $detail ; + If Substr($detail,1,1)/= ',' then, + $detail = "," || $detail + $detail = Strip(Substr($detail,2),'L') */ + End + Else, + If Words($detail) = 0 then, + $temp_value = ' ' + Else, + Do + SA= 'parsing with comma ' + PARSE VAR $detail $temp_value ',' $detail ; + Sa= '$temp_value=>' $temp_value '<' + End + $temp_value = STRIP($temp_value) ; + $rslt = $temp_value + $rslt = Strip($rslt,'B','"') ; + $rslt = Strip($rslt,'B',"'") ; + if Length($rslt) < 1 then $rslt = ' ' + if Length($rslt) < 250 then, + $temp = WORD($table_variables,$column) '= "'$rslt'"'; + Else, + $temp = WORD($table_variables,$column) "=$rslt" + INTERPRET $temp; + If rec# < 3 then Say $temp + + RETURN ; + diff --git a/endevor/Field-Developed-Programs/Package-Automation/C1UEXSHP.asm b/endevor/Field-Developed-Programs/Package-Automation/C1UEXSHP.asm index cdf3402..b9920e7 100644 --- a/endevor/Field-Developed-Programs/Package-Automation/C1UEXSHP.asm +++ b/endevor/Field-Developed-Programs/Package-Automation/C1UEXSHP.asm @@ -1,324 +1,325 @@ -C1UEXSHP TITLE 'ENDEVOR/MVS Package Shipping Exit' -*********************************************************************** -* DESCRIPTION: THIS PACKAGE EXIT PROGRAM WILL EXTRACT * -* call the rexx program PKGESHIP to support * -* automated package shipping submissions. * -* * -* SETUP THE SETUP ROUTINE ENABLES THIS PROGRAM * -* AT THE FOLLOWING EXIT POINTS: * -* * -* =====> 1. POST Execute * -* 2. POST Backout * -* 2. POST Backin * -* * -* * -* REGISTERS ON ENTRY: * -* * -* 0(R1) --> $PECBDS EXIT CONTROL BLOCK * -* 4(R1) --> $PREQPDS EXIT REQUEST BLOCK * -* 8(R1) --> $PHDRDS EXIT HEADER BLOCK * -* 12(R1) --> $PFILDS EXIT FILE BLOCK * -* 16(R1) --> $PACTREQ EXIT ACT SUMMARY REQUEST * -* 24(R1) --> $PBODREQ EXIT BACKOUT REQUEST * -* * -* REGISTER USAGE: * -* * -* R6 -> $PECBDS * -* R7 -> $PREQPDS * -* R8 -> WORKAREA * -* R9 -> $PHDRDS * -* R12 -> BASE PROGRAM * -* R13 -> STACK USED FOR STANDARD IBM USAGE * -* * -* * -*********************************************************************** -* PACKAGE EXIT CONTROL BLOCK * -*********************************************************************** - $PECBDS -*********************************************************************** -* PACKAGE EXIT REQUEST BLOCK * -*********************************************************************** - $PREQPDS -*********************************************************************** -* PACKAGE EXIT HEADER BLOCK * -*********************************************************************** - $PHDRDS -*********************************************************************** -* REGISTER EQUATES * -*********************************************************************** -* -R0 EQU 0 -R1 EQU 1 -R2 EQU 2 -R3 EQU 3 -R4 EQU 4 -R5 EQU 5 -R6 EQU 6 -R7 EQU 7 -R8 EQU 8 -R9 EQU 9 -R10 EQU 10 -R11 EQU 11 -R12 EQU 12 -R13 EQU 13 -R14 EQU 14 -R15 EQU 15 -* -*********************************************************************** -* THIS PROGRAM'S WORKAREA MAP * -*********************************************************************** -WORKAREA DSECT -* -SAVEAREA DS 18F primary function's save-area -* +C1UEXSHP TITLE 'ENDEVOR/MVS Package Shipping Exit' +*********************************************************************** +* DESCRIPTION: THIS PACKAGE EXIT PROGRAM * +* calls the rexx program PKGESHIP to support * +* automated package shipping submissions. * +* (Automated Package Executions not supported) * +* * +* SETUP THE SETUP ROUTINE ENABLES THIS PROGRAM * +* AT THE FOLLOWING EXIT POINTS: * +* * +* =====> 1. POST Execute * +* 2. POST Backout * +* 2. POST Backin * +* * +* * +* REGISTERS ON ENTRY: * +* * +* 0(R1) --> $PECBDS EXIT CONTROL BLOCK * +* 4(R1) --> $PREQPDS EXIT REQUEST BLOCK * +* 8(R1) --> $PHDRDS EXIT HEADER BLOCK * +* 12(R1) --> $PFILDS EXIT FILE BLOCK * +* 16(R1) --> $PACTREQ EXIT ACT SUMMARY REQUEST * +* 24(R1) --> $PBODREQ EXIT BACKOUT REQUEST * +* * +* REGISTER USAGE: * +* * +* R6 -> $PECBDS * +* R7 -> $PREQPDS * +* R8 -> WORKAREA * +* R9 -> $PHDRDS * +* R12 -> BASE PROGRAM * +* R13 -> STACK USED FOR STANDARD IBM USAGE * +* * +* * +*********************************************************************** +* PACKAGE EXIT CONTROL BLOCK * +*********************************************************************** + $PECBDS +*********************************************************************** +* PACKAGE EXIT REQUEST BLOCK * +*********************************************************************** + $PREQPDS +*********************************************************************** +* PACKAGE EXIT HEADER BLOCK * +*********************************************************************** + $PHDRDS +*********************************************************************** +* REGISTER EQUATES * +*********************************************************************** +* +R0 EQU 0 +R1 EQU 1 +R2 EQU 2 +R3 EQU 3 +R4 EQU 4 +R5 EQU 5 +R6 EQU 6 +R7 EQU 7 +R8 EQU 8 +R9 EQU 9 +R10 EQU 10 +R11 EQU 11 +R12 EQU 12 +R13 EQU 13 +R14 EQU 14 +R15 EQU 15 +* +*********************************************************************** +* THIS PROGRAM'S WORKAREA MAP * +*********************************************************************** +WORKAREA DSECT +* +SAVEAREA DS 18F primary function's save-area +* DYNPARMS DS 6F 01110000 -* -REXXPRMS DS 0H Parameters passed to the REXX PKGESHIP -REX#LEN DS H Parms Length -REX#PGM DS CL08 Name of Rexx program called -REX#SP1 DS CL1 space -REX#PKG DS CL16 Package id -REX#SP2 DS CL1 space -REX#ENV DS CL08 Promotion Environment -REX#SP3 DS CL1 space -REX#STG DS CL1 Promotion Stgid -REX#SP4 DS CL1 space -*EX#COMM DS CL50 Package Comment -REX#CRUS DS CL08 Package create userid -REX#UPUS DS CL08 Package update userid -REX#CAUR DS CL08 Package Cast userid -REX#SP5 DS CL1 space -REX#NOT1 DS CL60 Package Notes line #1 -REX#NOT2 DS CL60 Package Notes line #2 -REX#NOT3 DS CL60 Package Notes line #3 -REX#NOT4 DS CL60 Package Notes line #4 -REX#NOT5 DS CL60 Package Notes line #5 -REX#NOT6 DS CL60 Package Notes line #6 -REX#NOT7 DS CL60 Package Notes line #7 -REX#NOT8 DS CL60 Package Notes line #8 -REX#OUT DS CL03 Package shipment output option -REXPRLN EQU *-REXXPRMS -* - DS CL10 -* -WORKLN EQU *-WORKAREA - TITLE 'C1UEXSHP: Automated Shipments' -*********************************************************************** -* MAINLINE LOGIC * -*********************************************************************** -C1UEXSHP CSECT -C1UEXSHP AMODE 31 -C1UEXSHP RMODE ANY - SAVE (14,12),,'PKG Shipment Exit' SAVE CALLERS REG 12(13) - LR R12,R15 POINT TO THIS PROGRAM - USING C1UEXSHP,R12 - L R6,0(,R1) POINT TO THE $PECBDS - USING $PECBDS,R6 - L R7,4(,R1) POINT TO THE $PREQPDS - USING $PREQPDS,R7 - L R9,8(,R1) POINT TO THE $PHDRDS - USING $PHDRDS,R9 -*********************************************************************** -* GET STORAGE FOR SAVEAREA * -*********************************************************************** - L R0,=A(WORKLN) GET SIZE OF W.A - GETMAIN R,LV=(0),LOC=BELOW GET WORKING STORAGE - LR R2,R1 SAVE REG 1 - LR R14,R2 ADDR OF OUR LOCAL WORKAREA - ICM R15,B'1111',=A(WORKLN) IT'S SIZE - SLR R1,R1 - MVCL R14,R0 INITIALIZE IT -* - ST R2,8(R13) STORE NEW STACK +8(OLD) - ST R13,4(R2) STORE OLD STACK +4(NEW) - LR R13,R2 POINT R13 TO OUR STACK - LR R8,R2 - USING WORKAREA,R8 -*********************************************************************** -* CHECK FOR SETUP CALL * -*********************************************************************** - CLC PECBFNNM,=CL8'SETUP' ARE WE AT SETUP - BNE MAIN0010 NO GO CHECK FOR FUNCTION -********************************************************************** -* ENABLE THE EXIT POINTS FOR THIS PROGRAM * -* * -* * -* THE FOLLOWING FIELDS ARE USED EXCLUSIVELY DURING SETUP PROCESSING.* -* THE USER EXIT SHOULD MODIFY THESE FIELDS TO ENABLE EXIT POINTS. * -* THIS SETUP IS DONE ONCE PER ENDEVOR SESSION. * -* THE DEFAULT IS 'N'. TO ENABLE SET FIELD TO 'Y'. * -* * -********************************************************************** -* -SETUP DS 0H - MVI PECBEXBE,C'Y' ENABLE AFTER Execute - MVI PECBBOBE,C'Y' ENABLE AFTER Backout - MVI PECBBIBE,C'Y' ENABLE AFTER Backin -* - MVI PECBCAMD,C'Y' MID CAST - MVI PECBCAAF,C'Y' AFTER CAST - MVI PECBCABE,C'Y' Before CAST -* -* Before Package create - MVI PECBCBBE,C'Y' Before create/build - MVI PECBCCBE,C'Y' Before create/copy - MVI PECBCEBE,C'Y' Before create/edit - MVI PECBCIBE,C'Y' Before create/import -* -* Package modify actions - MVI PECBMBBE,C'Y' MODIFY / BUILD EXIT - MVI PECBMCBE,C'Y' MODIFY / COPY EXIT - MVI PECBMEBE,C'Y' MODIFY / EDIT EXIT - MVI PECBMIBE,C'Y' MODIFY / IMPORT EXIT - MVI PECBMBAF,C'Y' MODIFY / BUILD EXIT - MVI PECBMCAF,C'Y' MODIFY / COPY EXIT - MVI PECBMEAF,C'Y' MODIFY / EDIT EXIT - MVI PECBMIAF,C'Y' MODIFY / IMPORT EXIT -* - MVI PECBEABX,C'Y' Include elm backout/backin - MVI PECBUECB,C'Y' Include elm backout/backin -* - WTO 'C1UEXSHP - ASM - in Setup ' -* - B MAIN9000 RETURN TO ENDEVOR -*********************************************************************** -* CHECK FUNCTION * -*********************************************************************** -MAIN0010 DS 0H -* - CLC PECBFNNM,=CL8'EXECUTE' 'Execute' ? - BE MAIN0020 - CLC PECBFNNM,=CL8'BACKOUT' 'Back out ?' - BE MAIN0020 - CLC PECBFNNM,=CL8'BACKIN' 'Back In ?' - BE MAIN0020 -* -* -*********************************************************************** -* Enforce the Enable Backout option * -*********************************************************************** -MAIN0015 DS 0H - CLI PREQBOEN,C'Y' Package Backout enabled? - BE MAINEXIT RETURN TO ENDEVOR -* - WTO 'C1UEXSHP - Package Backout enabled. ', X - ROUTCDE=11 -* - MVI PREQBOEN,C'Y' ENABLE Package Backout - MVI PECBUREQ,C'Y' MODS MADE TO PREQPDS - MVC PECBRTCD,=A(PECB$MOK) RETURN CODE to upd Endevor - MVC PECBNDRC,=A(PECB$MOK) RETURN CODE to upd Endevor - B MAINEXIT RETURN TO ENDEVOR -*********************************************************************** -* HAVE WE ALREADY BEEN HERE? * -*********************************************************************** -MAIN0020 DS 0H - LH R15,PECBRQRC LOAD RETURN CODE FROM NDVR - CLC PECBMODE,=CL1'B' Running Batch or Tso ? - BNE MAIN0021 Bypass SYSEXEC allocation -*********************************************************************** -* Allocate a SYSEXEC library - replace if one is already there * -*********************************************************************** - LA R1,ALLOREXX Allocate a SYSEXEC file - ST R1,DYNPARMS " - OI DYNPARMS,X'80' " - LA R1,DYNPARMS " - LINK EP=BPXWDYN " - LTR R15,R15 Verify allocate was successful - BZ MAIN0021 -* - WTO 'C1UEXSHP Unable to allocate SYSEXEC ', X - ROUTCDE=11 -* - B MAIN9000 RETURN TO ENDEVOR -*********************************************************************** -* Call PKGESHIP to do the rest of the work... * -* Build parms * -*********************************************************************** -* -MAIN0021 DS 0H - LA R1,REXPRLN Save Rexx Parm length - STH R1,REX#LEN " - MVC REX#PGM,=CL08'PKGESHIP' - MVI REX#SP1,C' ' enter space - MVC REX#PKG,PECBPKID SAVE PACKAGE ID - MVI REX#SP2,C' ' enter space - MVC REX#ENV,PHDRENV Promtion Env - MVI REX#SP3,C' ' enter space - MVC REX#STG,PHDRSTGID Promtion Stgid - MVI REX#SP4,C' ' enter space -* MVC REX#COMM,PREQCOMM Package Description/Comment - MVC REX#CRUS,PHDRCRUS CREATE USERID - MVC REX#UPUS,PHDRUPUS UPDATE USERID - MVC REX#CAUR,PHDRCAUS CAST USERID - MVI REX#SP5,C' ' enter space - MVC REX#NOT1,PHDRNOTE1 Package Note line - MVC REX#NOT2,PHDRNOTE2 Package Note line - MVC REX#NOT3,PHDRNOTE3 Package Note line - MVC REX#NOT4,PHDRNOTE4 Package Note line - MVC REX#NOT5,PHDRNOTE5 Package Note line - MVC REX#NOT6,PHDRNOTE6 Package Note line - MVC REX#NOT7,PHDRNOTE7 Package Note line - MVC REX#NOT8,PHDRNOTE8 Package Note line -* - MVC REX#OUT,=CL03'OUT' - CLC PECBFNNM,=CL8'BACKOUT' 'Back out ?' - BNE MAIN0022 -* - MVC REX#OUT,=CL03'BAC' -* -MAIN0022 DS 0H -* - WTO 'C1UEXSHP Calling REXX PKGESHIP ', X - ROUTCDE=11 -* - LA R1,REXXPRMS Point to parms, and call Rexx PKGESHIP - ST R1,DYNPARMS " - OI DYNPARMS,X'80' " - LA R1,DYNPARMS " - LINK EP=IRXJCL PARAM=(REXXPRMS) - LTR R15,R15 VERIFY LOAD WAS SUCCESSFUL - BZ MAIN9000 -* - WTO 'C1UEXSHP Unsuccessful PKGESHIP execution', X - ROUTCDE=11 -* - B MAINEXIT +* +REXXPRMS DS 0H Parameters passed to the REXX PKGESHIP +REX#LEN DS H Parms Length +REX#PGM DS CL08 Name of Rexx program called +REX#SP1 DS CL1 space +REX#PKG DS CL16 Package id +REX#SP2 DS CL1 space +REX#ENV DS CL08 Promotion Environment +REX#SP3 DS CL1 space +REX#STG DS CL1 Promotion Stgid +REX#SP4 DS CL1 space +*EX#COMM DS CL50 Package Comment +REX#CRUS DS CL08 Package create userid +REX#UPUS DS CL08 Package update userid +REX#CAUR DS CL08 Package Cast userid +REX#SP5 DS CL1 space +REX#NOT1 DS CL60 Package Notes line #1 +REX#NOT2 DS CL60 Package Notes line #2 +REX#NOT3 DS CL60 Package Notes line #3 +REX#NOT4 DS CL60 Package Notes line #4 +REX#NOT5 DS CL60 Package Notes line #5 +REX#NOT6 DS CL60 Package Notes line #6 +REX#NOT7 DS CL60 Package Notes line #7 +REX#NOT8 DS CL60 Package Notes line #8 +REX#OUT DS CL03 Package shipment output option +REXPRLN EQU *-REXXPRMS +* + DS CL10 +* +WORKLN EQU *-WORKAREA + TITLE 'C1UEXSHP: Automated Shipments' +*********************************************************************** +* MAINLINE LOGIC * +*********************************************************************** +C1UEXSHP CSECT +C1UEXSHP AMODE 31 +C1UEXSHP RMODE ANY + SAVE (14,12),,'PKG Shipment Exit' SAVE CALLERS REG 12(13) + LR R12,R15 POINT TO THIS PROGRAM + USING C1UEXSHP,R12 + L R6,0(,R1) POINT TO THE $PECBDS + USING $PECBDS,R6 + L R7,4(,R1) POINT TO THE $PREQPDS + USING $PREQPDS,R7 + L R9,8(,R1) POINT TO THE $PHDRDS + USING $PHDRDS,R9 +*********************************************************************** +* GET STORAGE FOR SAVEAREA * +*********************************************************************** + L R0,=A(WORKLN) GET SIZE OF W.A + GETMAIN R,LV=(0),LOC=BELOW GET WORKING STORAGE + LR R2,R1 SAVE REG 1 + LR R14,R2 ADDR OF OUR LOCAL WORKAREA + ICM R15,B'1111',=A(WORKLN) IT'S SIZE + SLR R1,R1 + MVCL R14,R0 INITIALIZE IT +* + ST R2,8(R13) STORE NEW STACK +8(OLD) + ST R13,4(R2) STORE OLD STACK +4(NEW) + LR R13,R2 POINT R13 TO OUR STACK + LR R8,R2 + USING WORKAREA,R8 +*********************************************************************** +* CHECK FOR SETUP CALL * +*********************************************************************** + CLC PECBFNNM,=CL8'SETUP' ARE WE AT SETUP + BNE MAIN0010 NO GO CHECK FOR FUNCTION +********************************************************************** +* ENABLE THE EXIT POINTS FOR THIS PROGRAM * +* * +* * +* THE FOLLOWING FIELDS ARE USED EXCLUSIVELY DURING SETUP PROCESSING.* +* THE USER EXIT SHOULD MODIFY THESE FIELDS TO ENABLE EXIT POINTS. * +* THIS SETUP IS DONE ONCE PER ENDEVOR SESSION. * +* THE DEFAULT IS 'N'. TO ENABLE SET FIELD TO 'Y'. * +* * +********************************************************************** +* +SETUP DS 0H + MVI PECBEXBE,C'Y' ENABLE AFTER Execute + MVI PECBBOBE,C'Y' ENABLE AFTER Backout + MVI PECBBIBE,C'Y' ENABLE AFTER Backin +* + MVI PECBCAMD,C'Y' MID CAST + MVI PECBCAAF,C'Y' AFTER CAST + MVI PECBCABE,C'Y' Before CAST +* +* Before Package create + MVI PECBCBBE,C'Y' Before create/build + MVI PECBCCBE,C'Y' Before create/copy + MVI PECBCEBE,C'Y' Before create/edit + MVI PECBCIBE,C'Y' Before create/import +* +* Package modify actions + MVI PECBMBBE,C'Y' MODIFY / BUILD EXIT + MVI PECBMCBE,C'Y' MODIFY / COPY EXIT + MVI PECBMEBE,C'Y' MODIFY / EDIT EXIT + MVI PECBMIBE,C'Y' MODIFY / IMPORT EXIT + MVI PECBMBAF,C'Y' MODIFY / BUILD EXIT + MVI PECBMCAF,C'Y' MODIFY / COPY EXIT + MVI PECBMEAF,C'Y' MODIFY / EDIT EXIT + MVI PECBMIAF,C'Y' MODIFY / IMPORT EXIT +* + MVI PECBEABX,C'Y' Include elm backout/backin + MVI PECBUECB,C'Y' Include elm backout/backin +* + WTO 'C1UEXSHP - ASM - in Setup ' +* + B MAIN9000 RETURN TO ENDEVOR +*********************************************************************** +* CHECK FUNCTION * +*********************************************************************** +MAIN0010 DS 0H +* + CLC PECBFNNM,=CL8'EXECUTE' 'Execute' ? + BE MAIN0020 + CLC PECBFNNM,=CL8'BACKOUT' 'Back out ?' + BE MAIN0020 + CLC PECBFNNM,=CL8'BACKIN' 'Back In ?' + BE MAIN0020 +* +* +*********************************************************************** +* Enforce the Enable Backout option * +*********************************************************************** +MAIN0015 DS 0H + CLI PREQBOEN,C'Y' Package Backout enabled? + BE MAINEXIT RETURN TO ENDEVOR +* + WTO 'C1UEXSHP - Package Backout enabled. ', X + ROUTCDE=11 +* + MVI PREQBOEN,C'Y' ENABLE Package Backout + MVI PECBUREQ,C'Y' MODS MADE TO PREQPDS + MVC PECBRTCD,=A(PECB$MOK) RETURN CODE to upd Endevor + MVC PECBNDRC,=A(PECB$MOK) RETURN CODE to upd Endevor + B MAINEXIT RETURN TO ENDEVOR +*********************************************************************** +* HAVE WE ALREADY BEEN HERE? * +*********************************************************************** +MAIN0020 DS 0H + LH R15,PECBRQRC LOAD RETURN CODE FROM NDVR + CLC PECBMODE,=CL1'B' Running Batch or Tso ? + BNE MAIN0021 Bypass SYSEXEC allocation +*********************************************************************** +* Allocate a SYSEXEC library - replace if one is already there * +*********************************************************************** + LA R1,ALLOREXX Allocate a SYSEXEC file + ST R1,DYNPARMS " + OI DYNPARMS,X'80' " + LA R1,DYNPARMS " + LINK EP=BPXWDYN " + LTR R15,R15 Verify allocate was successful + BZ MAIN0021 +* + WTO 'C1UEXSHP Unable to allocate SYSEXEC ', X + ROUTCDE=11 +* + B MAIN9000 RETURN TO ENDEVOR +*********************************************************************** +* Call PKGESHIP to do the rest of the work... * +* Build parms * +*********************************************************************** +* +MAIN0021 DS 0H + LA R1,REXPRLN Save Rexx Parm length + STH R1,REX#LEN " + MVC REX#PGM,=CL08'PKGESHIP' + MVI REX#SP1,C' ' enter space + MVC REX#PKG,PECBPKID SAVE PACKAGE ID + MVI REX#SP2,C' ' enter space + MVC REX#ENV,PHDRENV Promtion Env + MVI REX#SP3,C' ' enter space + MVC REX#STG,PHDRSTGID Promtion Stgid + MVI REX#SP4,C' ' enter space +* MVC REX#COMM,PREQCOMM Package Description/Comment + MVC REX#CRUS,PHDRCRUS CREATE USERID + MVC REX#UPUS,PHDRUPUS UPDATE USERID + MVC REX#CAUR,PHDRCAUS CAST USERID + MVI REX#SP5,C' ' enter space + MVC REX#NOT1,PHDRNOTE1 Package Note line + MVC REX#NOT2,PHDRNOTE2 Package Note line + MVC REX#NOT3,PHDRNOTE3 Package Note line + MVC REX#NOT4,PHDRNOTE4 Package Note line + MVC REX#NOT5,PHDRNOTE5 Package Note line + MVC REX#NOT6,PHDRNOTE6 Package Note line + MVC REX#NOT7,PHDRNOTE7 Package Note line + MVC REX#NOT8,PHDRNOTE8 Package Note line +* + MVC REX#OUT,=CL03'OUT' + CLC PECBFNNM,=CL8'BACKOUT' 'Back out ?' + BNE MAIN0022 +* + MVC REX#OUT,=CL03'BAC' +* +MAIN0022 DS 0H +* + WTO 'C1UEXSHP Calling REXX PKGESHIP ', X + ROUTCDE=11 +* + LA R1,REXXPRMS Point to parms, and call Rexx PKGESHIP + ST R1,DYNPARMS " + OI DYNPARMS,X'80' " + LA R1,DYNPARMS " + LINK EP=IRXJCL PARAM=(REXXPRMS) + LTR R15,R15 VERIFY LOAD WAS SUCCESSFUL + BZ MAIN9000 +* + WTO 'C1UEXSHP Unsuccessful PKGESHIP execution', X + ROUTCDE=11 +* + B MAINEXIT *---------------------------------------------------------------------- 00159000 *---------------------------------------------------------------------- 00159000 -MAIN9000 DS 0H - XC PECBRTCD,PECBRTCD CLEAR RETURN CODE -MAINEXIT DS 0H -* - LR R5,R13 SAVE NEW STACK POINTER -* - L R13,4(R13) POINT TO OLD STACK -*********************************************************************** -* CLEAN UP THIS PROGRAM'S STORAGE * -* NOTE: THIS HAS TO BE DONE BEFORE THE "LOAD MULTIPLE" IS * -* DONE BECAUSE YOU LOSE THE POINTER TO YOUR STORAGE * -*********************************************************************** -* - L R0,=A(WORKLN) GET SIZE - FREEMAIN R,A=(5),LV=(0) FREE STORAGE -MAINRTRN DS 0H - RETURN (14,12) - SPACE , -* -*********************************************************************** -* PROGRAM CONSTANTS * -*********************************************************************** +MAIN9000 DS 0H + XC PECBRTCD,PECBRTCD CLEAR RETURN CODE +MAINEXIT DS 0H +* + LR R5,R13 SAVE NEW STACK POINTER +* + L R13,4(R13) POINT TO OLD STACK +*********************************************************************** +* CLEAN UP THIS PROGRAM'S STORAGE * +* NOTE: THIS HAS TO BE DONE BEFORE THE "LOAD MULTIPLE" IS * +* DONE BECAUSE YOU LOSE THE POINTER TO YOUR STORAGE * +*********************************************************************** +* + L R0,=A(WORKLN) GET SIZE + FREEMAIN R,A=(5),LV=(0) FREE STORAGE +MAINRTRN DS 0H + RETURN (14,12) + SPACE , +* +*********************************************************************** +* PROGRAM CONSTANTS * +*********************************************************************** *--------------- 01150000 * CONSTANTS 01100000 *--------------- 01150000 -ALLOREXX DC X'0060' length in hex - DC CL18'ALLOC DD(SYSEXEC) ' -* Enter your REXX dataset name and length here \ -* DC CL28'DA(CADEMO.BUNDLE.PACKAGE)' - DC CL30'DA(SYSMD32.NDVR.TEAM.REXX)' -* DC CL28'DA(SYS1.EXEC)' -* Enter your REXX dataset name and length here / - DC CL42' SHR REUSE' -* DC CL40'----+----1----+----2----+----3----+----4 -BLANKS DC CL132' ' - END +ALLOREXX DC X'0060' length in hex + DC CL18'ALLOC DD(SYSEXEC) ' +* Enter your REXX dataset name and length here \ +* DC CL28'DA(YOURSITE.NDVR.REXX)' + DC CL30'DA(YOURSITE.NDVR.TEAM.REXX)' +* DC CL28'DA(SYS?.EXEC)' +* Enter your REXX dataset name and length here / + DC CL42' SHR REUSE' +* DC CL40'----+----1----+----2----+----3----+----4 +BLANKS DC CL132' ' + END diff --git a/endevor/Field-Developed-Programs/Package-Automation/C1UEXSHP.cob b/endevor/Field-Developed-Programs/Package-Automation/C1UEXSHP.cob index cb84543..f21ff51 100644 --- a/endevor/Field-Developed-Programs/Package-Automation/C1UEXSHP.cob +++ b/endevor/Field-Developed-Programs/Package-Automation/C1UEXSHP.cob @@ -173,7 +173,7 @@ MOVE SPACES TO ALLOC-TEXT . STRING 'ALLOC DD(SYSEXEC) ', - 'DA(SYSMD32.NDVR.TEAM.REXX) SHR REUSE' + 'DA(YOURSITE.NDVR.TEAM.REXX) SHR REUSE' DELIMITED BY SIZE INTO ALLOC-TEXT END-STRING. diff --git a/endevor/Field-Developed-Programs/Package-Automation/C1UEXT07.cob b/endevor/Field-Developed-Programs/Package-Automation/C1UEXT07.cob index 61ea24d..12722ee 100644 --- a/endevor/Field-Developed-Programs/Package-Automation/C1UEXT07.cob +++ b/endevor/Field-Developed-Programs/Package-Automation/C1UEXT07.cob @@ -1,650 +1,653 @@ - PROCESS DYNAM OUTDD(DISPLAYS) - IDENTIFICATION DIVISION. - PROGRAM-ID. C1UEXT07. - - ************************************************************ - * DESCRIPTION: THIS PACKAGE EXIT PROGRAM WILL INITIATE * - * 1) PERFORM PACKAGE AUTOMATION PACKAGE EXECUTTIONS * - * 2) SUPPORT AUTOMATED PACKAGE SHIPPING * - ************************************************************ - * THESE ROUTINES ARE DISTRIBUTED BY THE CA STAFF "AS IS". - * NO WARRANTY, EITHER EXPRESSED OR IMPLIED, IS MADE FOR THEM. - * COMPUTER ASSOCIATES CANNOT GUARANTEE THAT THE ROUTINES ARE - * ERROR FREE, OR THAT IF ERRORS ARE FOUND, THEY WILL BE CORRECTED. - ************************************************************ - - ENVIRONMENT DIVISION. - INPUT-OUTPUT SECTION. - FILE-CONTROL. - ** - DATA DIVISION. - FILE SECTION. - - WORKING-STORAGE SECTION. - - 01 WS-DATE-VARIABLES. - 03 WS-DATE-TO-CONVERT PIC X(07). - 03 WS-DATE-CONVERTED. - 05 WS-DATE-CENTURY PIC 9(02). - 05 WS-DATE-YEAR PIC 9(02). - 05 WS-DATE-MONTH PIC 9(02). - 05 WS-DATE-DAY PIC 9(02). - 03 WS-DATE-OF-RUN PIC 9(06). - 03 WS-DOR REDEFINES WS-DATE-OF-RUN. - 05 WS-DOR-YEAR PIC 9(02). - 05 WS-DOR-MONTH PIC 9(02). - 05 WS-DOR-DAY PIC 9(02). - - 03 WS-RUN-DATE PIC 9(06). - 03 FILLER REDEFINES WS-RUN-DATE. - 05 WS-RUN-DATE-YEAR PIC 9(02). - 05 WS-RUN-DATE-MONTH PIC 9(02). - 05 WS-RUN-DATE-DAY PIC 9(02). - - 03 WS-TIME-OF-RUN PIC 9(08). - 03 FILLER REDEFINES WS-TIME-OF-RUN. - 05 WS-TOR. - 10 WS-TOR-HOUR PIC 9(02). - 10 WS-TOR-MINUTE PIC 9(02). - 05 FILLER PIC 9(04). - - 03 WS-RUN-TIME PIC 9(04). - 03 FILLER REDEFINES WS-RUN-TIME. - 05 WS-RUN-TIME-HOUR PIC 9(02). - 05 WS-RUN-TIME-MINUTE PIC 9(02). - - 03 WS-PACKAGE-DATE. - 10 WS-PKG-DAY PIC 9(02). - 10 WS-PKG-MONTH PIC X(03). - 10 WS-PKG-YEAR PIC 9(02). - - 03 WS-PKG-START-DATE. - 10 WS-PKG-START-YEAR PIC 9(02). - 10 WS-PKG-START-MONTH PIC 9(02). - 10 WS-PKG-START-DAY PIC 9(02). - - 03 WS-PKG-END-DATE. - 10 WS-PKG-END-YEAR PIC 9(02). - 10 WS-PKG-END-MONTH PIC 9(02). - 10 WS-PKG-END-DAY PIC 9(02). - - 03 WS-PACKAGE-TIME. - 10 WS-PKG-HOUR PIC 9(02). - 10 FILLER PIC X(01). - 10 WS-PKG-MINUTE PIC 9(02). - - 03 WS-PKG-START-TIME. - 10 WS-PKG-START-HOUR PIC 9(02). - 10 WS-PKG-START-MINUTE PIC 9(02). - - 03 WS-PKG-END-TIME. - 10 WS-PKG-END-HOUR PIC 9(02). - 10 WS-PKG-END-MINUTE PIC 9(02). - - 01 WS-MONTHS-TABLE. - 03 FILLER PIC X(36) - VALUE 'JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC' . - 01 WS-MONTHS-TABLE-RE REDEFINES WS-MONTHS-TABLE. - 03 WS-MONTH OCCURS 12 TIMES INDEXED BY WS-MONTH-INX - PIC X(03). - 01 WS-VARIABLES. - 03 WS-SUBMIT-SWITCH PIC X(01) VALUE 'N'. - 88 SUBMIT-OK VALUE 'S'. - 88 DO-NOT-SUBMIT VALUE 'N'. - 03 WS-TIME PIC 9(8). - 03 WS-PACKAGE-VARIABLE PIC X(01). - 03 WS-JOBCARD-ID PIC X(07) VALUE SPACES. - 03 ME PIC X(07) VALUE 'XALJO11'. - 03 ADMIN1 PIC X(01) VALUE 'P'. - 03 ADMIN2 PIC X(01) VALUE 'T'. - 03 WS-TALLY PIC 9(4) VALUE 0000. - - 01 BPXWDYN PIC X(8) VALUE 'BPXWDYN'. - 01 ALLOC-STRING. - 05 ALLOC-LENGTH PIC S9(4) BINARY VALUE 100. - 05 ALLOC-TEXT PIC X(100). - - 01 IRXJCL PIC X(6) VALUE 'IRXJCL'. - 01 IRXEXEC-PGM PIC X(08) VALUE 'IRXEXEC'. - - * - * DEFINE THE IRXEXEC DATA AREAS AND ARG BLOCKS - * - 77 FLAGS PIC S9(8) BINARY. - 77 REXX-RETURN-CODE PIC S9(8) BINARY. - 77 DUMMY-ZERO PIC S9(8) BINARY. - 77 LPAR-ID PIC X(04). - 88 DO-NOT-PROCESS-LPAR VALUE 'SKIP'. - 77 ARG1 PIC X(16). - 77 UPDPRINT-FILE-STATUS PIC X(02). - 77 ARGUMENT-PTR POINTER. - 77 EXECBLK-PTR POINTER. - 77 ARGTABLE-PTR POINTER. - 77 EVALBLK-PTR POINTER. - 77 TEMP-PTR POINTER. - - 01 EXECBLK. - 05 EXECBLK-ACRYN PIC X(08) VALUE 'IRXEXECB'. - 05 EXECBLK-LENGTH PIC S9(8) BINARY - VALUE 48. - 05 EXECBLK-RESERVED PIC S9(8) BINARY - VALUE 0. - 05 EXECBLK-MEMBER PIC X(08) VALUE 'PKGEXECT'. - 05 EXECBLK-DDNAME PIC X(08) VALUE 'REXFILE7'. - 05 EXECBLK-SUBCOM PIC X(08) VALUE SPACES. - 05 EXECBLK-DSNPTR POINTER VALUE NULL. - 05 EXECBLK-DSNLEN PIC 9(04) COMP - VALUE 0. - - 01 EVALBLK. - 05 EVALBLK-EVPAD1 PIC S9(8) BINARY - VALUE 0. - 05 EVALBLK-EVSIZE PIC S9(8) BINARY - VALUE 34. - 05 EVALBLK-EVLEN PIC S9(8) BINARY - VALUE 0. - 05 EVALBLK-EVPAD2 PIC S9(8) BINARY - VALUE 0. - 05 EVALBLK-EVDATA PIC X(256). - - 01 ARGUMENT. - 02 ARGUMENT-1 OCCURS 1 TIMES. - 05 ARGSTRING-PTR POINTER. - 05 ARGSTRING-LENGTH PIC S9(8) BINARY. - 02 ARGSTRING-LAST1 PIC S9(8) BINARY - VALUE -1. - 02 ARGSTRING-LAST2 PIC S9(8) BINARY - VALUE -1. - - * The block of data below can be used with either an - * IRXJCL or IRXEXEC call to the rexx program PKGEXECT. - * IRXJCL is used when running in batch (batch CAST) . - * IRXEXEC is used when running in foreground (CAST or APPROVE). - 01 PKG-EXECUTE-PARMS-IRXJCL. - 02 PKG-EXECUTE-PARMS-IRXJCL-TOP. - 03 PARM-LENGTH PIC X(2) VALUE X'0114'. - 03 REXX-NAME PIC X(8) VALUE 'PKGEXECT'. - 03 FILLER PIC X(1) VALUE SPACE . - 02 PKG-EXECUTE-PARMS-IRXEXEC. - 03 REXX-EXEC-PACKAGE PIC X(16) . - 03 FILLER PIC X(1) VALUE SPACE . - 03 REXX-EXEC-ENV PIC X(08) . - 03 FILLER PIC X(1) VALUE SPACE . - 03 REXX-EXEC-STGID PIC X(01) . - 03 REXX-EXEC-MODE PIC X(01) . - 03 REXX-EXE-CREATE-USER PIC X(08) . - 03 REXX-EXE-UPDATE-USER PIC X(08) . - 03 REXX-EXE-CAST-USER PIC X(08) . - 03 REXX-EXEC-COMMENT PIC X(50) . - - * The block of data below can be used for submitting pkg shipments - * IRXJCL is always used since executions are always in batch. - 01 PKG-SHIPMENT-PARMS-IRXJCL. - 02 PKG-SHIPMENT-PARMS-IRXJCL-TOP. - 03 PARM-LENGTH PIC X(2) VALUE X'0253'. - 03 REXX-NAME PIC X(8) VALUE 'PKGESHIP'. - 03 FILLER PIC X(1) VALUE SPACE . - 02 PKG-SHIPMENT-PARMS. - 03 REXX-SHIP-PACKAGE PIC X(16) . - 03 FILLER PIC X(1) VALUE SPACE . - 03 REXX-SHIP-ENV PIC X(08) . - 03 FILLER PIC X(1) VALUE SPACE . - 03 REXX-SHIP-STGID PIC X(01) . - 03 FILLER PIC X(1) VALUE SPACE . - 03 REXX-SHIP-COMMENT PIC X(50) . - 03 REXX-SHIP-CREATE-USR PIC X(08) . - 03 REXX-SHIP-UPDATE-USR PIC X(08) . - 03 REXX-SHIP-CAST-USER PIC X(08) . - 03 FILLER PIC X(1) VALUE SPACE . - 03 REXX-SHIP-NOTE1 PIC X(60) . - 03 REXX-SHIP-NOTE2 PIC X(60) . - 03 REXX-SHIP-NOTE3 PIC X(60) . - 03 REXX-SHIP-NOTE4 PIC X(60) . - 03 REXX-SHIP-NOTE5 PIC X(60) . - 03 REXX-SHIP-NOTE6 PIC X(60) . - 03 REXX-SHIP-NOTE7 PIC X(60) . - 03 REXX-SHIP-NOTE8 PIC X(60) . - 03 REXX-SHIP-OUT PIC X(03) . - - LINKAGE SECTION. - COPY PKGXBLKS. - - PROCEDURE DIVISION USING - PACKAGE-EXIT-BLOCK - PACKAGE-REQUEST-BLOCK - PACKAGE-EXIT-HEADER-BLOCK - PACKAGE-EXIT-FILE-BLOCK - PACKAGE-EXIT-ACTION-BLOCK - PACKAGE-EXIT-APPROVER-MAP - PACKAGE-EXIT-BACKOUT-BLOCK - PACKAGE-EXIT-SHIPMENT-BLOCK - PACKAGE-EXIT-SCL-BLOCK. - **** - **** - -******* DISPLAY 'C1UEXT07: GOT INTO EXIT 7' . - ACCEPT WS-DATE-OF-RUN FROM DATE. - ACCEPT WS-TIME-OF-RUN FROM TIME. - MOVE WS-DOR-YEAR TO WS-RUN-DATE-YEAR. - MOVE WS-DOR-MONTH TO WS-RUN-DATE-MONTH. - MOVE WS-DOR-DAY TO WS-RUN-DATE-DAY. - MOVE WS-TOR-HOUR TO WS-RUN-TIME-HOUR. - MOVE WS-TOR-MINUTE TO WS-RUN-TIME-MINUTE. - - IF SETUP-EXIT-OPTIONS -********* to support automated package shipping - MOVE 'Y' TO PECB-AFTER-EXEC - MOVE 'Y' TO PECB-REQ-ELEMENT-ACTION-BIBO - MOVE 'Y' TO PECB-AFTER-BACKOUT - MOVE 'Y' TO PECB-AFTER-BACKIN -********* to enforce package backout = Y -********* MOVE 'Y' TO PECB-BEFORE-CAST -********* MOVE 'Y' TO PECB-MID-CAST - MOVE 'Y' TO PECB-BEFORE-CREATE-BLD - MOVE 'Y' TO PECB-BEFORE-CREATE-COPY - MOVE 'Y' TO PECB-BEFORE-CREATE-EDIT - MOVE 'Y' TO PECB-BEFORE-CREATE-IMPT - MOVE 'Y' TO PECB-BEFORE-MOD-BLD - MOVE 'Y' TO PECB-BEFORE-MOD-CPY - MOVE 'Y' TO PECB-BEFORE-MOD-EDIT - MOVE 'Y' TO PECB-BEFORE-MOD-IMPT -********* to support submission of package Execute jobs - MOVE 'Y' TO PECB-AFTER-REV-APPR - MOVE 'Y' TO PECB-AFTER-CAST - MOVE ZEROS TO RETURN-CODE - GO TO 100-MAIN-EXIT. - - MOVE 0 TO PECB-NDVR-EXIT-RC. - -** *******====---> SUBMIT PACKAGE SHIPMENT JOBS - IF (EXECUTE-PACKAGE AND - PHDR-PACKAGE-STATUS(1:4) = 'EXEC') - OR (BACK-OUT-PACKAGE AND PECB-AFTER ) - OR (BACK-IN-PACKAGE AND PECB-AFTER ) - PERFORM 800-SUBMIT-PACKAGE-SHIPMENTS - GO TO 100-MAIN-EXIT. - - IF CAST-PACKAGE AND PECB-AFTER AND - PHDR-PACKAGE-STATUS = 'APPROVED' -******* DISPLAY 'PERFORM 599-CHECK-SUBMIT-DATES' - PERFORM 599-CHECK-SUBMIT-DATES - IF SUBMIT-OK -******* DISPLAY 'PERFORM 600-SUBMIT-PACKAGE-AUTOMATION' - IF PECB-BATCH-MODE - MOVE SPACES TO ALLOC-TEXT - PERFORM 2100-ALLOCATE-REXFILE - END-IF - PERFORM 600-SUBMIT-PACKAGE-AUTOMATION - PERFORM 2100-ALLOCATE-REXFILE - GO TO 100-MAIN-EXIT - ELSE - GO TO 100-MAIN-EXIT. - - IF REVIEW-PACKAGE AND PECB-AFTER AND - PHDR-PACKAGE-STATUS = 'APPROVED' - PERFORM 599-CHECK-SUBMIT-DATES - IF SUBMIT-OK - IF PECB-BATCH-MODE - MOVE SPACES TO ALLOC-TEXT - PERFORM 2100-ALLOCATE-REXFILE - END-IF - PERFORM 600-SUBMIT-PACKAGE-AUTOMATION - GO TO 100-MAIN-EXIT - ELSE - GO TO 100-MAIN-EXIT. - -******* DISPLAY 'C1UEXT07: PHDR-PACKAGE-STATUS=' -******* PHDR-PACKAGE-STATUS. - - IF PREQ-BACKOUT-ENABLED NOT = 'Y' - MOVE 'Y' TO PREQ-BACKOUT-ENABLED - MOVE 4 TO PECB-NDVR-EXIT-RC - MOVE 'Y' TO PECB-MODS-MADE-TO-PREQ - DISPLAY 'C1UEXT07: Package Backout is Enforced' - END-IF. - - 100-MAIN-EXIT. -******* DISPLAY 'C1UEXT07: GOING BACK ' - - GOBACK. - - - 599-CHECK-SUBMIT-DATES. - - ACCEPT WS-DATE-OF-RUN FROM DATE - ACCEPT WS-TIME-OF-RUN FROM TIME - MOVE WS-DOR-YEAR TO WS-RUN-DATE-YEAR - MOVE WS-DOR-MONTH TO WS-RUN-DATE-MONTH - MOVE WS-DOR-DAY TO WS-RUN-DATE-DAY - MOVE WS-TOR-HOUR TO WS-RUN-TIME-HOUR - MOVE WS-TOR-MINUTE TO WS-RUN-TIME-MINUTE - - MOVE PHDR-PKG-EXEC-STRT-DATE TO WS-DATE-TO-CONVERT - PERFORM 700-CONVERT-DATE-CONVERT - MOVE WS-DATE-YEAR TO WS-PKG-START-YEAR - MOVE WS-DATE-MONTH TO WS-PKG-START-MONTH - MOVE WS-DATE-DAY TO WS-PKG-START-DAY - - MOVE PHDR-PKG-EXEC-END-DATE TO WS-DATE-TO-CONVERT - PERFORM 700-CONVERT-DATE-CONVERT - MOVE WS-DATE-YEAR TO WS-PKG-END-YEAR - MOVE WS-DATE-MONTH TO WS-PKG-END-MONTH - MOVE WS-DATE-DAY TO WS-PKG-END-DAY - - MOVE PHDR-PKG-EXEC-STRT-TIME TO WS-PACKAGE-TIME - MOVE WS-PKG-HOUR TO WS-PKG-START-HOUR - MOVE WS-PKG-MINUTE TO WS-PKG-START-MINUTE - - MOVE PHDR-PKG-EXEC-END-TIME TO WS-PACKAGE-TIME - MOVE WS-PKG-HOUR TO WS-PKG-END-HOUR - MOVE WS-PKG-MINUTE TO WS-PKG-END-MINUTE - - IF PECB-USER-BATCH-JOBNAME(1:7) = ME - DISPLAY 'C1UEXT07: USING THESE DATES' - DISPLAY 'RUN DATE: ' WS-RUN-DATE - ' TIME: ' WS-RUN-TIME - DISPLAY 'START DATE: ' WS-PKG-START-DATE - ' TIME: ' WS-PKG-START-TIME - DISPLAY 'END DATE: ' WS-PKG-END-DATE - ' TIME: ' WS-PKG-END-TIME - END-IF - - SET SUBMIT-OK TO TRUE - IF WS-PKG-START-DATE > WS-RUN-DATE - SET DO-NOT-SUBMIT TO TRUE - END-IF - - IF WS-PKG-START-DATE = WS-RUN-DATE - AND WS-PKG-START-TIME > WS-RUN-TIME - SET DO-NOT-SUBMIT TO TRUE - END-IF - - IF WS-PKG-END-DATE < WS-RUN-DATE - SET DO-NOT-SUBMIT TO TRUE - END-IF - - IF WS-PKG-END-DATE = WS-RUN-DATE - AND WS-PKG-END-TIME < WS-RUN-TIME - SET DO-NOT-SUBMIT TO TRUE - END-IF - - IF PECB-USER-BATCH-JOBNAME(1:7) = ME - DISPLAY 'C1UEXT07: SUBMIT SWITCH: ' WS-SUBMIT-SWITCH - END-IF - . - 600-SUBMIT-PACKAGE-AUTOMATION. - - * MAKES A CALL TO THE REXX ROUTINE PKGEXECT. - * THE REXX ROUTINE PKGEXECT SUBMITS PACKAGE SHIPMENT JOBS. - * THE REXX ROUTINE PKGEXECT SUBMITS PACKAGE SHIPMENT JOBS. - -****** IF PECB-USER-BATCH-JOBNAME(1:7) = ME -****** DISPLAY 'C1UEXT07: SUBMITTING PACKAGE ' -****** PECB-PACKAGE-ID -****** DISPLAY 'C1UEXT07: PHDR-PKG-ENV ' PHDR-PKG-ENV -****** DISPLAY 'C1UEXT07: PHDR-PKG-STGID' PHDR-PKG-STGID -****** END-IF - - MOVE PECB-PACKAGE-ID TO REXX-EXEC-PACKAGE - MOVE PHDR-PKG-ENV TO REXX-EXEC-ENV - MOVE PHDR-PKG-STGID TO REXX-EXEC-STGID - MOVE PECB-MODE TO REXX-EXEC-MODE - MOVE PHDR-PKG-CREATE-USER TO REXX-EXE-CREATE-USER - MOVE PHDR-PKG-UPDATE-USER TO REXX-EXE-UPDATE-USER - MOVE PHDR-PKG-CAST-USER TO REXX-EXE-CAST-USER - MOVE PREQ-PACKAGE-COMMENT TO REXX-EXEC-COMMENT - MOVE 'PKGEXECT' TO EXECBLK-MEMBER . - MOVE 102 TO ARGSTRING-LENGTH(1) - -******** -******** IF PECB-TSO-MODE -******** DISPLAY 'C1UEXT07: IN TSO FOREGROUND ' -******** CALL 'SET-ARG1-POINTER' USING ARGUMENT-PTR -******** PKG-EXECUTE-PARMS-IRXEXEC -******** PERFORM 1800-REXX-CALL-VIA-IRXEXEC -******** ELSE -******** DISPLAY 'C1UEXT07: NOT IN TSO FOREGROUND ' - CALL IRXJCL USING PKG-EXECUTE-PARMS-IRXJCL . - - - IF RETURN-CODE NOT = 0 - DISPLAY 'C1UEXT07: BAD CALL TO IRXJCL - RC = ' - RETURN-CODE - END-IF - - MOVE 0 TO RETURN-CODE - . - 700-CONVERT-DATE-CONVERT. - - SET WS-MONTH-INX TO 1. - SEARCH WS-MONTH VARYING WS-MONTH-INX - AT END MOVE 00 TO WS-DATE-MONTH - WHEN WS-MONTH(WS-MONTH-INX) = WS-DATE-TO-CONVERT(3:3) - SET WS-DATE-MONTH TO WS-MONTH-INX - END-SEARCH - - MOVE WS-DATE-TO-CONVERT (1:2) TO WS-DATE-DAY - MOVE WS-DATE-TO-CONVERT (6:2) TO WS-DATE-YEAR - MOVE '20' TO WS-DATE-CENTURY - . - 800-SUBMIT-PACKAGE-SHIPMENTS. - - * MAKES A CALL TO THE REXX ROUTINE PKGESHIP - * THE REXX ROUTINE PKGESHIP SUBMITS PACKAGE SHIPMENT JOBS - - * Package Shipments may occur in batch only - * As a result, IRXJCL will be always be used to - * submit the package Shipment jobs. - -******* IF PECB-USER-BATCH-JOBNAME(1:7) = 'IBMUSER' -******* DISPLAY 'C1UEXT07: SHIPPING PACKAGE ' -******* PECB-PACKAGE-ID -******* DISPLAY 'C1UEXT07: PHDR-PKG-ENV ' PHDR-PKG-ENV -******* DISPLAY 'C1UEXT07: PHDR-PKG-STGID' PHDR-PKG-STGID -******* END-IF - - PERFORM 2100-ALLOCATE-REXFILE. - - MOVE PECB-PACKAGE-ID TO REXX-SHIP-PACKAGE - MOVE PHDR-PKG-ENV TO REXX-SHIP-ENV - MOVE PHDR-PKG-STGID TO REXX-SHIP-STGID - MOVE PREQ-PACKAGE-COMMENT TO REXX-SHIP-COMMENT - MOVE PHDR-PKG-CREATE-USER TO REXX-SHIP-CREATE-USR - MOVE PHDR-PKG-UPDATE-USER TO REXX-SHIP-UPDATE-USR - MOVE PHDR-PKG-CAST-USER TO REXX-SHIP-CAST-USER - MOVE PHDR-PKG-NOTE1 TO REXX-SHIP-NOTE1 - MOVE PHDR-PKG-NOTE2 TO REXX-SHIP-NOTE2 - MOVE PHDR-PKG-NOTE3 TO REXX-SHIP-NOTE3 - MOVE PHDR-PKG-NOTE4 TO REXX-SHIP-NOTE4 - MOVE PHDR-PKG-NOTE5 TO REXX-SHIP-NOTE5 - MOVE PHDR-PKG-NOTE6 TO REXX-SHIP-NOTE6 - MOVE PHDR-PKG-NOTE7 TO REXX-SHIP-NOTE7 - MOVE PHDR-PKG-NOTE8 TO REXX-SHIP-NOTE8 - IF BACK-OUT-PACKAGE - MOVE 'BAC' TO REXX-SHIP-OUT - ELSE - MOVE 'OUT' TO REXX-SHIP-OUT . - - CALL IRXJCL USING PKG-SHIPMENT-PARMS-IRXJCL. - - MOVE 0 TO RETURN-CODE - . - - - 1800-REXX-CALL-VIA-IRXEXEC. - *--- GET THE ADDRESS OF THE ARGUMENT(S) TO BE PASSED TO IXREXEC - *--- AND LOAD INTO THE ARGUMENT TABLES -******* IF PECB-USER-BATCH-JOBNAME(1:7) = ME -******* DISPLAY 'C1UEXT07: SETTING UP REXX EXECUTION' -******* ' FOR PACKAGE 'PECB-PACKAGE-ID -******* END-IF . - SET ARGSTRING-PTR (1) TO ARGUMENT-PTR . - CALL 'SET-ARGUMENT-POINTER' USING ARGTABLE-PTR - ARGUMENT . - CALL 'SET-EXECBLK-POINTER' USING EXECBLK-PTR - EXECBLK . - CALL 'SET-EVALBLK-POINTER' USING EVALBLK-PTR - EVALBLK . - *--- SET FLAGS TO HEX 20000000 - * I.E. EXEC INVOKED AS SUBROUTINE - MOVE 536870912 TO FLAGS - MOVE 0 TO REXX-RETURN-CODE . - - IF PECB-USER-BATCH-JOBNAME(1:7) = ME - DISPLAY 'C1UEXT07: CALLING IRXEXC ' - PECB-PACKAGE-ID - END-IF . - *--- CALL THE REXX EXEC --- - CALL IRXEXEC-PGM USING EXECBLK-PTR - ARGTABLE-PTR - FLAGS - DUMMY-ZERO - DUMMY-ZERO - EVALBLK-PTR - DUMMY-ZERO - DUMMY-ZERO - DUMMY-ZERO . - - IF REXX-RETURN-CODE NOT = 0 - DISPLAY 'C1UEXT07: IRXEXEC RETURN CODE = ' - REXX-RETURN-CODE - END-IF - - CANCEL IRXEXEC-PGM - . - - 2100-ALLOCATE-REXFILE. - - MOVE SPACES TO ALLOC-TEXT. - - STRING 'ALLOC DD(REXFILE7) ', - 'DA(SYSMD32.NDVR.ADMIN.ENDEVOR.ADM1.CLSTREXX) SHR REUSE' - DELIMITED BY SIZE - INTO ALLOC-TEXT - END-STRING . - PERFORM 9000-DYNAMIC-ALLOC-DEALLOC . - STRING 'ALLOC DD(SYSEXEC) ', - 'DA(SYSMD32.NDVR.ADMIN.ENDEVOR.ADM1.CLSTREXX) SHR REUSE' - DELIMITED BY SIZE - INTO ALLOC-TEXT - END-STRING. - PERFORM 9000-DYNAMIC-ALLOC-DEALLOC . - -********** MOVE 'CONCAT DDLIST(REXFILE7,REXFILE2)' -********** TO ALLOC-TEXT . -********** -********** PERFORM 9000-DYNAMIC-ALLOC-DEALLOC . - - ***************************************************************** - ** DYNAMICALLY DE-ALLOCATE UNNEEDED REXX FILES - ***************************************************************** - 2200-FREE-REXFILES. - - MOVE 'FREE DD(REXFILE7)' TO ALLOC-TEXT - PERFORM 9000-DYNAMIC-ALLOC-DEALLOC - - MOVE 'FREE DD(SYSEXEC)' TO ALLOC-TEXT - PERFORM 9000-DYNAMIC-ALLOC-DEALLOC - . - ***************************************************************** - ** CALL BPXWDYN TO PREFORM REQUIRED REXX FUNCTIONS - ***************************************************************** - 9000-DYNAMIC-ALLOC-DEALLOC. - - CALL BPXWDYN USING ALLOC-STRING - - IF RETURN-CODE NOT = ZERO - DISPLAY 'C1UEXT07: ALLOCATION FAILED: RETURN CODE = ' - RETURN-CODE - DISPLAY ALLOC-TEXT - END-IF - - MOVE SPACES TO ALLOC-TEXT - . - - - ****************************************************************** - * BEGIN NESTED PROGRAMS USED TO SET THE POINTERS OF DATA AREAS - * THAT ARE BEING PASSED TO IRXEXEC SO THAT A REXX ROUTINE CAN - * PASS DATA (OTHER THAN A RETURN CODE) BACK TO A COBOL PROGRAM. - ****************************************************************** - - ******** SET-ARG1-POINTER ******** - IDENTIFICATION DIVISION. - PROGRAM-ID. SET-ARG1-POINTER. - ENVIRONMENT DIVISION. - DATA DIVISION. - WORKING-STORAGE SECTION. - LINKAGE SECTION. - 77 ARG-PTR POINTER. - 77 ARG1 PIC X(16). - PROCEDURE DIVISION USING ARG-PTR - ARG1. - SET ARG-PTR TO ADDRESS OF ARG1 - GOBACK. - END PROGRAM SET-ARG1-POINTER. - - ******** SET-ARGUMENT-POINTER ******** - IDENTIFICATION DIVISION. - PROGRAM-ID. SET-ARGUMENT-POINTER. - ENVIRONMENT DIVISION. - DATA DIVISION. - WORKING-STORAGE SECTION. - LINKAGE SECTION. - 77 ARGTABLE-PTR POINTER. - 01 ARGUMENT. - 02 ARGUMENT-1 OCCURS 1 TIMES. - 05 ARGSTRING-PTR POINTER. - 05 ARGSTRING-LENGTH PIC S9(8) BINARY. - 02 ARGSTRING-LAST1 PIC S9(8) BINARY. - 02 ARGSTRING-LAST2 PIC S9(8) BINARY. - PROCEDURE DIVISION USING ARGTABLE-PTR - ARGUMENT. - SET ARGTABLE-PTR TO ADDRESS OF ARGUMENT - GOBACK. - END PROGRAM SET-ARGUMENT-POINTER. - - ******** SET-EXECBLK-POINTER ******** - IDENTIFICATION DIVISION. - PROGRAM-ID. SET-EXECBLK-POINTER. - ENVIRONMENT DIVISION. - DATA DIVISION. - WORKING-STORAGE SECTION. - LINKAGE SECTION. - 77 EXECBLK-PTR POINTER. - 01 EXECBLK. - 03 EXECBLK-ACRYN PIC X(8). - 03 EXECBLK-LENGTH PIC 9(4) COMP. - 03 EXECBLK-RESERVED PIC 9(4) COMP. - 03 EXECBLK-MEMBER PIC X(8). - 03 EXECBLK-DDNAME PIC X(8). - 03 EXECBLK-SUBCOM PIC X(8). - 03 EXECBLK-DSNPTR POINTER. - 03 EXECBLK-DSNLEN PIC 9(4) COMP. - PROCEDURE DIVISION USING EXECBLK-PTR - EXECBLK. - SET EXECBLK-PTR TO ADDRESS OF EXECBLK - GOBACK. - END PROGRAM SET-EXECBLK-POINTER. - - ******** SET-EVALBLK-POINTER ******** - IDENTIFICATION DIVISION. - PROGRAM-ID. SET-EVALBLK-POINTER. - ENVIRONMENT DIVISION. - DATA DIVISION. - WORKING-STORAGE SECTION. - LINKAGE SECTION. - 77 EVALBLK-PTR POINTER. - 01 EVALBLK. - 03 EVALBLK-EVPAD1 PIC 9(4) COMP. - 03 EVALBLK-EVSIZE PIC 9(4) COMP. - 03 EVALBLK-EVLEN PIC 9(4) COMP. - 03 EVALBLK-EVPAD2 PIC 9(4) COMP. - 03 EVALBLK-EVDATA PIC X(256). - PROCEDURE DIVISION USING EVALBLK-PTR - EVALBLK. - SET EVALBLK-PTR TO ADDRESS OF EVALBLK - GOBACK. - END PROGRAM SET-EVALBLK-POINTER. - *--- END OF MAIN PROGRAM - END PROGRAM C1UEXT07. + PROCESS DYNAM OUTDD(DISPLAYS) + IDENTIFICATION DIVISION. + PROGRAM-ID. C1UEXT07. + + ************************************************************ + * DESCRIPTION: THIS PACKAGE EXIT PROGRAM WILL: * + * 1) Performs Automated Package Executions * + * by calling REXX subroutine PKGEXECT * + * 2) Performs Automated Package Shipping * + * by calling REXX subroutine PKGESHIP * + * https://github.com/BroadcomMFD/broadcom-product-scripts + ************************************************************ + * THESE ROUTINES ARE DISTRIBUTED BY THE CA STAFF "AS IS". + * NO WARRANTY, EITHER EXPRESSED OR IMPLIED, IS MADE FOR THEM. + * COMPUTER ASSOCIATES CANNOT GUARANTEE THAT THE ROUTINES ARE + * ERROR FREE, OR THAT IF ERRORS ARE FOUND, THEY WILL BE CORRECTED. + ************************************************************ + + ENVIRONMENT DIVISION. + INPUT-OUTPUT SECTION. + FILE-CONTROL. + ** + DATA DIVISION. + FILE SECTION. + + WORKING-STORAGE SECTION. + + 01 WS-DATE-VARIABLES. + 03 WS-DATE-TO-CONVERT PIC X(07). + 03 WS-DATE-CONVERTED. + 05 WS-DATE-CENTURY PIC 9(02). + 05 WS-DATE-YEAR PIC 9(02). + 05 WS-DATE-MONTH PIC 9(02). + 05 WS-DATE-DAY PIC 9(02). + 03 WS-DATE-OF-RUN PIC 9(06). + 03 WS-DOR REDEFINES WS-DATE-OF-RUN. + 05 WS-DOR-YEAR PIC 9(02). + 05 WS-DOR-MONTH PIC 9(02). + 05 WS-DOR-DAY PIC 9(02). + + 03 WS-RUN-DATE PIC 9(06). + 03 FILLER REDEFINES WS-RUN-DATE. + 05 WS-RUN-DATE-YEAR PIC 9(02). + 05 WS-RUN-DATE-MONTH PIC 9(02). + 05 WS-RUN-DATE-DAY PIC 9(02). + + 03 WS-TIME-OF-RUN PIC 9(08). + 03 FILLER REDEFINES WS-TIME-OF-RUN. + 05 WS-TOR. + 10 WS-TOR-HOUR PIC 9(02). + 10 WS-TOR-MINUTE PIC 9(02). + 05 FILLER PIC 9(04). + + 03 WS-RUN-TIME PIC 9(04). + 03 FILLER REDEFINES WS-RUN-TIME. + 05 WS-RUN-TIME-HOUR PIC 9(02). + 05 WS-RUN-TIME-MINUTE PIC 9(02). + + 03 WS-PACKAGE-DATE. + 10 WS-PKG-DAY PIC 9(02). + 10 WS-PKG-MONTH PIC X(03). + 10 WS-PKG-YEAR PIC 9(02). + + 03 WS-PKG-START-DATE. + 10 WS-PKG-START-YEAR PIC 9(02). + 10 WS-PKG-START-MONTH PIC 9(02). + 10 WS-PKG-START-DAY PIC 9(02). + + 03 WS-PKG-END-DATE. + 10 WS-PKG-END-YEAR PIC 9(02). + 10 WS-PKG-END-MONTH PIC 9(02). + 10 WS-PKG-END-DAY PIC 9(02). + + 03 WS-PACKAGE-TIME. + 10 WS-PKG-HOUR PIC 9(02). + 10 FILLER PIC X(01). + 10 WS-PKG-MINUTE PIC 9(02). + + 03 WS-PKG-START-TIME. + 10 WS-PKG-START-HOUR PIC 9(02). + 10 WS-PKG-START-MINUTE PIC 9(02). + + 03 WS-PKG-END-TIME. + 10 WS-PKG-END-HOUR PIC 9(02). + 10 WS-PKG-END-MINUTE PIC 9(02). + + 01 WS-MONTHS-TABLE. + 03 FILLER PIC X(36) + VALUE 'JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC' . + 01 WS-MONTHS-TABLE-RE REDEFINES WS-MONTHS-TABLE. + 03 WS-MONTH OCCURS 12 TIMES INDEXED BY WS-MONTH-INX + PIC X(03). + 01 WS-VARIABLES. + 03 WS-SUBMIT-SWITCH PIC X(01) VALUE 'N'. + 88 SUBMIT-OK VALUE 'S'. + 88 DO-NOT-SUBMIT VALUE 'N'. + 03 WS-TIME PIC 9(8). + 03 WS-PACKAGE-VARIABLE PIC X(01). + 03 WS-JOBCARD-ID PIC X(07) VALUE SPACES. + 03 ME PIC X(07) VALUE 'XALJO11'. + 03 ADMIN1 PIC X(01) VALUE 'P'. + 03 ADMIN2 PIC X(01) VALUE 'T'. + 03 WS-TALLY PIC 9(4) VALUE 0000. + + 01 BPXWDYN PIC X(8) VALUE 'BPXWDYN'. + 01 ALLOC-STRING. + 05 ALLOC-LENGTH PIC S9(4) BINARY VALUE 100. + 05 ALLOC-TEXT PIC X(100). + + 01 IRXJCL PIC X(6) VALUE 'IRXJCL'. + 01 IRXEXEC-PGM PIC X(08) VALUE 'IRXEXEC'. + + * + * DEFINE THE IRXEXEC DATA AREAS AND ARG BLOCKS + * + 77 FLAGS PIC S9(8) BINARY. + 77 REXX-RETURN-CODE PIC S9(8) BINARY. + 77 DUMMY-ZERO PIC S9(8) BINARY. + 77 LPAR-ID PIC X(04). + 88 DO-NOT-PROCESS-LPAR VALUE 'SKIP'. + 77 ARG1 PIC X(16). + 77 UPDPRINT-FILE-STATUS PIC X(02). + 77 ARGUMENT-PTR POINTER. + 77 EXECBLK-PTR POINTER. + 77 ARGTABLE-PTR POINTER. + 77 EVALBLK-PTR POINTER. + 77 TEMP-PTR POINTER. + + 01 EXECBLK. + 05 EXECBLK-ACRYN PIC X(08) VALUE 'IRXEXECB'. + 05 EXECBLK-LENGTH PIC S9(8) BINARY + VALUE 48. + 05 EXECBLK-RESERVED PIC S9(8) BINARY + VALUE 0. + 05 EXECBLK-MEMBER PIC X(08) VALUE 'PKGEXECT'. + 05 EXECBLK-DDNAME PIC X(08) VALUE 'REXFILE7'. + 05 EXECBLK-SUBCOM PIC X(08) VALUE SPACES. + 05 EXECBLK-DSNPTR POINTER VALUE NULL. + 05 EXECBLK-DSNLEN PIC 9(04) COMP + VALUE 0. + + 01 EVALBLK. + 05 EVALBLK-EVPAD1 PIC S9(8) BINARY + VALUE 0. + 05 EVALBLK-EVSIZE PIC S9(8) BINARY + VALUE 34. + 05 EVALBLK-EVLEN PIC S9(8) BINARY + VALUE 0. + 05 EVALBLK-EVPAD2 PIC S9(8) BINARY + VALUE 0. + 05 EVALBLK-EVDATA PIC X(256). + + 01 ARGUMENT. + 02 ARGUMENT-1 OCCURS 1 TIMES. + 05 ARGSTRING-PTR POINTER. + 05 ARGSTRING-LENGTH PIC S9(8) BINARY. + 02 ARGSTRING-LAST1 PIC S9(8) BINARY + VALUE -1. + 02 ARGSTRING-LAST2 PIC S9(8) BINARY + VALUE -1. + + * The block of data below can be used with either an + * IRXJCL or IRXEXEC call to the rexx program PKGEXECT. + * IRXJCL is used when running in batch (batch CAST) . + * IRXEXEC is used when running in foreground (CAST or APPROVE). + 01 PKG-EXECUTE-PARMS-IRXJCL. + 02 PKG-EXECUTE-PARMS-IRXJCL-TOP. + 03 PARM-LENGTH PIC X(2) VALUE X'0114'. + 03 REXX-NAME PIC X(8) VALUE 'PKGEXECT'. + 03 FILLER PIC X(1) VALUE SPACE . + 02 PKG-EXECUTE-PARMS-IRXEXEC. + 03 REXX-EXEC-PACKAGE PIC X(16) . + 03 FILLER PIC X(1) VALUE SPACE . + 03 REXX-EXEC-ENV PIC X(08) . + 03 FILLER PIC X(1) VALUE SPACE . + 03 REXX-EXEC-STGID PIC X(01) . + 03 REXX-EXEC-MODE PIC X(01) . + 03 REXX-EXE-CREATE-USER PIC X(08) . + 03 REXX-EXE-UPDATE-USER PIC X(08) . + 03 REXX-EXE-CAST-USER PIC X(08) . + 03 REXX-EXEC-COMMENT PIC X(50) . + + * The block of data below can be used for submitting pkg shipments + * IRXJCL is always used since executions are always in batch. + 01 PKG-SHIPMENT-PARMS-IRXJCL. + 02 PKG-SHIPMENT-PARMS-IRXJCL-TOP. + 03 PARM-LENGTH PIC X(2) VALUE X'0253'. + 03 REXX-NAME PIC X(8) VALUE 'PKGESHIP'. + 03 FILLER PIC X(1) VALUE SPACE . + 02 PKG-SHIPMENT-PARMS. + 03 REXX-SHIP-PACKAGE PIC X(16) . + 03 FILLER PIC X(1) VALUE SPACE . + 03 REXX-SHIP-ENV PIC X(08) . + 03 FILLER PIC X(1) VALUE SPACE . + 03 REXX-SHIP-STGID PIC X(01) . + 03 FILLER PIC X(1) VALUE SPACE . + 03 REXX-SHIP-COMMENT PIC X(50) . + 03 REXX-SHIP-CREATE-USR PIC X(08) . + 03 REXX-SHIP-UPDATE-USR PIC X(08) . + 03 REXX-SHIP-CAST-USER PIC X(08) . + 03 FILLER PIC X(1) VALUE SPACE . + 03 REXX-SHIP-NOTE1 PIC X(60) . + 03 REXX-SHIP-NOTE2 PIC X(60) . + 03 REXX-SHIP-NOTE3 PIC X(60) . + 03 REXX-SHIP-NOTE4 PIC X(60) . + 03 REXX-SHIP-NOTE5 PIC X(60) . + 03 REXX-SHIP-NOTE6 PIC X(60) . + 03 REXX-SHIP-NOTE7 PIC X(60) . + 03 REXX-SHIP-NOTE8 PIC X(60) . + 03 REXX-SHIP-OUT PIC X(03) . + + LINKAGE SECTION. + COPY PKGXBLKS. + + PROCEDURE DIVISION USING + PACKAGE-EXIT-BLOCK + PACKAGE-REQUEST-BLOCK + PACKAGE-EXIT-HEADER-BLOCK + PACKAGE-EXIT-FILE-BLOCK + PACKAGE-EXIT-ACTION-BLOCK + PACKAGE-EXIT-APPROVER-MAP + PACKAGE-EXIT-BACKOUT-BLOCK + PACKAGE-EXIT-SHIPMENT-BLOCK + PACKAGE-EXIT-SCL-BLOCK. + **** + **** + +******* DISPLAY 'C1UEXT07: GOT INTO EXIT 7' . + ACCEPT WS-DATE-OF-RUN FROM DATE. + ACCEPT WS-TIME-OF-RUN FROM TIME. + MOVE WS-DOR-YEAR TO WS-RUN-DATE-YEAR. + MOVE WS-DOR-MONTH TO WS-RUN-DATE-MONTH. + MOVE WS-DOR-DAY TO WS-RUN-DATE-DAY. + MOVE WS-TOR-HOUR TO WS-RUN-TIME-HOUR. + MOVE WS-TOR-MINUTE TO WS-RUN-TIME-MINUTE. + + IF SETUP-EXIT-OPTIONS +********* to support automated package shipping + MOVE 'Y' TO PECB-AFTER-EXEC + MOVE 'Y' TO PECB-REQ-ELEMENT-ACTION-BIBO + MOVE 'Y' TO PECB-AFTER-BACKOUT + MOVE 'Y' TO PECB-AFTER-BACKIN +********* to enforce package backout = Y +********* MOVE 'Y' TO PECB-BEFORE-CAST +********* MOVE 'Y' TO PECB-MID-CAST + MOVE 'Y' TO PECB-BEFORE-CREATE-BLD + MOVE 'Y' TO PECB-BEFORE-CREATE-COPY + MOVE 'Y' TO PECB-BEFORE-CREATE-EDIT + MOVE 'Y' TO PECB-BEFORE-CREATE-IMPT + MOVE 'Y' TO PECB-BEFORE-MOD-BLD + MOVE 'Y' TO PECB-BEFORE-MOD-CPY + MOVE 'Y' TO PECB-BEFORE-MOD-EDIT + MOVE 'Y' TO PECB-BEFORE-MOD-IMPT +********* to support submission of package Execute jobs + MOVE 'Y' TO PECB-AFTER-REV-APPR + MOVE 'Y' TO PECB-AFTER-CAST + MOVE ZEROS TO RETURN-CODE + GO TO 100-MAIN-EXIT. + + MOVE 0 TO PECB-NDVR-EXIT-RC. + +** *******====---> SUBMIT PACKAGE SHIPMENT JOBS + IF (EXECUTE-PACKAGE AND + PHDR-PACKAGE-STATUS(1:4) = 'EXEC') + OR (BACK-OUT-PACKAGE AND PECB-AFTER ) + OR (BACK-IN-PACKAGE AND PECB-AFTER ) + PERFORM 800-SUBMIT-PACKAGE-SHIPMENTS + GO TO 100-MAIN-EXIT. + + IF CAST-PACKAGE AND PECB-AFTER AND + PHDR-PACKAGE-STATUS = 'APPROVED' +******* DISPLAY 'PERFORM 599-CHECK-SUBMIT-DATES' + PERFORM 599-CHECK-SUBMIT-DATES + IF SUBMIT-OK +******* DISPLAY 'PERFORM 600-SUBMIT-PACKAGE-AUTOMATION' + IF PECB-BATCH-MODE + MOVE SPACES TO ALLOC-TEXT + PERFORM 2100-ALLOCATE-REXFILE + END-IF + PERFORM 600-SUBMIT-PACKAGE-AUTOMATION + PERFORM 2100-ALLOCATE-REXFILE + GO TO 100-MAIN-EXIT + ELSE + GO TO 100-MAIN-EXIT. + + IF REVIEW-PACKAGE AND PECB-AFTER AND + PHDR-PACKAGE-STATUS = 'APPROVED' + PERFORM 599-CHECK-SUBMIT-DATES + IF SUBMIT-OK + IF PECB-BATCH-MODE + MOVE SPACES TO ALLOC-TEXT + PERFORM 2100-ALLOCATE-REXFILE + END-IF + PERFORM 600-SUBMIT-PACKAGE-AUTOMATION + GO TO 100-MAIN-EXIT + ELSE + GO TO 100-MAIN-EXIT. + +******* DISPLAY 'C1UEXT07: PHDR-PACKAGE-STATUS=' +******* PHDR-PACKAGE-STATUS. + + IF PREQ-BACKOUT-ENABLED NOT = 'Y' + MOVE 'Y' TO PREQ-BACKOUT-ENABLED + MOVE 4 TO PECB-NDVR-EXIT-RC + MOVE 'Y' TO PECB-MODS-MADE-TO-PREQ + DISPLAY 'C1UEXT07: Package Backout is Enforced' + END-IF. + + 100-MAIN-EXIT. +******* DISPLAY 'C1UEXT07: GOING BACK ' + + GOBACK. + + + 599-CHECK-SUBMIT-DATES. + + ACCEPT WS-DATE-OF-RUN FROM DATE + ACCEPT WS-TIME-OF-RUN FROM TIME + MOVE WS-DOR-YEAR TO WS-RUN-DATE-YEAR + MOVE WS-DOR-MONTH TO WS-RUN-DATE-MONTH + MOVE WS-DOR-DAY TO WS-RUN-DATE-DAY + MOVE WS-TOR-HOUR TO WS-RUN-TIME-HOUR + MOVE WS-TOR-MINUTE TO WS-RUN-TIME-MINUTE + + MOVE PHDR-PKG-EXEC-STRT-DATE TO WS-DATE-TO-CONVERT + PERFORM 700-CONVERT-DATE-CONVERT + MOVE WS-DATE-YEAR TO WS-PKG-START-YEAR + MOVE WS-DATE-MONTH TO WS-PKG-START-MONTH + MOVE WS-DATE-DAY TO WS-PKG-START-DAY + + MOVE PHDR-PKG-EXEC-END-DATE TO WS-DATE-TO-CONVERT + PERFORM 700-CONVERT-DATE-CONVERT + MOVE WS-DATE-YEAR TO WS-PKG-END-YEAR + MOVE WS-DATE-MONTH TO WS-PKG-END-MONTH + MOVE WS-DATE-DAY TO WS-PKG-END-DAY + + MOVE PHDR-PKG-EXEC-STRT-TIME TO WS-PACKAGE-TIME + MOVE WS-PKG-HOUR TO WS-PKG-START-HOUR + MOVE WS-PKG-MINUTE TO WS-PKG-START-MINUTE + + MOVE PHDR-PKG-EXEC-END-TIME TO WS-PACKAGE-TIME + MOVE WS-PKG-HOUR TO WS-PKG-END-HOUR + MOVE WS-PKG-MINUTE TO WS-PKG-END-MINUTE + + IF PECB-USER-BATCH-JOBNAME(1:7) = ME + DISPLAY 'C1UEXT07: USING THESE DATES' + DISPLAY 'RUN DATE: ' WS-RUN-DATE + ' TIME: ' WS-RUN-TIME + DISPLAY 'START DATE: ' WS-PKG-START-DATE + ' TIME: ' WS-PKG-START-TIME + DISPLAY 'END DATE: ' WS-PKG-END-DATE + ' TIME: ' WS-PKG-END-TIME + END-IF + + SET SUBMIT-OK TO TRUE + IF WS-PKG-START-DATE > WS-RUN-DATE + SET DO-NOT-SUBMIT TO TRUE + END-IF + + IF WS-PKG-START-DATE = WS-RUN-DATE + AND WS-PKG-START-TIME > WS-RUN-TIME + SET DO-NOT-SUBMIT TO TRUE + END-IF + + IF WS-PKG-END-DATE < WS-RUN-DATE + SET DO-NOT-SUBMIT TO TRUE + END-IF + + IF WS-PKG-END-DATE = WS-RUN-DATE + AND WS-PKG-END-TIME < WS-RUN-TIME + SET DO-NOT-SUBMIT TO TRUE + END-IF + + IF PECB-USER-BATCH-JOBNAME(1:7) = ME + DISPLAY 'C1UEXT07: SUBMIT SWITCH: ' WS-SUBMIT-SWITCH + END-IF + . + 600-SUBMIT-PACKAGE-AUTOMATION. + + * MAKES A CALL TO THE REXX ROUTINE PKGEXECT. + * THE REXX ROUTINE PKGEXECT SUBMITS PACKAGE SHIPMENT JOBS. + * THE REXX ROUTINE PKGEXECT SUBMITS PACKAGE SHIPMENT JOBS. + +****** IF PECB-USER-BATCH-JOBNAME(1:7) = ME +****** DISPLAY 'C1UEXT07: SUBMITTING PACKAGE ' +****** PECB-PACKAGE-ID +****** DISPLAY 'C1UEXT07: PHDR-PKG-ENV ' PHDR-PKG-ENV +****** DISPLAY 'C1UEXT07: PHDR-PKG-STGID' PHDR-PKG-STGID +****** END-IF + + MOVE PECB-PACKAGE-ID TO REXX-EXEC-PACKAGE + MOVE PHDR-PKG-ENV TO REXX-EXEC-ENV + MOVE PHDR-PKG-STGID TO REXX-EXEC-STGID + MOVE PECB-MODE TO REXX-EXEC-MODE + MOVE PHDR-PKG-CREATE-USER TO REXX-EXE-CREATE-USER + MOVE PHDR-PKG-UPDATE-USER TO REXX-EXE-UPDATE-USER + MOVE PHDR-PKG-CAST-USER TO REXX-EXE-CAST-USER + MOVE PREQ-PACKAGE-COMMENT TO REXX-EXEC-COMMENT + MOVE 'PKGEXECT' TO EXECBLK-MEMBER . + MOVE 102 TO ARGSTRING-LENGTH(1) + +******** +******** IF PECB-TSO-MODE +******** DISPLAY 'C1UEXT07: IN TSO FOREGROUND ' +******** CALL 'SET-ARG1-POINTER' USING ARGUMENT-PTR +******** PKG-EXECUTE-PARMS-IRXEXEC +******** PERFORM 1800-REXX-CALL-VIA-IRXEXEC +******** ELSE +******** DISPLAY 'C1UEXT07: NOT IN TSO FOREGROUND ' + CALL IRXJCL USING PKG-EXECUTE-PARMS-IRXJCL . + + + IF RETURN-CODE NOT = 0 + DISPLAY 'C1UEXT07: BAD CALL TO IRXJCL - RC = ' + RETURN-CODE + END-IF + + MOVE 0 TO RETURN-CODE + . + 700-CONVERT-DATE-CONVERT. + + SET WS-MONTH-INX TO 1. + SEARCH WS-MONTH VARYING WS-MONTH-INX + AT END MOVE 00 TO WS-DATE-MONTH + WHEN WS-MONTH(WS-MONTH-INX) = WS-DATE-TO-CONVERT(3:3) + SET WS-DATE-MONTH TO WS-MONTH-INX + END-SEARCH + + MOVE WS-DATE-TO-CONVERT (1:2) TO WS-DATE-DAY + MOVE WS-DATE-TO-CONVERT (6:2) TO WS-DATE-YEAR + MOVE '20' TO WS-DATE-CENTURY + . + 800-SUBMIT-PACKAGE-SHIPMENTS. + + * MAKES A CALL TO THE REXX ROUTINE PKGESHIP + * THE REXX ROUTINE PKGESHIP SUBMITS PACKAGE SHIPMENT JOBS + + * Package Shipments may occur in batch only + * As a result, IRXJCL will be always be used to + * submit the package Shipment jobs. + +******* IF PECB-USER-BATCH-JOBNAME(1:7) = 'IBMUSER' +******* DISPLAY 'C1UEXT07: SHIPPING PACKAGE ' +******* PECB-PACKAGE-ID +******* DISPLAY 'C1UEXT07: PHDR-PKG-ENV ' PHDR-PKG-ENV +******* DISPLAY 'C1UEXT07: PHDR-PKG-STGID' PHDR-PKG-STGID +******* END-IF + + PERFORM 2100-ALLOCATE-REXFILE. + + MOVE PECB-PACKAGE-ID TO REXX-SHIP-PACKAGE + MOVE PHDR-PKG-ENV TO REXX-SHIP-ENV + MOVE PHDR-PKG-STGID TO REXX-SHIP-STGID + MOVE PREQ-PACKAGE-COMMENT TO REXX-SHIP-COMMENT + MOVE PHDR-PKG-CREATE-USER TO REXX-SHIP-CREATE-USR + MOVE PHDR-PKG-UPDATE-USER TO REXX-SHIP-UPDATE-USR + MOVE PHDR-PKG-CAST-USER TO REXX-SHIP-CAST-USER + MOVE PHDR-PKG-NOTE1 TO REXX-SHIP-NOTE1 + MOVE PHDR-PKG-NOTE2 TO REXX-SHIP-NOTE2 + MOVE PHDR-PKG-NOTE3 TO REXX-SHIP-NOTE3 + MOVE PHDR-PKG-NOTE4 TO REXX-SHIP-NOTE4 + MOVE PHDR-PKG-NOTE5 TO REXX-SHIP-NOTE5 + MOVE PHDR-PKG-NOTE6 TO REXX-SHIP-NOTE6 + MOVE PHDR-PKG-NOTE7 TO REXX-SHIP-NOTE7 + MOVE PHDR-PKG-NOTE8 TO REXX-SHIP-NOTE8 + IF BACK-OUT-PACKAGE + MOVE 'BAC' TO REXX-SHIP-OUT + ELSE + MOVE 'OUT' TO REXX-SHIP-OUT . + + CALL IRXJCL USING PKG-SHIPMENT-PARMS-IRXJCL. + + MOVE 0 TO RETURN-CODE + . + + + 1800-REXX-CALL-VIA-IRXEXEC. + *--- GET THE ADDRESS OF THE ARGUMENT(S) TO BE PASSED TO IXREXEC + *--- AND LOAD INTO THE ARGUMENT TABLES +******* IF PECB-USER-BATCH-JOBNAME(1:7) = ME +******* DISPLAY 'C1UEXT07: SETTING UP REXX EXECUTION' +******* ' FOR PACKAGE 'PECB-PACKAGE-ID +******* END-IF . + SET ARGSTRING-PTR (1) TO ARGUMENT-PTR . + CALL 'SET-ARGUMENT-POINTER' USING ARGTABLE-PTR + ARGUMENT . + CALL 'SET-EXECBLK-POINTER' USING EXECBLK-PTR + EXECBLK . + CALL 'SET-EVALBLK-POINTER' USING EVALBLK-PTR + EVALBLK . + *--- SET FLAGS TO HEX 20000000 + * I.E. EXEC INVOKED AS SUBROUTINE + MOVE 536870912 TO FLAGS + MOVE 0 TO REXX-RETURN-CODE . + + IF PECB-USER-BATCH-JOBNAME(1:7) = ME + DISPLAY 'C1UEXT07: CALLING IRXEXC ' + PECB-PACKAGE-ID + END-IF . + *--- CALL THE REXX EXEC --- + CALL IRXEXEC-PGM USING EXECBLK-PTR + ARGTABLE-PTR + FLAGS + DUMMY-ZERO + DUMMY-ZERO + EVALBLK-PTR + DUMMY-ZERO + DUMMY-ZERO + DUMMY-ZERO . + + IF REXX-RETURN-CODE NOT = 0 + DISPLAY 'C1UEXT07: IRXEXEC RETURN CODE = ' + REXX-RETURN-CODE + END-IF + + CANCEL IRXEXEC-PGM + . + + 2100-ALLOCATE-REXFILE. + + MOVE SPACES TO ALLOC-TEXT. + + STRING 'ALLOC DD(REXFILE7) ', + 'DA(YOURSITE.NDVR.REXX) SHR REUSE' + DELIMITED BY SIZE + INTO ALLOC-TEXT + END-STRING . + PERFORM 9000-DYNAMIC-ALLOC-DEALLOC . + STRING 'ALLOC DD(SYSEXEC) ', + 'DA(YOURSITE.NDVR.REXX) SHR REUSE' + DELIMITED BY SIZE + INTO ALLOC-TEXT + END-STRING. + PERFORM 9000-DYNAMIC-ALLOC-DEALLOC . + +********** MOVE 'CONCAT DDLIST(REXFILE,REXFILE2)' +********** TO ALLOC-TEXT . +********** +********** PERFORM 9000-DYNAMIC-ALLOC-DEALLOC . + + ***************************************************************** + ** DYNAMICALLY DE-ALLOCATE UNNEEDED REXX FILES + ***************************************************************** + 2200-FREE-REXFILES. + + MOVE 'FREE DD(REXFILE7)' TO ALLOC-TEXT + PERFORM 9000-DYNAMIC-ALLOC-DEALLOC + + MOVE 'FREE DD(SYSEXEC)' TO ALLOC-TEXT + PERFORM 9000-DYNAMIC-ALLOC-DEALLOC + . + ***************************************************************** + ** CALL BPXWDYN TO PREFORM REQUIRED REXX FUNCTIONS + ***************************************************************** + 9000-DYNAMIC-ALLOC-DEALLOC. + + CALL BPXWDYN USING ALLOC-STRING + + IF RETURN-CODE NOT = ZERO + DISPLAY 'C1UEXT07: ALLOCATION FAILED: RETURN CODE = ' + RETURN-CODE + DISPLAY ALLOC-TEXT + END-IF + + MOVE SPACES TO ALLOC-TEXT + . + + + ****************************************************************** + * BEGIN NESTED PROGRAMS USED TO SET THE POINTERS OF DATA AREAS + * THAT ARE BEING PASSED TO IRXEXEC SO THAT A REXX ROUTINE CAN + * PASS DATA (OTHER THAN A RETURN CODE) BACK TO A COBOL PROGRAM. + ****************************************************************** + + ******** SET-ARG1-POINTER ******** + IDENTIFICATION DIVISION. + PROGRAM-ID. SET-ARG1-POINTER. + ENVIRONMENT DIVISION. + DATA DIVISION. + WORKING-STORAGE SECTION. + LINKAGE SECTION. + 77 ARG-PTR POINTER. + 77 ARG1 PIC X(16). + PROCEDURE DIVISION USING ARG-PTR + ARG1. + SET ARG-PTR TO ADDRESS OF ARG1 + GOBACK. + END PROGRAM SET-ARG1-POINTER. + + ******** SET-ARGUMENT-POINTER ******** + IDENTIFICATION DIVISION. + PROGRAM-ID. SET-ARGUMENT-POINTER. + ENVIRONMENT DIVISION. + DATA DIVISION. + WORKING-STORAGE SECTION. + LINKAGE SECTION. + 77 ARGTABLE-PTR POINTER. + 01 ARGUMENT. + 02 ARGUMENT-1 OCCURS 1 TIMES. + 05 ARGSTRING-PTR POINTER. + 05 ARGSTRING-LENGTH PIC S9(8) BINARY. + 02 ARGSTRING-LAST1 PIC S9(8) BINARY. + 02 ARGSTRING-LAST2 PIC S9(8) BINARY. + PROCEDURE DIVISION USING ARGTABLE-PTR + ARGUMENT. + SET ARGTABLE-PTR TO ADDRESS OF ARGUMENT + GOBACK. + END PROGRAM SET-ARGUMENT-POINTER. + + ******** SET-EXECBLK-POINTER ******** + IDENTIFICATION DIVISION. + PROGRAM-ID. SET-EXECBLK-POINTER. + ENVIRONMENT DIVISION. + DATA DIVISION. + WORKING-STORAGE SECTION. + LINKAGE SECTION. + 77 EXECBLK-PTR POINTER. + 01 EXECBLK. + 03 EXECBLK-ACRYN PIC X(8). + 03 EXECBLK-LENGTH PIC 9(4) COMP. + 03 EXECBLK-RESERVED PIC 9(4) COMP. + 03 EXECBLK-MEMBER PIC X(8). + 03 EXECBLK-DDNAME PIC X(8). + 03 EXECBLK-SUBCOM PIC X(8). + 03 EXECBLK-DSNPTR POINTER. + 03 EXECBLK-DSNLEN PIC 9(4) COMP. + PROCEDURE DIVISION USING EXECBLK-PTR + EXECBLK. + SET EXECBLK-PTR TO ADDRESS OF EXECBLK + GOBACK. + END PROGRAM SET-EXECBLK-POINTER. + + ******** SET-EVALBLK-POINTER ******** + IDENTIFICATION DIVISION. + PROGRAM-ID. SET-EVALBLK-POINTER. + ENVIRONMENT DIVISION. + DATA DIVISION. + WORKING-STORAGE SECTION. + LINKAGE SECTION. + 77 EVALBLK-PTR POINTER. + 01 EVALBLK. + 03 EVALBLK-EVPAD1 PIC 9(4) COMP. + 03 EVALBLK-EVSIZE PIC 9(4) COMP. + 03 EVALBLK-EVLEN PIC 9(4) COMP. + 03 EVALBLK-EVPAD2 PIC 9(4) COMP. + 03 EVALBLK-EVDATA PIC X(256). + PROCEDURE DIVISION USING EVALBLK-PTR + EVALBLK. + SET EVALBLK-PTR TO ADDRESS OF EVALBLK + GOBACK. + END PROGRAM SET-EVALBLK-POINTER. + *--- END OF MAIN PROGRAM + END PROGRAM C1UEXT07. diff --git a/endevor/Field-Developed-Programs/Package-Automation/CASTPKGE.jcl b/endevor/Field-Developed-Programs/Package-Automation/CASTPKGE.jcl new file mode 100644 index 0000000..ea4410c --- /dev/null +++ b/endevor/Field-Developed-Programs/Package-Automation/CASTPKGE.jcl @@ -0,0 +1,20 @@ +//CASTPKGE JOB (1), +// 'CAST PACKAGE',CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID +//*==================================================================* +// JCLLIB ORDER=(YOURSITE.NDVR.TEAM.JCL) +//*==================================================================* +//*===== If you want all package CAST actions to be performed * +//*===== in batch, then set the Force_CAST_in_Batch option in * +//*===== C1UEXTR7, and this JCL will submit a batch CAST. * +//*==================================================================* +//ENBP1000 EXEC PGM=NDVRC1,PARM=ENBP1000, CASTPKGE +// DYNAMNBR=1500,REGION=4096K +// INCLUDE MEMBER=STEPLIB +//C1MSGS1 DD SYSOUT=* +//C1MSGS2 DD SYSOUT=* +//SYSUDUMP DD SYSOUT=* +//SYMDUMP DD DUMMY +//JCLOUT DD DUMMY +//C1UEXTR7 DD DUMMY <- Trace REXX exit +//*C1UEXTR7 DD DUMMY <- Trace REXX exit +//ENPSCLIN DD * diff --git a/endevor/Field-Developed-Programs/Package-Automation/PKG#MODL.skl b/endevor/Field-Developed-Programs/Package-Automation/PKG#MODL.skl index 596bf41..3121665 100644 --- a/endevor/Field-Developed-Programs/Package-Automation/PKG#MODL.skl +++ b/endevor/Field-Developed-Programs/Package-Automation/PKG#MODL.skl @@ -1,38 +1,38 @@ -//&Jobname JOB (&AltIDAcctCode), -// 'ENDEVOR JOB',MSGLEVEL=(1,1),CLASS=&AltIDJobClass, -// REGION=0M,MSGCLASS=A,NOTIFY=&SYSUID -//*-------------------------------------------------------------------* -// JCLLIB ORDER=(&MySEN2Library, -// &MySENULibrary) -//*-------------------------------------------------------------------* -//********************************************************************* -//* BATCH JCL STATEMENTS * -//********************************************************************* -//NDVRBAT EXEC PGM=NDVRC1,DYNAMNBR=1500,REGION=4096K, -// PARM='C1BM3000,,&Package' -// INCLUDE MEMBER=SCMM@LIB <- Endevor STEPLIB+CONLIB -//SYSPRINT DD SYSOUT=* -//********************************************************************* -//* SORT WORK FILES * -//********************************************************************* -//SORTWK01 DD UNIT=3390,SPACE=(CYL,(1,2)) -//SORTWK02 DD UNIT=3390,SPACE=(CYL,(1,2)) -//SORTWK03 DD UNIT=3390,SPACE=(CYL,(1,2)) -//C1TPDD01 DD UNIT=3390,SPACE=(CYL,5), -// DCB=(RECFM=VB,LRECL=260) -//C1TPDD02 DD UNIT=3390,SPACE=(CYL,5), -// DCB=(RECFM=VB,LRECL=260) -//********************************************************************* -//* OUTPUT DATA SETS * -//********************************************************************* -//C1MSGS1 DD SYSOUT=* -//C1MSGS2 DD SYSOUT=* -//C1PRINT DD SYSOUT=*,DCB=(RECFM=FBA,LRECL=133) -//SYSUDUMP DD SYSOUT=* -//SYMDUMP DD DUMMY -//SYSOUT DD SYSOUT=* -//BSTIPT01 DD UNIT=3390, -// SPACE=(TRK,(15,5)), -// DISP=(NEW,PASS,DELETE), -// DCB=(RECFM=FB,LRECL=80,DSORG=PS) -//* PKG#MODL GENERATED BY &USERID ON &DATE8 AT &TIME6 +//&Userjob JOB (&AltIDAcctCode), +// 'ENDEVOR JOB',MSGLEVEL=(1,1),CLASS=&AltIDJobClass, +// REGION=0M,MSGCLASS=A,NOTIFY=&SYSUID +//*-------------------------------------------------------------------* +// JCLLIB ORDER=(&MySEN2Library, +// &MySENULibrary) +//*-------------------------------------------------------------------* +//********************************************************************* +//* Batch JCL Statements * +//********************************************************************* +//NDVRBAT EXEC PGM=NDVRC1,DYNAMNBR=1500,REGION=4096K, PKG#MODL +// PARM='C1BM3000,,&Package' +// INCLUDE MEMBER=SCMM@LIB <- Endevor STEPLIB+CONLIB +//SYSPRINT DD SYSOUT=* +//********************************************************************* +//* SORT WORK FILES * +//********************************************************************* +//SORTWK01 DD UNIT=3390,SPACE=(CYL,(1,2)) +//SORTWK02 DD UNIT=3390,SPACE=(CYL,(1,2)) +//SORTWK03 DD UNIT=3390,SPACE=(CYL,(1,2)) +//C1TPDD01 DD UNIT=3390,SPACE=(CYL,5), +// DCB=(RECFM=VB,LRECL=260) +//C1TPDD02 DD UNIT=3390,SPACE=(CYL,5), +// DCB=(RECFM=VB,LRECL=260) +//********************************************************************* +//* OUTPUT DATA SETS * +//********************************************************************* +//C1MSGS1 DD SYSOUT=* +//C1MSGS2 DD SYSOUT=* +//C1PRINT DD SYSOUT=*,DCB=(RECFM=FBA,LRECL=133) +//SYSUDUMP DD SYSOUT=* +//SYMDUMP DD DUMMY +//SYSOUT DD SYSOUT=* +//BSTIPT01 DD UNIT=3390, +// SPACE=(TRK,(15,5)), +// DISP=(NEW,PASS,DELETE), +// DCB=(RECFM=FB,LRECL=80,DSORG=PS) +//* PKG#MODL GENERATED BY &USERID ON &DATE8 AT &TIME6 diff --git a/endevor/Field-Developed-Programs/Package-Automation/PKGEEXEC.tbl b/endevor/Field-Developed-Programs/Package-Automation/PKGEEXEC.tbl index 812898c..523d699 100644 --- a/endevor/Field-Developed-Programs/Package-Automation/PKGEEXEC.tbl +++ b/endevor/Field-Developed-Programs/Package-Automation/PKGEEXEC.tbl @@ -1,2 +1,2 @@ -* Environment Stage Jobname- - * * &Userjob +* Package + * diff --git a/endevor/Field-Developed-Programs/Package-Automation/PKGESHIP.rex b/endevor/Field-Developed-Programs/Package-Automation/PKGESHIP.rex index 0aa71de..9323db5 100644 --- a/endevor/Field-Developed-Programs/Package-Automation/PKGESHIP.rex +++ b/endevor/Field-Developed-Programs/Package-Automation/PKGESHIP.rex @@ -1,540 +1,545 @@ -/* REXX */ -/* THESE ROUTINES ARE DISTRIBUTED BY THE CA TECHNOLOGIES STAFF - "AS IS". NO WARRANTY, EITHER EXPRESSED OR IMPLIED, IS MADE - FOR THEM. CA TECHNOLOGIES CANNOT GUARANTEE THAT THE ROUTINES - ARE ERROR FREE, OR THAT IF ERRORS ARE FOUND, THEY WILL BE - CORRECTED. -*/ -/* - This REXX submits automatically 0 or more package shipping - jobs. -*/ -/* WRITTEN BY DAN WALTHER */ - -/* Runs only 4 userid = IBMUSER (if uncommented) */ -/* - If USERID() /= 'IBMUSER' then Exit -*/ - /* <---- Variable settings for each site */ - - STRING = "ALLOC DD(SYSTSPRT) SYSOUT(A) " - CALL BPXWDYN STRING; - Trace Off - - /* If a DDNAME of PKGESHIP is allocated, then Trace */ - WhatDDName = 'PKGESHIP' - CALL BPXWDYN "INFO FI("WhatDDName")", - "INRTDSN(DSNVAR) INRDSNT(myDSNT)" - if Substr(DSNVAR,1,1) /= ' ' then TraceRc = 1; - IF TraceRc = 1 then Trace R - - STRING = "ALLOC DD(SYSPRINT) SYSOUT(A) " - CALL BPXWDYN STRING; - -/* Variable settings for each site ---> */ - WhereIam = WHERE@M1() - RunUnderAltid = 'N' ; /* Y/N */ - - /* The site determines whether to engage Endevor hooks */ - EndevorHooks = 'N' - - /* If just shipping to one destination, then use */ - /* ShipSchedulingMethod = 'One ' */ - /* if there only a few destinations (in notes), then use */ - /* ShipSchedulingMethod = 'Notes' */ - /* if using a RULES file and Trigger, then use */ - /* ShipSchedulingMethod = 'Rules' */ - interpret 'Call' WhereIam "'ShipSchedulingMethod'" - ShipSchedulingMethod = Result - - If ShipSchedulingMethod = 'One' then, - Do - interpret 'Call' WhereIam "'Destination'" - Destination = Result - interpret 'Call' WhereIam "'Destination'" - Destination = Result - interpret 'Call' WhereIam "'Hostprefix'" - Hostprefix = Result - interpret 'Call' WhereIam "'Rmteprefix'" - Rmteprefix = Result - interpret 'Call' WhereIam "'ModelMember'" - ModelMember = Result - End - interpret 'Call' WhereIam "'SHLQ'" - SHLQ = Result - - interpret 'Call' WhereIam "'MyAUTHLibrary'" - MyAUTHLibrary = Result - interpret 'Call' WhereIam "'MyAUTULibrary'" - MyAUTULibrary = Result - interpret 'Call' WhereIam "'MyLOADLibrary'" - MyLOADLibrary = Result - - interpret 'Call' WhereIam "'MySEN2Library'" - MySEN2Library = Result - - interpret 'Call' WhereIam "'MySENULibrary'" - MySENULibrary = Result - - interpret 'Call' WhereIam "'MyOPT2Library'" - MyOPT2Library = Result - - interpret 'Call' WhereIam "'MyOPTNLibrary'" - MyOPTNLibrary = Result - - interpret 'Call' WhereIam "'MyCLS0Library'" - HSYSEXEC = Result - MyCLS0Library = HSYSEXEC - - interpret 'Call' WhereIam "'MyCLS2Library'" - HSYSEXEC = Result - MyCLS2Library = HSYSEXEC - Say 'Running PKGESHIP in' MyCLS2Library - - interpret 'Call' WhereIam "'AltIDAcctCode'" - AltIDAcctCode= Result - - interpret 'Call' WhereIam "'AltIDJobClass'" - AltIDJobClass= Result - - interpret 'Call' WhereIam "'AltIDMsgClass'" - AltIDMsgClass= Result - - interpret 'Call' WhereIam "'TransmissionModels'" - TransmissionModels = Result - - interpret 'Call' WhereIam "'MyHomeAddress'" - MyHomeAddress = Result - - ARG Parms ; - -/* if called by zowe, then this is the Argument .... */ - If Length(Parms) < 18 then, - Do - Package = Translate(Parms,' ',"'") - Package = Strip(Package) - Say Length(Package) Package - PkgExecJobname = USERID() || 'S' /*Userid + S */ - End /* If Length(Parms) < 18 */ - Else - Do - /* if called by exit, then these are the Arguments.... */ - Notes.7 = Substr(PARMS,414,60) ; - If Substr(Notes.7,1,5) = 'TRACE' then Trace r - Package = Substr(PARMS,1,16) ; - - Environ = Substr(PARMS,18,08) ; - Stage = Substr(PARMS,27,01) ; - CREATE_USER = Substr(PARMS,29,08) ; - UPDATE_USER = Substr(PARMS,37,08) ; - CAST_USER = Substr(PARMS,45,08) ; - Notes.1 = Substr(PARMS,054,60) ; - Notes.2 = Substr(PARMS,114,60) ; - Notes.3 = Substr(PARMS,174,60) ; - Notes.4 = Substr(PARMS,234,60) ; - Notes.5 = Substr(PARMS,294,60) ; - Notes.6 = Substr(PARMS,354,60) ; - Notes.7 = Substr(PARMS,414,60) ; - Notes.8 = Substr(PARMS,474,60) ; - ShipOutput = Substr(PARMS,584,03) ; - PkgExecJobname = MVSVAR('SYMDEF',JOBNAME ) /*Returns JOBNAME */ - End /* Else */ - -/* If ShipOutput /= 'BAC' THEN ShipOutput = 'OUT' */ - TYPRUN = ' ' - -/* IF you want to use the package prefix to select packages */ -/* for shipments, then tailor and uncomment the next line: */ -/* If Substr(Package,1,2) /= 'PR' then exit */ - -/* If ShipOutput /= 'BAC' THEN ShipOutput = 'OUT' */ - TYPRUN = ' ' -/* */ -/* This Rexx participates in the submission of Endevor Package */ -/* Shipment jobs. It is called by the Endevor exit program C1UEXT07 */ -/* */ -/* First. See if the package has any package backouts ... */ -/* */ - Call CSV_to_List_Package_Id - If BACKOUT_RCD_EXIST = 'N' then Exit -/* Allocate and prepare files for updating the shipment transaction */ -/* file, and submitting package shipments for those scheduled for */ -/* immediate submission. */ -/* */ - - Userid = USERID() - Date8 = DATE('S') - Date6 = substr(Date8,3); - Temp = TIME('L') - - Time8 = Substr(Temp,1,2) ||, - Substr(Temp,4,2) ||, - Substr(Temp,7,2) ||, - Substr(Temp,10,2) ; - Time6 = Substr(Temp,1,2) ||, - Substr(Temp,4,2) ||, - Substr(Temp,7,2) ; - - TodaysDate = DATE('S') ; - NOW = TIME(L); - HOUR = SUBSTR(NOW,1,2) ; - IF HOUR = '00' THEN HOUR = '0' - MINUTE = SUBSTR(NOW,4,2) ; - CurrentTime= HOUR || MINUTE ; - SENDNODE = MVSVAR(SYSNAME) - ShipOutput = 'OUT' - VDDRSPFX = 'PSP.ENDV' - - $All_VARIABLES = "Jobname Destination Userid ", - "PkgExecJobname MyOPTNLibrary MyAUTULibrary ", - "MyAUTHLibrary MyLOADLibrary MyCLS0Library ", - "MyHomeAddress ", - "Package Date8 Date6 Time8 Time6 Notify ", - "Typrun SENDNODE $delimiter ShipOutput ", - "SHLQ MySEN2Library MySENULibrary MyOPT2Library ", - "MyCLS2Library AltIDAcctCode AltIDJobClass ", - "AltIDMsgClass VDDRSPFX HSYSEXEC OUT" - - Trace R - sa= 'Back to PKGESHIP' - /* If Scheduling Package Shipments, then BILDTGGR */ - /* determines sites and updates the Trigger file . */ - /* If any Sites can receive Shipments immediately, then */ - /* BILDTGGR indicates so in its Return code. */ - If ShipSchedulingMethod = 'Rules' then, - Do - BildRC = BILDTGGR(Parms) - /* The immediate shipments are queued by BILDTGGR in a Table */ - If BildRC = 1 then, - Do - Userid = USERID() ; - PULLTGGRParms = Userid'.PULLTGGR' MySEN2Library - Call PULLTGGR PULLTGGRParms ; - End - End /* SchedulingPackageShipBundle */ - Else, - If ShipSchedulingMethod = 'Notes' then, - Do n# = 8 to 1 by -1 - /* Pulling shipment data from package notes */ - /* Examine Package notes to find Destination and schedule info */ - /* - Submit Package Shipments for those that can be submitted */ - /* immeditely. */ - /* (future submissions are not supported ) */ - tmp = NOTES.n# ; - if Substr(tmp,1,3) /= "TO " then leave ; - if Substr(tmp,12,2) /= ": " then leave ; - tmp = Substr(OVERLAY(" ",tmp,12),3) ; - Destination = Word(tmp,1) ; - /* Default to first model */ - ModelMember = Word(TransmissionModels,1) - /* Get info for Destination */ - Call GetDestinationInfo; - Hostprefix = Strip(Substr(apiDestinations.1,079,14)) - Rmteprefix = Strip(Substr(apiDestinations.1,113,14)) - /* - */ - Date = Word(tmp,2) ; - Time = Word(tmp,3) ; - Jobname = Word(tmp,4) ; - If Words(tmp) > 4 then, - If Word(tmp,5) = "HOLD" then, - Notify = Notify",TYPRUN=HOLD" - If Date <= TodaysDate &, - Time <= CurrentTime then, - Do - Call AllocateModel; - Call SubmitPackageShipmentFromNotes; - End ; - tmp = Substr(OVERLAY(" ",tmp,12),3) ; - End; /* Do n# = 8 to 1 by -1 */ - Else, /* Is there only one Destination etc */ - If ShipSchedulingMethod = 'One' then, - Do - JobName = PkgExecJobname - Call AllocateModel; - Call SubmitPackageShipmentFromNotes; - End; /* .. Else... */ - -/* */ -/* All Done */ -/* */ - - Exit - -AllocateModel: -/* */ -/* Submit immediate package shipment jobs */ -/* */ -/* Allocate files */ -/* */ -/* A Model is used for building Package Shipment JCL */ -/* */ - STRING = 'ALLOC DD(MODEL) ', - "DA('"MySEN2Library"("ModelMember")') SHR REUSE " - CALL BPXWDYN STRING; - - Return; - -SubmitPackageShipmentFromNotes: -/* */ -/* This subroutine is modified from the TBL#TOOL */ -/* */ - - "EXECIO * DISKR "MODEL "(STEM $Model. FINIS" ; - $delimiter = "^" ; - - DO $LINE = 1 TO $Model.0 - $PLACE_VARIABLE = 1; - CALL EVALUATE_SYMBOLICS ; - END; /* DO $LINE = 1 TO $Model.0 */ - - STRING = "ALLOC DD(SHIPJCL) LRECL(80) BLKSIZE(27920) ", - " DSORG(PS) ", - " SPACE(2,2) RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - "EXECIO * DISKW SHIPJCL (STEM $Model. FINIS" ; - - If RunUnderAltid = 'Y' then CALL SWAP2ALT - Call Submit_Job ; - If RunUnderAltid = 'Y' then CALL SWAP2USR - - Drop $Model. ; - - STRING = "FREE DD(SHIPJCL) DELETE" - CALL BPXWDYN STRING; - - RETURN; - -/* */ -/* The subroutine below is borrowed from the TBL#TOOL */ -/* */ -EVALUATE_SYMBOLICS: - - DO FOREVER; - $PLACE_VARIABLE = POS('&',$Model.$LINE,$PLACE_VARIABLE) - IF $PLACE_VARIABLE = 0 THEN LEAVE; - $temp_$LINE = TRANSLATE($Model.$LINE,' ',',.()"/\+-*|'); - $temp_$LINE = TRANSLATE($temp_$LINE,' ',"'"$delimiter); - $table_word = WORD(SUBSTR($temp_$LINE,($PLACE_VARIABLE+1)),1); - $table_word = TRANSLATE($table_word,'_','-') ; - $varlen = LENGTH($table_word) + 1 ; - - if WORDPOS($table_word,$All_VARIABLES) = 0 then, - do - $PLACE_VARIABLE = $PLACE_VARIABLE + 1 ; - iterate; - end; - - $temp_word = VALUE($table_word) ; - IF DATATYPE($temp_word,S) = 9 THEN, - $temp = 'SYMBVALUE = ' $temp_word ; - ELSE, - $temp = "SYMBVALUE = '"$temp_word"'" ; - INTERPRET $temp; - SA= 'SYMBVALUE = ' SYMBVALUE ; - - $tail = SUBSTR($Model.$LINE,($PLACE_VARIABLE+$varlen)) ; - if Substr($tail,1,1) = $delimiter then, - $tail = SUBSTR($tail,2) ; - IF $PLACE_VARIABLE > 1 THEN, - $Model.$LINE = , - SUBSTR($Model.$LINE,1,($PLACE_VARIABLE-1)) ||, - SYMBVALUE || $tail ; - else, - $Model.$LINE = , - SYMBVALUE || $tail ; - END; /* DO FOREVER */ - - RETURN; - -Submit_Job: - - "Execio * DISKR SHIPJCL ( Stem jcl. finis" - "Execio * DISKW SYSTSPRT ( Stem jcl. " - - STRING = "ALLOC DD(SUBMIT)", - "SYSOUT(A) WRITER(INTRDR) REUSE " ; - CALL BPXWDYN STRING; - "Execio * DISKW SUBMIT ( Stem jcl. finis" - - STRING = "FREE DD(SUBMIT)" - CALL BPXWDYN STRING; - - RETURN; - -GetDestinationInfo: - - /* Set values for Hostprefix and Rmteprefix */ - /* From the site definition */ - - /* Call API to Get Destination information */ - - - ADDRESS TSO - "ALLOC F(BSTAPI) DA(*) REUSE " - "ALLOC F(BSTERR) DA(*) REUSE " - STRING = "ALLOC DD(APIMSGS) LRECL(133) BLKSIZE(13300) ", - " DSORG(PS) ", - " SPACE(1,1) RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(APILIST) LRECL(2048) BLKSIZE(22800) ", - " DSORG(PS) ", - " SPACE(1,1) RECFM(V,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - /* Call API to Get Destination information */ - parm = Left(Destination'*',7) - - ADDRESS TSO "CALL *(APIALDST) '"||parm||"'" - RETURN_RC = RC ; - If RETURN_RC > 0 then, - DO - SA= 'CANNOT GET INFORMATION FROM ENDEVOR' ; - EXIT - END ; - "EXECIO * DISKR APILIST ( Stem apiDestinations. FINIS" - STRING = "FREE DD(APILIST)" - CALL BPXWDYN STRING; - STRING = "FREE DD(APIMSGS)" - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTAPI) " - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTERR) " - CALL BPXWDYN STRING; - - Return ; - -CSV_to_List_Package_Id: - - /* To Search the package shipping table, we need the Entry */ - /* Environment information as a search criteria. */ - /* Get it from the USER-DATA field on the 1st element. */ - - - STRING = "ALLOC DD(C1MSGS1) DUMMY " - CALL BPXWDYN STRING; - STRING = "ALLOC DD(BSTERR) DUMMY " - CALL BPXWDYN STRING; - STRING = "ALLOC DD(BSTAPI) DUMMY " - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(EXTRACTM) LRECL(4000) BLKSIZE(32000) ", - " DSORG(PS) ", - " SPACE(1,5) RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(BSTIPT01) LRECL(80) BLKSIZE(800) ", - " DSORG(PS) ", - " SPACE(1,5) RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - QUEUE "LIST PACKAGE ID '"Package"'" - QUEUE " TO DDNAME 'EXTRACTM' " - QUEUE " ." - - "EXECIO" QUEUED() "DISKW BSTIPT01 (FINIS "; - - ADDRESS LINK 'BC1PCSV0' ; /* load from authlib */ - -/* ADDRESS TSO 'ISRDDN' */ - call_rc = rc ; - - "EXECIO * DISKR EXTRACTM (STEM API. finis" - - STRING = "FREE DD(EXTRACTM)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTIPT01)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(C1MSGS1)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTERR)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTAPI)" ; - CALL BPXWDYN STRING; - - IF API.0 < 2 THEN RETURN; - - $table_variables= Strip(API.1,'T') - - $table_variables = translate($table_variables,"_"," ") ; - $table_variables = translate($table_variables," ",',"') ; - $table_variables = translate($table_variables,"@","/") ; - $table_variables = translate($table_variables,"@",")") ; - $table_variables = translate($table_variables,"@","(") ; - $table_variables = translate($table_variables,"_","-") ; - - Do rec# = 2 to API.0 - $detail = API.rec# - - Trace off - /* Parse the Detail record until done */ - Do $column = 1 to Words($table_variables) - Call ParseDetailCSVline - End - Trace r - End; /* Do rec# = 1 to API.0 */ - - RETURN ; - - -ParseDetailCSVline: - - /* Find the data for the current $column */ - - $dlmchar = Substr($detail,1,1); - - If $dlmchar = "'" then, - Do - SA= 'parsing with single quote ' - PARSE VAR $detail "'" $temp_value "'" $detail ; - If Substr($detail,1,1) = ',' then, - $detail = Strip(Substr($detail,2),'L') - End - Else, - If $dlmchar = '"' then, - Do - SA= 'parsing with double quote ' - PARSE VAR $detail '"' $temp_value '"' $detail ; - If Substr($detail,1,1) = ',' then, - $detail = Strip(Substr($detail,2),'L') - End - Else, - If $dlmchar = ',' then, - Do - SA= 'parsing with comma ' - PARSE VAR $detail ',' $temp_value ',' $detail ; - If Substr($detail,1,1)/= ',' then, - $detail = "," || $detail - $detail = Strip(Substr($detail,2),'L') */ - End - Else, - If Words($detail) = 0 then, - $temp_value = ' ' - Else, - Do - SA= 'parsing with comma ' - PARSE VAR $detail $temp_value ',' $detail ; - Sa= '$temp_value=>' $temp_value '<' - End - $temp_value = STRIP($temp_value) ; - $rslt = $temp_value - $rslt = Strip($rslt,'B','"') ; - $rslt = Strip($rslt,'B',"'") ; - if Length($rslt) < 1 then $rslt = ' ' - if Length($rslt) < 250 then, - $temp = WORD($table_variables,$column) '= "'$rslt'"'; - Else, - $temp = WORD($table_variables,$column) "=$rslt" - If rec# < 0 then Say $temp - Say $temp; - Interpret $temp; - - RETURN ; - +/* REXX */ +/* */ +/* https://github.com/BroadcomMFD/broadcom-product-scripts */ +/* */ +/* This rexx is called by a package exit program, receives a */ +/* package name, compares the package content to SHIPRULE, */ +/* and may submit zero or more jobs to ship the package. */ +/* Subroutines BILDTGGR and PULLTGGR do a lot of the work. */ +/* */ +/* If uncommented, the exit Runs only 4 IBMUSER */ +/* If USERID() /= 'IBMUSER' then Exit */ +/* */ +/* THESE ROUTINES ARE DISTRIBUTED BY THE CA TECHNOLOGIES STAFF + "AS IS". NO WARRANTY, EITHER EXPRESSED OR IMPLIED, IS MADE + FOR THEM. CA TECHNOLOGIES CANNOT GUARANTEE THAT THE ROUTINES + ARE ERROR FREE, OR THAT IF ERRORS ARE FOUND, THEY WILL BE + CORRECTED. +*/ +/* + This REXX submits automatically 0 or more package shipping + jobs. + Optionally, if the EndevorHooks value is Y, then invoke + the NDVRHOOK program to support Endevor Hooks +*/ +/* WRITTEN BY DAN WALTHER */ + +/* Runs only 4 userid = IBMUSER (if uncommented) */ +/* + If USERID() /= 'IBMUSER' then Exit +*/ + + STRING = "ALLOC DD(SYSTSPRT) SYSOUT(A) " + CALL BPXWDYN STRING; + + /* If a DDNAME of PKGESHIP is allocated, then Trace */ + WhatDDName = 'PKGESHIP' + CALL BPXWDYN "INFO FI("WhatDDName")", + "INRTDSN(DSNVAR) INRDSNT(myDSNT)" + if Substr(DSNVAR,1,1) /= ' ' then TraceRc = 1; + IF TraceRc = 1 then Trace R + + STRING = "ALLOC DD(SYSPRINT) SYSOUT(A) " + CALL BPXWDYN STRING; + +/* Variable settings for each site ---> */ + WhereIam = WHERE@M1() + RunUnderAltid = 'Y' ; /* Y/N */ + + /* The site determines whether to engage Endevor hooks */ + EndevorHooks = 'N' + interpret 'Call' WhereIam "'EndevorHooks'" + EndevorHooks = Result + + /* If just shipping to one destination, then use */ + /* ShipSchedulingMethod = 'None ' */ + /* if there only a few destinations (in notes), then use */ + /* ShipSchedulingMethod = 'Notes' */ + /* if using a RULES file and Trigger, then use */ + /* ShipSchedulingMethod = 'Rules' */ + interpret 'Call' WhereIam "'ShipSchedulingMethod'" + ShipSchedulingMethod = Result + + If ShipSchedulingMethod = 'One' then, + Do + interpret 'Call' WhereIam "'Destination'" + Destination = Result + interpret 'Call' WhereIam "'Hostprefix'" + Hostprefix = Result + interpret 'Call' WhereIam "'Rmteprefix'" + Rmteprefix = Result + interpret 'Call' WhereIam "'ModelMember'" + ModelMember = Result + End + + interpret 'Call' WhereIam "'SHLQ'" + SHLQ = Result + + interpret 'Call' WhereIam "'MyAUTHLibrary'" + MyAUTHLibrary = Result + interpret 'Call' WhereIam "'MyAUTULibrary'" + MyAUTULibrary = Result + interpret 'Call' WhereIam "'MyLOADLibrary'" + MyLOADLibrary = Result + + interpret 'Call' WhereIam "'MySEN2Library'" + MySEN2Library = Result + + interpret 'Call' WhereIam "'MySENULibrary'" + MySENULibrary = Result + + interpret 'Call' WhereIam "'MyOPT2Library'" + MyOPT2Library = Result + + interpret 'Call' WhereIam "'MyOPTNLibrary'" + MyOPTNLibrary = Result + + interpret 'Call' WhereIam "'MyCLS0Library'" + HSYSEXEC = Result + MyCLS0Library = HSYSEXEC + + interpret 'Call' WhereIam "'MyCLS2Library'" + HSYSEXEC = Result + MyCLS2Library = HSYSEXEC + + interpret 'Call' WhereIam "'AltIDAcctCode'" + AltIDAcctCode= Result + + interpret 'Call' WhereIam "'AltIDJobClass'" + AltIDJobClass= Result + + interpret 'Call' WhereIam "'AltIDMsgClass'" + AltIDMsgClass= Result + + interpret 'Call' WhereIam "'TransmissionModels'" + TransmissionModels = Result + + MyHomeAddress = 'node2.your.site.com' + +/* <---- Variable settings for each site */ + + ARG Parms ; + + If USERID() = '???????' then Trace ?R + Notes.7 = Substr(PARMS,414,60) ; + If Substr(Notes.7,1,5) = 'TRACE' then Trace r + Package = Substr(PARMS,1,16) ; + + Environ = Substr(PARMS,18,08) ; + Stage = Substr(PARMS,27,01) ; + CREATE_USER = Substr(PARMS,29,08) ; + UPDATE_USER = Substr(PARMS,37,08) ; + CAST_USER = Substr(PARMS,45,08) ; + Notes.1 = Substr(PARMS,054,60) ; + Notes.2 = Substr(PARMS,114,60) ; + Notes.3 = Substr(PARMS,174,60) ; + Notes.4 = Substr(PARMS,234,60) ; + Notes.5 = Substr(PARMS,294,60) ; + Notes.6 = Substr(PARMS,354,60) ; + Notes.7 = Substr(PARMS,414,60) ; + Notes.8 = Substr(PARMS,474,60) ; + ShipOutput = Substr(PARMS,584,03) ; +/* If ShipOutput /= 'BAC' THEN ShipOutput = 'OUT' */ + TYPRUN = ' ' + SAY 'Running PKGESHIP;' +/* */ +/* This Rexx participates in the submission of Endevor Package */ +/* Shipment jobs. It is called by the Endevor exit program C1UEXT07 */ +/* */ +/* First. See if the package has any package backouts ... */ +/* */ + Call CSV_to_List_Package_Id + If BACKOUT_RCD_EXIST = 'N' then Exit +/* Allocate and prepare files for updating the shipment transaction */ +/* file, and submitting package shipments for those scheduled for */ +/* immediate submission. */ +/* */ + + Userid = USERID() + Date8 = DATE('S') + Date6 = substr(Date8,3); + Temp = TIME('L') + + Time8 = Substr(Temp,1,2) ||, + Substr(Temp,4,2) ||, + Substr(Temp,7,2) ||, + Substr(Temp,10,2) ; + Time6 = Substr(Temp,1,2) ||, + Substr(Temp,4,2) ||, + Substr(Temp,7,2) ; + + TodaysDate = DATE('S') ; + NOW = TIME(L); + HOUR = SUBSTR(NOW,1,2) ; + IF HOUR = '00' THEN HOUR = '0' + MINUTE = SUBSTR(NOW,4,2) ; + CurrentTime= HOUR || MINUTE ; + SENDNODE = MVSVAR(SYSNAME) + ShipOutput = 'OUT' + VDDRSPFX = 'IBMUSER.NDVR' + + $All_VARIABLES = "Jobname Destination Userid ", + "PkgExecJobname MyOPTNLibrary MyAUTULibrary ", + "MyAUTHLibrary MyLOADLibrary MyCLS0Library ", + "MyHomeAddress ", + "Package Date8 Date6 Time8 Time6 Notify ", + "Typrun SENDNODE $delimiter ShipOutput ", + "SHLQ MySEN2Library MySENULibrary MyOPT2Library ", + "MyCLS2Library AltIDAcctCode AltIDJobClass ", + "AltIDMsgClass VDDHSPFX VDDRSPFX HSYSEXEC OUT" + + /* The site determines whether to engage Endevor hooks */ + If EndevorHooks = 'Y' then, + Do + Call NDVRHOOK Parms; + HookRC = RESULT ; + /* The immediate shipments are queued by BILDTGGR in a Table */ + If HookRC > 1 then, + Do + Say 'Uh oh! NDVRHOOK did not work' + End + End /* EndevorHooks = 'Y' */ + + /* If Scheduling Package Shipments, then BILDTGGR */ + /* determines sites and updates the Trigger file . */ + /* If any Sites can receive Shipments immediately, then */ + /* BILDTGGR indicates so in its Return code. */ + If ShipSchedulingMethod = 'Rules' then, + Do + Call BILDTGGR Parms; + BildRC = RESULT ; + /* The immediate shipments are queued by BILDTGGR in a Table */ + If BildRC = 1 then, + Do + PULLTGGRParms = Userid'.PULLTGGR' MySEN2Library + Call PULLTGGR PULLTGGRParms ; + End + End /* SchedulingPackageShipBundle */ + Else, + If ShipSchedulingMethod = 'Notes' then, + Do n# = 8 to 1 by -1 + /* Pulling shipment data from package notes */ + /* Examine Package notes to find Destination and schedule info */ + /* - Submit Package Shipments for those that can be submitted */ + /* immeditely. */ + /* (future submissions are not supported ) */ + tmp = NOTES.n# ; + if Substr(tmp,1,3) /= "TO " then leave ; + if Substr(tmp,12,2) /= ": " then leave ; + tmp = Substr(OVERLAY(" ",tmp,12),3) ; + Destination = Word(tmp,1) ; + /* Default to first model */ + ModelMember = Word(TransmissionModels,1) + /* Get info for Destination */ + Call GetDestinationInfo; + Hostprefix = Strip(Substr(apiDestinations.1,079,14)) + Rmteprefix = Strip(Substr(apiDestinations.1,113,14)) + /* + */ + Date = Word(tmp,2) ; + Time = Word(tmp,3) ; + Jobname = Word(tmp,4) ; + If Words(tmp) > 4 then, + If Word(tmp,5) = "HOLD" then, + Notify = Notify",TYPRUN=HOLD" + If Date <= TodaysDate &, + Time <= CurrentTime then, + Do + Call AllocateModel; + Call SubmitPackageShipmentFromNotes; + End ; + tmp = Substr(OVERLAY(" ",tmp,12),3) ; + End; /* Do n# = 8 to 1 by -1 */ + Else, /* Is there only one Destination etc */ + If ShipSchedulingMethod = 'One' then, + Do + PkgExecJobname = MVSVAR('SYMDEF',JOBNAME ) /*Returns JOBNAME */ + PkgExecJobname = USERID() || 'S' /*Userid + S */ + JobName = PkgExecJobname + ModelMember = Word(TransmissionModels,1) + ModelMember = 'SHIP#FTP' + Call AllocateModel; + Call SubmitPackageShipmentFromNotes; + End; /* .. Else... */ + +/* */ +/* All Done */ +/* */ + + Exit + +AllocateModel: +/* */ +/* Submit immediate package shipment jobs */ +/* */ +/* Allocate files */ +/* */ +/* A Model is used for building Package Shipment JCL */ +/* */ + STRING = 'ALLOC DD(MODEL) ', + "DA('"MySEN2Library"("ModelMember")') SHR REUSE " + CALL BPXWDYN STRING; + + Return; + +SubmitPackageShipmentFromNotes: +/* */ +/* This subroutine is modified from the TBL#TOOL */ +/* */ + + "EXECIO * DISKR "MODEL "(STEM $Model. FINIS" ; + $delimiter = "|" ; + + DO $LINE = 1 TO $Model.0 + $PLACE_VARIABLE = 1; + CALL EVALUATE_SYMBOLICS ; + END; /* DO $LINE = 1 TO $Model.0 */ + + STRING = "ALLOC DD(SHIPJCL) LRECL(80) BLKSIZE(27920) ", + " DA("USERID()".SHIPJCL."Destination")", + " DSORG(PS) ", + " SPACE(1,1) RECFM(F,B) TRACKS ", + " NEW CATALOG REUSE "; + CALL BPXWDYN STRING; + + "EXECIO * DISKW SHIPJCL (STEM $Model. FINIS" ; + + If RunUnderAltid = 'Y' then CALL SWAP2ALT + Call Submit_Job ; + If RunUnderAltid = 'Y' then CALL SWAP2USR + + Drop $Model. ; + + STRING = "FREE DD(SHIPJCL) DELETE" + CALL BPXWDYN STRING; + + RETURN; + +/* */ +/* The subroutine below is borrowed from the TBL#TOOL */ +/* */ +EVALUATE_SYMBOLICS: + + DO FOREVER; + $PLACE_VARIABLE = POS('&',$Model.$LINE,$PLACE_VARIABLE) + IF $PLACE_VARIABLE = 0 THEN LEAVE; + $temp_$LINE = TRANSLATE($Model.$LINE,' ',',.()"/\+-*|'); + $temp_$LINE = TRANSLATE($temp_$LINE,' ',"'"$delimiter); + $table_word = WORD(SUBSTR($temp_$LINE,($PLACE_VARIABLE+1)),1); + $table_word = TRANSLATE($table_word,'_','-') ; + $varlen = LENGTH($table_word) + 1 ; + + if WORDPOS($table_word,$All_VARIABLES) = 0 then, + do + $PLACE_VARIABLE = $PLACE_VARIABLE + 1 ; + iterate; + end; + + $temp_word = VALUE($table_word) ; + IF DATATYPE($temp_word,S) = 9 THEN, + $temp = 'SYMBVALUE = ' $temp_word ; + ELSE, + $temp = "SYMBVALUE = '"$temp_word"'" ; + INTERPRET $temp; + SA= 'SYMBVALUE = ' SYMBVALUE ; + + $tail = SUBSTR($Model.$LINE,($PLACE_VARIABLE+$varlen)) ; + if Substr($tail,1,1) = $delimiter then, + $tail = SUBSTR($tail,2) ; + IF $PLACE_VARIABLE > 1 THEN, + $Model.$LINE = , + SUBSTR($Model.$LINE,1,($PLACE_VARIABLE-1)) ||, + SYMBVALUE || $tail ; + else, + $Model.$LINE = , + SYMBVALUE || $tail ; + END; /* DO FOREVER */ + + RETURN; + +Submit_Job: + + "Execio * DISKR SHIPJCL ( Stem jcl. finis" + "Execio * DISKW SYSTSPRT ( Stem jcl. " + + STRING = "ALLOC DD(SUBMIT)", + "SYSOUT(A) WRITER(INTRDR) REUSE " ; + CALL BPXWDYN STRING; + "Execio * DISKW SUBMIT ( Stem jcl. finis" + + STRING = "FREE DD(SUBMIT)" + CALL BPXWDYN STRING; + + RETURN; + +GetDestinationInfo: + + /* Set values for Hostprefix and Rmteprefix */ + /* From the site definition */ + + /* Call API to Get Destination information */ + + + ADDRESS TSO + "ALLOC F(BSTAPI) DA(*) REUSE " + "ALLOC F(BSTERR) DA(*) REUSE " + STRING = "ALLOC DD(APIMSGS) LRECL(133) BLKSIZE(13300) ", + " DSORG(PS) ", + " SPACE(1,1) RECFM(F,B) TRACKS ", + " NEW UNCATALOG REUSE "; + CALL BPXWDYN STRING; + + STRING = "ALLOC DD(APILIST) LRECL(2048) BLKSIZE(22800) ", + " DSORG(PS) ", + " SPACE(1,1) RECFM(V,B) TRACKS ", + " NEW UNCATALOG REUSE "; + CALL BPXWDYN STRING; + + /* Call API to Get Destination information */ + parm = Left(Destination'*',7) + + ADDRESS TSO "CALL *(APIALDST) '"||parm||"'" + RETURN_RC = RC ; + If RETURN_RC > 0 then, + DO + SA= 'CANNOT GET INFORMATION FROM ENDEVOR' ; + EXIT + END ; + "EXECIO * DISKR APILIST ( Stem apiDestinations. FINIS" + STRING = "FREE DD(APILIST)" + CALL BPXWDYN STRING; + STRING = "FREE DD(APIMSGS)" + CALL BPXWDYN STRING; + STRING = "FREE DD(BSTAPI) " + CALL BPXWDYN STRING; + STRING = "FREE DD(BSTERR) " + CALL BPXWDYN STRING; + + Return ; + +CSV_to_List_Package_Id: + + /* To Search the package shipping table, we need the Entry */ + /* Environment information as a search criteria. */ + /* Get it from the USER-DATA field on the 1st element. */ + + + STRING = "ALLOC DD(C1MSGS1) DUMMY " + CALL BPXWDYN STRING; + STRING = "ALLOC DD(BSTERR) DUMMY " + CALL BPXWDYN STRING; + STRING = "ALLOC DD(BSTAPI) DUMMY " + CALL BPXWDYN STRING; + + STRING = "ALLOC DD(EXTRACTM) LRECL(4000) BLKSIZE(32000) ", + " DSORG(PS) ", + " SPACE(1,5) RECFM(F,B) TRACKS ", + " NEW UNCATALOG REUSE "; + CALL BPXWDYN STRING; + + STRING = "ALLOC DD(BSTIPT01) LRECL(80) BLKSIZE(800) ", + " DSORG(PS) ", + " SPACE(1,5) RECFM(F,B) TRACKS ", + " NEW UNCATALOG REUSE "; + CALL BPXWDYN STRING; + + QUEUE "LIST PACKAGE ID '"Package"'" + QUEUE " TO DDNAME 'EXTRACTM' " + QUEUE " ." + + "EXECIO" QUEUED() "DISKW BSTIPT01 (FINIS "; + + ADDRESS LINK 'BC1PCSV0' ; /* load from authlib */ + +/* ADDRESS TSO 'ISRDDN' */ + call_rc = rc ; + + "EXECIO * DISKR EXTRACTM (STEM API. finis" + + STRING = "FREE DD(EXTRACTM)" ; + CALL BPXWDYN STRING; + STRING = "FREE DD(BSTIPT01)" ; + CALL BPXWDYN STRING; + STRING = "FREE DD(C1MSGS1)" ; + CALL BPXWDYN STRING; + STRING = "FREE DD(BSTERR)" ; + CALL BPXWDYN STRING; + STRING = "FREE DD(BSTAPI)" ; + CALL BPXWDYN STRING; + + IF API.0 < 2 THEN RETURN; + + $table_variables= Strip(API.1,'T') + + $table_variables = translate($table_variables,"_"," ") ; + $table_variables = translate($table_variables," ",',"') ; + $table_variables = translate($table_variables,"@","/") ; + $table_variables = translate($table_variables,"@",")") ; + $table_variables = translate($table_variables,"@","(") ; + $table_variables = translate($table_variables,"_","-") ; + + Do rec# = 2 to API.0 + $detail = API.rec# + + /* Parse the Detail record until done */ + Do $column = 1 to Words($table_variables) + Call ParseDetailCSVline + End + End; /* Do rec# = 1 to API.0 */ + + RETURN ; + + +ParseDetailCSVline: + + /* Find the data for the current $column */ + + $dlmchar = Substr($detail,1,1); + + If $dlmchar = "'" then, + Do + SA= 'parsing with single quote ' + PARSE VAR $detail "'" $temp_value "'" $detail ; + If Substr($detail,1,1) = ',' then, + $detail = Strip(Substr($detail,2),'L') + End + Else, + If $dlmchar = '"' then, + Do + SA= 'parsing with double quote ' + PARSE VAR $detail '"' $temp_value '"' $detail ; + If Substr($detail,1,1) = ',' then, + $detail = Strip(Substr($detail,2),'L') + End + Else, + If $dlmchar = ',' then, + Do + SA= 'parsing with comma ' + PARSE VAR $detail ',' $temp_value ',' $detail ; + If Substr($detail,1,1)/= ',' then, + $detail = "," || $detail + $detail = Strip(Substr($detail,2),'L') */ + End + Else, + If Words($detail) = 0 then, + $temp_value = ' ' + Else, + Do + SA= 'parsing with comma ' + PARSE VAR $detail $temp_value ',' $detail ; + Sa= '$temp_value=>' $temp_value '<' + End + $temp_value = STRIP($temp_value) ; + $rslt = $temp_value + $rslt = Strip($rslt,'B','"') ; + $rslt = Strip($rslt,'B',"'") ; + if Length($rslt) < 1 then $rslt = ' ' + if Length($rslt) < 250 then, + $temp = WORD($table_variables,$column) '= "'$rslt'"'; + Else, + $temp = WORD($table_variables,$column) "=$rslt" + INTERPRET $temp; + If rec# < 3 then Say $temp + + RETURN ; + diff --git a/endevor/Field-Developed-Programs/Package-Automation/PKGEXECT.rex b/endevor/Field-Developed-Programs/Package-Automation/PKGEXECT.rex index 5d58171..16dbb13 100644 --- a/endevor/Field-Developed-Programs/Package-Automation/PKGEXECT.rex +++ b/endevor/Field-Developed-Programs/Package-Automation/PKGEXECT.rex @@ -1,152 +1,161 @@ -/* REXX */ -/* WRITTEN BY DAN WALTHER */ - -/* If uncommented, the exit Runs only 4 one user */ -/* If USERID() /= 'XALJO99' then Exit */ - - STRING = "ALLOC DD(SYSTSIN) DUMMY " - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(SYSTSPRT) SYSOUT(A) " - CALL BPXWDYN STRING; - - - WhatDDName = 'PKGEXECT' - CALL BPXWDYN "INFO FI("WhatDDName")", - "INRTDSN(DSNVAR) INRDSNT(myDSNT)" - if Substr(DSNVAR,1,1) > ' ' then Trace r - - ARG Parms ; - Package = Substr(PARMS,1,16) ; - Environ = Substr(PARMS,18,08) ; - Stage = Substr(PARMS,27,01) ; -/* */ -/* This Rexx participates in Package automation - automated package */ -/* Executions. It is called by the Endevor exit program C1UEXT07 */ -/* */ -/* If a RETROFIT package, get out */ -/* - If Substr(Package,1,2) = 'RT' then Exit - If Substr(Package,1,2) = 'X#' then Exit -*/ -/* */ -/* Variable settings for each site ---> */ - WhereIam = WHERE@M1() - interpret 'Call' WhereIam "'MyDATALibrary'" - MyDATALibrary = Result - - interpret 'Call' WhereIam "'MySEN2Library'" - MySEN2Library = Result - - interpret 'Call' WhereIam "'MySENULibrary'" - MySENULibrary = Result - - interpret 'Call' WhereIam "'AltIDAcctCode'" - AltIDAcctCode = Result - - interpret 'Call' WhereIam "'MySENULibrary'" - MySENULibrary = Result - - interpret 'Call' WhereIam "'AltIDJobClass'" - AltIDJobClass = Result -/* <---- Variable settings for each site */ - Sa= 'Running PKGEXECT ' -/* */ -/* Allocate and prepare files for ENBPIU00 execution */ -/* */ -/* */ - Package_Prefix = SUBSTR(Package,1,4) ; - - Date8 = DATE('S') - Date6 = substr(Date8,3); - Temp = TIME('L') - - Time8 = Substr(Temp,1,2) ||, - Substr(Temp,4,2) ||, - Substr(Temp,7,2) ||, - Substr(Temp,10,2) ; - Time6 = Substr(Temp,1,2) ||, - Substr(Temp,4,2) ||, - Substr(Temp,7,2) ; - - -/* */ -/* OPTIONS will contain date and time values */ -/* */ - - STRING = "ALLOC DD(OPTIONS) LRECL(80) BLKSIZE(27920) ", - " DSORG(PS) ", - " SPACE(1,1) RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - QUEUE " $nomessages = 'Y' " ; - QUEUE " Date8 = '"Date8"'" - QUEUE " Date6 = '"Date6"'" - QUEUE " Time8 = '"Time8"'" - QUEUE " Time6 = '"Time6"'" - QUEUE " Package = '"Package"'" ; - QUEUE " Userid = '"USERID()"'" ; - QUEUE " Userjob = '"USERID()|| SUBSTR(Package,1,1)"'" - QUEUE " AltIDAcctCode = '"AltIDAcctCode"'" - QUEUE " MySEN2Library = '"MySEN2Library"'" - QUEUE " MySENULibrary = '"MySENULibrary"'" - QUEUE " AltIDJobClass = '"AltIDJobClass"'" - - "EXECIO " QUEUED() "DISKW OPTIONS (FINIS" - - If Words(PARMS) = 1 then EXIT ; -/* */ -/* TBLOUT is assigned to a temporary dataset to receive the jcl */ -/* */ - STRING = "ALLOC DD(TBLOUT) LRECL(80) BLKSIZE(27920) ", - " DSORG(PS) ", - " SPACE(1,1) RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - - CALL BPXWDYN STRING; - -/* */ -/* TABLE is fixed by Endevor administrators */ -/* MODELS are SHIP and DELETE - separate JCL images */ -/* */ - STRING = 'ALLOC DD(TABLE) ', - "DA('"MyDATALibrary"(PKGEEXEC)') SHR REUSE " - CALL BPXWDYN STRING; - - STRING = 'ALLOC DD(MODEL) ', - "DA('"MySEN2Library"(PKG#MODL)') SHR REUSE " - CALL BPXWDYN STRING; - -/* */ -/* Now call ENBPIU00 which does the rest */ -/* */ - -/* "ENBPIU00 M" Package_Prefix */ - "ENBPIU00 1" Environ Stage - - "EXECIO 0 DISKW TBLOUT (FINIS" - - "EXECIO * DISKR TBLOUT (STEM EXECJCL. FINIS " -/* */ -/* "EXECIO * DISKW DISPLAYS (STEM EXECJCL. FINIS " */ -/* */ - - STRING = "ALLOC DD(READER)", - " RECFM(F) BLKSIZE(80) LRECL(80)", - "SYSOUT(A) WRITER(INTRDR) REUSE " ; - CALL BPXWDYN STRING; -/* */ - "EXECIO * DISKW READER (STEM EXECJCL. FINIS " -/* */ - - STRING = "FREE DD(READER)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(OPTIONS)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(TBLOUT)" ; - CALL BPXWDYN STRING; - STRING = 'FREE DD(TABLE) ' ; - CALL BPXWDYN STRING; - - - Exit +/* REXX */ + +/* */ +/* https://github.com/BroadcomMFD/broadcom-product-scripts */ +/* */ +/* This rexx is called by a package exit program, receives a */ +/* package name, and submits a job to EXECUTE the package. */ +/* */ +/* If uncommented, the exit Runs only 4 IBMUSER */ +/* If USERID() /= 'IBMUSER' then Exit */ +/* */ + + STRING = "ALLOC DD(SYSTSPRT) SYSOUT(A) " + CALL BPXWDYN STRING; + + + WhatDDName = 'PKGEXECT' + CALL BPXWDYN "INFO FI("WhatDDName")", + "INRTDSN(DSNVAR) INRDSNT(myDSNT)" + if Substr(DSNVAR,1,1) = ' ' then Sa= WhatDDName 'Not allocated' + Else, + Do + Say 'Running PKGEXECT' + Trace ?R + End + + ARG Parms ; + Package = Substr(PARMS,1,16) ; + Environ = Substr(PARMS,18,08) ; + Stage = Substr(PARMS,27,01) ; +/* */ +/* This Rexx participates in the submission of Endevor Package */ +/* Shipment jobs. It is called by the Endevor exit program C1UEXT07 */ +/* */ +/* If a RETROFIT package, get out */ +/* + If Substr(Package,1,2) = 'RT' then Exit + If Substr(Package,1,2) = 'X#' then Exit +*/ +/* */ +/* Variable settings for each site ---> */ + WhereIam = WHERE@M1() + interpret 'Call' WhereIam "'MyDATALibrary'" + MyDATALibrary = Result + + interpret 'Call' WhereIam "'MySEN2Library'" + MySEN2Library = Result + + interpret 'Call' WhereIam "'MySENULibrary'" + MySENULibrary = Result + + interpret 'Call' WhereIam "'AltIDAcctCode'" + AltIDAcctCode = Result + + interpret 'Call' WhereIam "'MySENULibrary'" + MySENULibrary = Result + + interpret 'Call' WhereIam "'AltIDJobClass'" + AltIDJobClass = Result +/* <---- Variable settings for each site */ + Sa= 'Running PKGEXECT ' +/* */ +/* Allocate and prepare files for ENBPIU00 execution */ +/* */ +/* */ + Package_Prefix = SUBSTR(Package,1,4) /* You decide prefix length */ + Package_Prefix = SUBSTR(Package,1,5) /* You decide prefix length */ + + Date8 = DATE('S') + Date6 = substr(Date8,3); + Temp = TIME('L') + + Time8 = Substr(Temp,1,2) ||, + Substr(Temp,4,2) ||, + Substr(Temp,7,2) ||, + Substr(Temp,10,2) ; + Time6 = Substr(Temp,1,2) ||, + Substr(Temp,4,2) ||, + Substr(Temp,7,2) ; + + +/* */ +/* OPTIONS will contain date and time values */ +/* */ + + STRING = "ALLOC DD(OPTIONS) LRECL(80) BLKSIZE(27920) ", + " DSORG(PS) ", + " SPACE(1,1) RECFM(F,B) TRACKS ", + " NEW UNCATALOG REUSE "; + CALL BPXWDYN STRING; + QUEUE " $nomessages = 'Y' " ; + QUEUE " Date8 = '"Date8"'" + QUEUE " Date6 = '"Date6"'" + QUEUE " Time8 = '"Time8"'" + QUEUE " Time6 = '"Time6"'" + QUEUE " Package = '"Package"'" ; + QUEUE " Userid = '"USERID()"'" ; + QUEUE " Userjob = '"USERID()|| SUBSTR(Package,1,1)"'" + QUEUE " AltIDAcctCode = '"AltIDAcctCode"'" + QUEUE " MySEN2Library = '"MySEN2Library"'" + QUEUE " MySENULibrary = '"MySENULibrary"'" + QUEUE " AltIDJobClass = '"AltIDJobClass"'" + + "EXECIO " QUEUED() "DISKW OPTIONS (FINIS" + + If Words(PARMS) = 1 then EXIT ; +/* */ +/* TBLOUT is assigned to a temporary dataset to receive the jcl */ +/* */ + STRING = "ALLOC DD(TBLOUT) LRECL(80) BLKSIZE(27920) ", + " DSORG(PS) ", + " SPACE(1,1) RECFM(F,B) TRACKS ", + " NEW UNCATALOG REUSE "; + + CALL BPXWDYN STRING; + +/* */ +/* TABLE is fixed by Endevor administrators */ +/* MODELS are SHIP and DELETE - separate JCL images */ +/* */ + STRING = 'ALLOC DD(TABLE) ', + "DA('"MyDATALibrary"(PKGEEXEC)') SHR REUSE " + CALL BPXWDYN STRING; + + STRING = 'ALLOC DD(MODEL) ', + "DA('"MySEN2Library"(PKG#MODL)') SHR REUSE " + CALL BPXWDYN STRING; + +/* */ +/* Now call ENBPIU00 which does the rest */ +/* */ + +/* "ENBPIU00 1" Environ Stage <- when only using prom pkgs */ + "ENBPIU00 M" Package + + "EXECIO 0 DISKW TBLOUT (FINIS" + + "EXECIO * DISKR TBLOUT (STEM EXECJCL. FINIS " +/* */ +/* "EXECIO * DISKW DISPLAYS (STEM EXECJCL. FINIS " */ +/* */ + + STRING = "ALLOC DD(READER)", + " RECFM(F) BLKSIZE(80) LRECL(80)", + "SYSOUT(A) WRITER(INTRDR) REUSE " ; + CALL BPXWDYN STRING; +/* */ + "EXECIO * DISKW READER (STEM EXECJCL. FINIS " +/* */ + + STRING = "FREE DD(READER)" ; + CALL BPXWDYN STRING; + STRING = "FREE DD(OPTIONS)" ; + CALL BPXWDYN STRING; + STRING = "FREE DD(TBLOUT)" ; + CALL BPXWDYN STRING; + STRING = 'FREE DD(TABLE) ' ; + CALL BPXWDYN STRING; + + + Exit diff --git a/endevor/Field-Developed-Programs/Package-Automation/PULLTGGR.rex b/endevor/Field-Developed-Programs/Package-Automation/PULLTGGR.rex index 536d993..3fb5f38 100644 --- a/endevor/Field-Developed-Programs/Package-Automation/PULLTGGR.rex +++ b/endevor/Field-Developed-Programs/Package-Automation/PULLTGGR.rex @@ -1,623 +1,634 @@ -/* REXX */ -/* Submit package shipment jobs from entry(ies) on Trigger */ - - /* If a DDNAME of PULLTGGR is allocated, then Trace */ - WhatDDName = 'PULLTGGR' - CALL BPXWDYN "INFO FI("WhatDDName")", - "INRTDSN(DSNVAR) INRDSNT(myDSNT)" - if Substr(DSNVAR,1,1) /= ' ' then TraceRc = 1; - IF TraceRc = 1 then Trace R - -/* PkgExecJobname = MVSVAR('SYMDEF',JOBNAME ) Returns JOBNAME */ - -/* Variable settings for each site ---> */ - WhereIam = WHERE@M1() - - interpret 'Call' WhereIam "'MyCLS2Library'" - MyCLS2Library = Result - Say 'Running PULLTGGR in' MyCLS2Library - - interpret 'Call' WhereIam "'TriggerFileName'" - TriggerFileName = Result - - interpret 'Call' WhereIam "'MyAUTULibrary'" - MyAUTULibrary = Result - - interpret 'Call' WhereIam "'MyHomeAddress'" - MyHomeAddress = Result - - interpret 'Call' WhereIam "'MyAUTHLibrary'" - MyAUTHLibrary = Result - - interpret 'Call' WhereIam "'MyLOADLibrary'" - MyLOADLibrary = Result - - interpret 'Call' WhereIam "'MyDATALibrary'" - MyDATALibrary = Result - ShipRules = MyDATALibrary"(SHIPRULE)" - - interpret 'Call' WhereIam "'MyOPT2Library'" - MyOPT2Library = Result - - interpret 'Call' WhereIam "'MyOPTNLibrary'" - MyOPTNLibrary = Result - - interpret 'Call' WhereIam "'MySENULibrary'" - MySENULibrary = Result - - interpret 'Call' WhereIam "'MySEN2Library'" - MySEN2Library = Result - - interpret 'Call' WhereIam "'MyCLS0Library'" - MyCLS0Library = Result - - interpret 'Call' WhereIam "'MyCLS2Library'" - MyCLS2Library = Result - - interpret 'Call' WhereIam "'AltIDAcctCode'" - AltIDAcctCode = Result - - interpret 'Call' WhereIam "'AltIDJobClass'" - AltIDJobClass = Result - - interpret 'Call' WhereIam "'TransmissionMethods'" - TransmissionMethods = Result - - interpret 'Call' WhereIam "'TransmissionModels'" - TransmissionModels = Result - - interpret 'Call' WhereIam "'SHLQ'" - SHLQ = Result - - sa= 'TransmissionMethods =' TransmissionMethods - sa= 'TransmissionModels =' TransmissionModels - -/* <---- Variable settings for each site */ - - Arg DSN_Prefix ModelDSN . ; - DSN_Prefix = Strip(DSN_Prefix,'B',',') ; - ModelDSN = Strip(ModelDSN,'B',',') ; - ModelDSN = Strip(ModelDSN) - Sa= "DSN_Prefix =" DSN_Prefix - Sa= "ModelDSN =" ModelDSN - Jobnbr = ' ' - -/* */ -/* This Rexx participates in the submission of Endevor Package */ -/* Shipment jobs. It is called by the Endevor sweep job. */ -/* */ -/* */ -/* Allocate and prepare files for TBL#TOOL execution */ -/* */ -/* */ - Submit_RC = 0 ; - Last_Submit_RC = 0 ; - TodaysDate = DATE('S') ; - NOW = TIME(L); - HOUR = SUBSTR(NOW,1,2) ; - IF HOUR = '00' THEN HOUR = '0' - MINUTE = SUBSTR(NOW,4,2) ; - CurrentTime= HOUR || MINUTE ; - - SENDNODE = MVSVAR(SYSNAME) - HSYSEXEC = MyCLS2Library - Userid = USERID() - - Call AllocateTriggerForUpdate ; - - "EXECIO * DISKR TRIGGER (STEM $tablerec. FINIS" ; - /* Build all the ...pos variables from heading */ - Call ProcessTriggerFileHeading; - -/* */ - $All_VARIABLES = $table_variables, - " PkgExecJobname ParmVal", - " Jobname Userid Date8 Date6 Time8 Time6 Destination", - " MyCLS0Library MyCLS2Library MyHomeAddress", - " MyAUTULibrary MyAUTHLibrary MyLOADLibrary ", - " MyOPT2Library MyOPTNLibrary MySEN2Library MySENULibrary", - " HSYSEXEC DB2DSN MODE SHPHLQ STEPLIB", - " ShipOutput SHLQ ", - " AltIDAcctCode AltIDJobClass ", - " Hostprefix Rmteprefix Transmissn ", - " Destin VNBLSDST SENDNODE Typrun Notify TARGnode " - -/* */ - Do trg# = 1 to $tablerec.0 - status = Substr($tablerec.trg#,Stpos,1) ; - If status /= "_" & status /= " " &, - status /= "B" then iterate; - ShipOutput = 'OUT' - If status = "B" then ShipOutput = 'BAC' ; - Package = Substr($tablerec.trg#,Packagepos,16) ; - System = Strip(Substr($tablerec.trg#,Systempos,08)); - Destination = Strip(Substr($tablerec.trg#,Destinationpos,08)); - Date = Substr($tablerec.trg#,Datepos,08) ; - IF Date > TodaysDate then iterate ; - Time = Substr($tablerec.trg#,Timepos,04) ; - IF Date = TodaysDate &, - Time > CurrentTime then iterate ; - /* Get Endevor Destination Definition */ - /* for file names and transmission method */ - - /* - Do one of these: - Call GetDestinationInfoViaAPI; - -- or -- - Call GetDestinationInfoViaCSV; - */ - - Call GetDestinationInfoViaCSV; - - Jobname = Strip(Substr($tablerec.trg#,Jobnamepos,08)) ; - If Jobname = 'useridX' then Jobname = USERID() || 'X' - PkgExecJobname = Jobname ; -/* - OwnerMask = Strip(Substr($tablerec.trg#,OwnerMaskpos,08)) ; - QualifierMask =, - Strip(Substr($tablerec.trg#,QualifierMaskpos,08)) ; - BindPackageMask =, - Strip(Substr($tablerec.trg#,BindPackageMaskpos,08)) ; - PathMask =, - Strip(Substr($tablerec.trg#,PathMaskpos,08)) ; -*/ - TYPRUN = Strip(Substr($tablerec.trg#,TYPRUNpos,6)) ; - if Length(Typrun) > 0 then, - Typrun = ',TYPRUN='Typrun - - Notify = Strip(Substr($tablerec.trg#,Notifypos,8)) ; - if Length(Notify) < 2 then, - Notify = '&SYSUID' - - seconds = '000001' /* Wait 1 second before submitting next*/ - Call WaitAwhile ; - - Date8 = DATE('S') - Date6 = substr(Date8,3); - Temp = TIME('L') - - Time8 = Substr(Temp,1,2) ||, - Substr(Temp,4,2) ||, - Substr(Temp,7,2) ||, - Substr(Temp,10,2) ; - Time6 = Substr(Temp,1,2) ||, - Substr(Temp,4,2) ||, - Substr(Temp,7,2) ; - - ParmVal = Date8 Time8 - NewStatus = 's' ; - Call UPDATE_MODEL_FROM_VARIABLES ; /* Submits Shipment job */ - $headingVariable = 'St' - pos= $Starting_$position.$headingVariable - if Last_Submit_RC = 0 then, - Do - $tablerec.trg# = Overlay(NewStatus,$tablerec.trg#,Stpos) ; - $tablerec.trg# = , - Overlay(CurrentTime,$tablerec.trg#,Timepos) ; - pos= $Starting_$position.$headingVariable - If Substr(Jobnbr,1,1) > ' ' then, - $tablerec.trg# = , - Overlay(Jobnbr,$tablerec.trg#,Jobnumberpos); - End - Else, - $tablerec.trg# = Overlay("?",$tablerec.trg#,Stpos) ; - Last_Submit_RC = 0 ; - - End ; /* Do trg# = 1 to $tablerec.0 */ - - "EXECIO * DISKW TRIGGER (STEM $tablerec. FINIS" ; - - Call FreeTriggerFile ; - - Exit(Submit_RC) ; - -/* */ -/* The subroutine below is modified from the TBL#TOOL */ -/* */ -UPDATE_MODEL_FROM_VARIABLES: - - Method# = Wordpos(Transmissn,TransmissionMethods) ; - If Method# = 0 then, - Do - NewStatus = 'R' ; - Return ; - End; - ShipModel = Word(TransmissionModels,Method#); - - /* Determine Shipment JCL Model */ - STRING = "ALLOC DD(MODEL) ", - " DA('"ModelDSN"("ShipModel")')", - " SHR REUSE "; - sa= 'Destination' Destination 'is' ShipModel - CALL BPXWDYN STRING; - MyResult = RESULT ; - If MyResult > 0 then, - Do - Say 'Cannot find Shipment Model' ShipModel - Return ; - End; - - "EXECIO * DISKR "MODEL "(STEM $Model. FINIS" ; - $delimiter = "^" ; - STRING = "FREE DD(MODEL) " - CALL BPXWDYN STRING; - - Trace off - DO $LINE = 1 TO $Model.0 - $PLACE_VARIABLE = 1; - CALL EVALUATE_SYMBOLICS ; - END; /* DO $LINE = 1 TO $Model.0 */ - IF TraceRc = 1 then Trace R - - CALL BPXWDYN , - "ALLOC DD(SYSUT1) LRECL(80) BLKSIZE(27920) SPACE(5,5) ", - " RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - - "EXECIO * DISKW SYSUT1 (STEM $Model. FINIS" ; - - Call Submit_Job ; - - Drop $Model. ; - - RETURN; - -/* */ -/* The subroutine below is borrowed from the TBL#TOOL */ -/* */ -EVALUATE_SYMBOLICS: - - DO FOREVER; - $PLACE_VARIABLE = POS('&',$Model.$LINE,$PLACE_VARIABLE) - IF $PLACE_VARIABLE = 0 THEN LEAVE; - $temp_$LINE = TRANSLATE($Model.$LINE,' ',',.()"/\+-*|'); - $temp_$LINE = TRANSLATE($temp_$LINE,' ',"'"$delimiter); - $table_word = WORD(SUBSTR($temp_$LINE,($PLACE_VARIABLE+1)),1); - $table_word = TRANSLATE($table_word,'_','-') ; - $varlen = LENGTH($table_word) + 1 ; - - if WORDPOS($table_word,$All_VARIABLES) = 0 then, - do - $PLACE_VARIABLE = $PLACE_VARIABLE + 1 ; - iterate; - end; - - $temp_word = VALUE($table_word) ; - IF DATATYPE($temp_word,S) = 9 THEN, - $temp = 'SYMBVALUE = ' $temp_word ; - ELSE, - $temp = "SYMBVALUE = '"$temp_word"'" ; - IF TraceRc = 1 then say $temp - INTERPRET $temp; - SA= 'SYMBVALUE = ' SYMBVALUE ; - - $tail = SUBSTR($Model.$LINE,($PLACE_VARIABLE+$varlen)) ; - if Substr($tail,1,1) = $delimiter then, - $tail = SUBSTR($tail,2) ; - IF $PLACE_VARIABLE > 1 THEN, - $Model.$LINE = , - SUBSTR($Model.$LINE,1,($PLACE_VARIABLE-1)) ||, - SYMBVALUE || $tail ; - else, - $Model.$LINE = , - SYMBVALUE || $tail ; - END; /* DO FOREVER */ - - RETURN; - -Submit_Job: - - STRING = "ALLOC DD(SYSIN) DUMMY" - CALL BPXWDYN STRING; -/* - STRING = "ALLOC DD(SYSPRINT) DUMMY" - CALL BPXWDYN STRING; -*/ - - STRING = "ALLOC DD(SYSUT2)", - "SYSOUT(A) WRITER(INTRDR) REUSE " ; - CALL BPXWDYN STRING; - - ADDRESS LINK 'IEBGENER' - - "EXECIO * DISKR SYSUT1 (STEM $SUBS. FINIS" ; - "EXECIO * DISKW SYSPRINT (STEM $SUBS. FINIS" ; - - STRING = "FREE DD(SYSUT1)" - CALL BPXWDYN STRING; - - STRING = "FREE DD(SYSUT2)" - CALL BPXWDYN STRING; - - return; - -AllocateTriggerForUpdate: - - STRING = "ALLOC DD(TRIGGER)", - " DA('"TriggerFileName"') OLD REUSE" - seconds = '000007' /* Number of Seconds to wait if needed */ - - Do Forever /* or at least until the file is available */ - CALL BPXWDYN STRING; - MyRC = RC - MyResult = RESULT ; - If MyResult = 0 then Leave - Call WaitAwhile - End /* Do Forever */ - - Return ; - -FreeTriggerFile: - - STRING = "FREE DD(TRIGGER)" - CALL BPXWDYN STRING ; - - Return ; - -/* */ -/* Convert Date formats */ -/* */ - -WaitAwhile: - /* */ - /* A resource is unavailable. Wait awhile and try */ - /* accessing the resource again. */ - /* */ - /* The length of the wait is designated in the parameter */ - /* value which specifies a number of seconds. */ - /* A parameter value of '000003' causes a wait for 3 seconds. */ - /* */ - - seconds = Abs(seconds) - seconds = Trunc(seconds,0) - Say "Waiting for" seconds "seconds at " DATE(S) TIME() - - /* AOPBATCH and BPXWDYN are IBM programs */ - CALL BPXWDYN "ALLOC DD(STDOUT) DUMMY SHR REUSE" - CALL BPXWDYN "ALLOC DD(STDERR) DUMMY SHR REUSE" - CALL BPXWDYN "ALLOC DD(STDIN) DUMMY SHR REUSE" - - /* AOPBATCH and BPXWDYN are IBM programs */ - parm = "sleep "seconds - Address LINKMVS "AOPBATCH parm" - - Return - -ProcessTriggerFileHeading : -/* The subroutine below is modified from the TBL#TOOL */ - - $tbl = 1 ; - $TableHeadingChar = '*' - - $LastWord = Word($tablerec.$tbl,Words($tablerec.$tbl)); - If DATATYPE($LastWord) = 'NUM' then, - Do - Say 'Please remove sequence numbers from the Table' - Exit(12) - End - - $tmprec = Substr($tablerec.$tbl,2) ; - $PositionSpclChar = POS('-',$tmprec) ; - If $PositionSpclChar = 0 then, - $PositionSpclChar = POS('*',$tmprec) ; - $tmpreplaces = '-,.'$TableHeadingChar ; - $tmprec = TRANSLATE($tmprec,' ',$tmpreplaces); - $table_variables = strip($tmprec); - $Heading_Variable_count = WORDS($table_variables) ; - If $Heading_Variable_count /=, - Words(Substr($tablerec.$tbl,2)) then, - Do - Say 'Invalid table Heading:' $tablerec.$tbl - exit(12) - End - - $heading = Overlay(' ',$tablerec.$tbl,1); /* Space leading * */ - Do $pos = 1 to $Heading_Variable_count - $HeadingVariable = Word($table_variables,$pos) ; - $tmp = Wordindex($Heading,$pos) ; - $Starting_$position.$HeadingVariable = $tmp - $tmp = $tmp + Length(Word($Heading,$pos)) -1 ; - $Ending_$position.$HeadingVariable = $tmp - - /* Build ...pos variables and values */ - tmp = ""$HeadingVariable"pos =", - $Starting_$position.$HeadingVariable - Sa= tmp - Interpret tmp - - end; /* DO $pos = 1 to $Heading_Variable_count */ - - $Heading = Translate($Heading,' ','-*') - - Return ; - -GetDestinationInfoViaAPI: - - /* Set values for Hostprefix and Rmteprefix */ - /* From the site definition */ - - /* Call API to Get Destination information */ - - - STRING = "ALLOC DD(BSTAPI) SYSOUT(J) " - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(BSTERR) SYSOUT(J) " - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(APIMSGS) LRECL(133) BLKSIZE(13300) ", - " DSORG(PS) ", - " SPACE(1,1) RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(APILIST) LRECL(2048) BLKSIZE(22800) ", - " DSORG(PS) ", - " SPACE(1,1) RECFM(V,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - /* Call API to Get Destination information */ - parm = Left(Destination'*',7) - - /* Call APIALDST to get Destination information */ - - ADDRESS LINKMVS "APIALDST parm" - RETURN_RC = RC ; - If RETURN_RC > 0 then, - DO - parm = 'DDN:STEPLIB,APIALDST,'parm - ADDRESS LINKMVS 'CONCALL' "parm" - SA= 'CANNOT GET INFORMATION FROM ENDEVOR' ; - EXIT - END ; - "EXECIO * DISKR APILIST ( Stem apiDestinations. FINIS" - Sa= 'Messages from PULLTGGR:' - Hostprefix = Strip(Substr(apiDestinations.1,079,14)) - Rmteprefix = Strip(Substr(apiDestinations.1,113,14)) - Transmissn = Strip(Substr(apiDestinations.1,051,11)) - TARGnode = Strip(Substr(apiDestinations.1,062,08)) - - STRING = "FREE DD(APILIST)" - CALL BPXWDYN STRING; - STRING = "FREE DD(APIMSGS)" - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTAPI) " - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTERR) " - CALL BPXWDYN STRING; - - Return ; - -GetDestinationInfoViaCSV: - - /* Set values for Hostprefix and Rmteprefix */ - /* From the site definition */ - - /* Call CSV to Get Destination information */ - - STRING = "ALLOC DD(C1MSGS1) DUMMY " - CALL BPXWDYN STRING; - STRING = "ALLOC DD(BSTERR) DUMMY " - CALL BPXWDYN STRING; - STRING = "ALLOC DD(BSTAPI) DUMMY " - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(CSVDEST) LRECL(4000) BLKSIZE(32000) ", - " DSORG(PS) ", - " SPACE(1,5) RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(BSTIPT01) LRECL(80) BLKSIZE(800) ", - " DSORG(PS) ", - " SPACE(1,5) RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - Push "LIST DESTINATION '"Destination"'", - " TO FILE CSVDEST OPTIONS ." - - "EXECIO 1 DISKW BSTIPT01 (FINIS "; - - ADDRESS LINK 'BC1PCSV0' ; /* load from authlib */ - call_rc = rc ; -/* ADDRESS TSO 'ISRDDN' */ - - "EXECIO * DISKR CSVDEST (STEM API. finis" - - STRING = "FREE DD(CSVDEST)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTIPT01)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(C1MSGS1)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTERR)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTAPI)" ; - CALL BPXWDYN STRING; - - IF API.0 < 2 THEN, - Do - Say 'Cannot find Definition for Destination' Destination - EXIT(12) - End - - $table_variables= Strip(API.1,'T') - - $table_variables = translate($table_variables,"_"," ") ; - $table_variables = translate($table_variables," ",',"') ; - $table_variables = translate($table_variables,"@","/") ; - $table_variables = translate($table_variables,"@",")") ; - $table_variables = translate($table_variables,"@","(") ; - - Do rec# = 2 to API.0 - $detail = API.rec# - - /* Parse the Detail record until done */ - Do $column = 1 to Words($table_variables) - Call ParseDetailCSVline - End - - Sa= 'Messages from PULLTGGR:' - Hostprefix = HOST_DSN_PREFIX - Rmteprefix = REMOTE_DSN_PREFIX - Transmissn = TRANS_DESC - TARGnode = TRANS_NODE - End; /* Do rec# = 1 to API.0 */ - - RETURN ; - -ParseDetailCSVline: - - /* Find the data for the current $column */ - - $dlmchar = Substr($detail,1,1); - - If $dlmchar = "'" then, - Do - SA= 'parsing with single quote ' - PARSE VAR $detail "'" $temp_value "'" $detail ; - If Substr($detail,1,1) = ',' then, - $detail = Strip(Substr($detail,2),'L') - End - Else, - If $dlmchar = '"' then, - Do - SA= 'parsing with double quote ' - PARSE VAR $detail '"' $temp_value '"' $detail ; - If Substr($detail,1,1) = ',' then, - $detail = Strip(Substr($detail,2),'L') - End - Else, - If $dlmchar = ',' then, - Do - SA= 'parsing with comma ' - PARSE VAR $detail ',' $temp_value ',' $detail ; - If Substr($detail,1,1)/= ',' then, - $detail = "," || $detail - $detail = Strip(Substr($detail,2),'L') */ - End - Else, - If Words($detail) = 0 then, - $temp_value = ' ' - Else, - Do - SA= 'parsing with comma ' - PARSE VAR $detail $temp_value ',' $detail ; - Sa= '$temp_value=>' $temp_value '<' - End - $temp_value = STRIP($temp_value) ; - $rslt = $temp_value - $rslt = Strip($rslt,'B','"') ; - $rslt = Strip($rslt,'B',"'") ; - if Length($rslt) < 1 then $rslt = ' ' - if Length($rslt) < 250 then, - $temp = WORD($table_variables,$column) '= "'$rslt'"'; - Else, - $temp = WORD($table_variables,$column) "=$rslt" - INTERPRET $temp; - If rec# < 3 then Say $temp - - RETURN ; - +/* REXX */ +/* */ +/* https://github.com/BroadcomMFD/broadcom-product-scripts */ +/* */ +/* This rexx is a called subroutine. */ +/* It can be called by PKGESHIP during exit processing, or */ +/* by a package Sweep job. (See SWEEPJOB) . */ +/* */ +/* From data in SHIPRULE, BILDTGGR updates the Trigger file */ +/* for each expected shipment. PULLTGGR submits package ship jobs. */ +/* */ + + /* If a DDNAME of PULLTGGR is allocated, then Trace */ + WhatDDName = 'PULLTGGR' + CALL BPXWDYN "INFO FI("WhatDDName")", + "INRTDSN(DSNVAR) INRDSNT(myDSNT)" + if Substr(DSNVAR,1,1) /= ' ' then TraceRc = 1; + IF TraceRc = 1 then Trace R + +/* PkgExecJobname = MVSVAR('SYMDEF',JOBNAME ) Returns JOBNAME */ + +/* Variable settings for each site ---> */ + WhereIam = WHERE@M1() + + interpret 'Call' WhereIam "'MyCLS2Library'" + MyCLS2Library = Result + Say 'Running PULLTGGR in' MyCLS2Library + + interpret 'Call' WhereIam "'TriggerFileName'" + TriggerFileName = Result + + interpret 'Call' WhereIam "'MyAUTULibrary'" + MyAUTULibrary = Result + + interpret 'Call' WhereIam "'MyHomeAddress'" + MyHomeAddress = Result + + interpret 'Call' WhereIam "'MyAUTHLibrary'" + MyAUTHLibrary = Result + + interpret 'Call' WhereIam "'MyLOADLibrary'" + MyLOADLibrary = Result + + interpret 'Call' WhereIam "'MyDATALibrary'" + MyDATALibrary = Result + ShipRules = MyDATALibrary"(SHIPRULE)" + + interpret 'Call' WhereIam "'MyOPT2Library'" + MyOPT2Library = Result + + interpret 'Call' WhereIam "'MyOPTNLibrary'" + MyOPTNLibrary = Result + + interpret 'Call' WhereIam "'MySENULibrary'" + MySENULibrary = Result + + interpret 'Call' WhereIam "'MySEN2Library'" + MySEN2Library = Result + + interpret 'Call' WhereIam "'MyCLS0Library'" + MyCLS0Library = Result + + interpret 'Call' WhereIam "'MyCLS2Library'" + MyCLS2Library = Result + + interpret 'Call' WhereIam "'AltIDAcctCode'" + AltIDAcctCode = Result + + interpret 'Call' WhereIam "'AltIDJobClass'" + AltIDJobClass = Result + + interpret 'Call' WhereIam "'TransmissionMethods'" + TransmissionMethods = Result + + interpret 'Call' WhereIam "'TransmissionModels'" + TransmissionModels = Result + + interpret 'Call' WhereIam "'SHLQ'" + SHLQ = Result + + sa= 'TransmissionMethods =' TransmissionMethods + sa= 'TransmissionModels =' TransmissionModels + +/* <---- Variable settings for each site */ + + Arg DSN_Prefix ModelDSN . ; + DSN_Prefix = Strip(DSN_Prefix,'B',',') ; + ModelDSN = Strip(ModelDSN,'B',',') ; + ModelDSN = Strip(ModelDSN) + Sa= "DSN_Prefix =" DSN_Prefix + Sa= "ModelDSN =" ModelDSN + Jobnbr = ' ' + +/* */ +/* This Rexx participates in the submission of Endevor Package */ +/* Shipment jobs. It is called by the Endevor sweep job. */ +/* */ +/* */ +/* Allocate and prepare files for TBL#TOOL execution */ +/* */ +/* */ + Submit_RC = 0 ; + Last_Submit_RC = 0 ; + TodaysDate = DATE('S') ; + NOW = TIME(L); + HOUR = SUBSTR(NOW,1,2) ; + IF HOUR = '00' THEN HOUR = '0' + MINUTE = SUBSTR(NOW,4,2) ; + CurrentTime= HOUR || MINUTE ; + + SENDNODE = MVSVAR(SYSNAME) + HSYSEXEC = MyCLS2Library + Userid = USERID() + + Call AllocateTriggerForUpdate ; + + "EXECIO * DISKR TRIGGER (STEM $tablerec. FINIS" ; + /* Build all the ...pos variables from heading */ + Call ProcessTriggerFileHeading; + +/* */ + $All_VARIABLES = $table_variables, + " PkgExecJobname ParmVal", + " Jobname Userid Date8 Date6 Time8 Time6 Destination", + " MyCLS0Library MyCLS2Library MyHomeAddress", + " MyAUTULibrary MyAUTHLibrary MyLOADLibrary ", + " MyOPT2Library MyOPTNLibrary MySEN2Library MySENULibrary", + " HSYSEXEC DB2DSN MODE SHPHLQ STEPLIB", + " ShipOutput SHLQ ", + " AltIDAcctCode AltIDJobClass ", + " Hostprefix Rmteprefix Transmissn ", + " Destin VNBLSDST SENDNODE Typrun Notify TARGnode " + +/* */ + Do trg# = 1 to $tablerec.0 + status = Substr($tablerec.trg#,Stpos,1) ; + If status /= "_" & status /= " " &, + status /= "B" then iterate; + ShipOutput = 'OUT' + If status = "B" then ShipOutput = 'BAC' ; + Package = Substr($tablerec.trg#,Packagepos,16) ; + System = Strip(Substr($tablerec.trg#,Systempos,08)); + Destination = Strip(Substr($tablerec.trg#,Destinationpos,08)); + Date = Substr($tablerec.trg#,Datepos,08) ; + IF Date > TodaysDate then iterate ; + Time = Substr($tablerec.trg#,Timepos,04) ; + IF Date = TodaysDate &, + Time > CurrentTime then iterate ; + /* Get Endevor Destination Definition */ + /* for file names and transmission method */ + + /* + Do one of these: + Call GetDestinationInfoViaAPI; + -- or -- + Call GetDestinationInfoViaCSV; + */ + + Call GetDestinationInfoViaCSV; + + Jobname = Strip(Substr($tablerec.trg#,Jobnamepos,08)) ; + If Jobname = 'useridX' then Jobname = USERID() || 'X' + PkgExecJobname = Jobname ; +/* + OwnerMask = Strip(Substr($tablerec.trg#,OwnerMaskpos,08)) ; + QualifierMask =, + Strip(Substr($tablerec.trg#,QualifierMaskpos,08)) ; + BindPackageMask =, + Strip(Substr($tablerec.trg#,BindPackageMaskpos,08)) ; + PathMask =, + Strip(Substr($tablerec.trg#,PathMaskpos,08)) ; +*/ + TYPRUN = Strip(Substr($tablerec.trg#,TYPRUNpos,6)) ; + if Length(Typrun) > 0 then, + Typrun = ',TYPRUN='Typrun + +/* + Notify = Strip(Substr($tablerec.trg#,Notifypos,8)) ; + if Length(Notify) < 2 then, + Notify = '&SYSUID' +*/ + + seconds = '000001' /* Wait 1 second before submitting next*/ + Call WaitAwhile ; + + Date8 = DATE('S') + Date6 = substr(Date8,3); + Temp = TIME('L') + + Time8 = Substr(Temp,1,2) ||, + Substr(Temp,4,2) ||, + Substr(Temp,7,2) ||, + Substr(Temp,10,2) ; + Time6 = Substr(Temp,1,2) ||, + Substr(Temp,4,2) ||, + Substr(Temp,7,2) ; + + ParmVal = Date8 Time8 + NewStatus = 's' ; + Call UPDATE_MODEL_FROM_VARIABLES ; /* Submits Shipment job */ + $headingVariable = 'St' + pos= $Starting_$position.$headingVariable + if Last_Submit_RC = 0 then, + Do + $tablerec.trg# = Overlay(NewStatus,$tablerec.trg#,Stpos) ; + $tablerec.trg# = , + Overlay(CurrentTime,$tablerec.trg#,Timepos) ; + pos= $Starting_$position.$headingVariable + If Substr(Jobnbr,1,1) > ' ' then, + $tablerec.trg# = , + Overlay(Jobnbr,$tablerec.trg#,Jobnumbpos); + End + Else, + $tablerec.trg# = Overlay("?",$tablerec.trg#,Stpos) ; + Last_Submit_RC = 0 ; + + End ; /* Do trg# = 1 to $tablerec.0 */ + + "EXECIO * DISKW TRIGGER (STEM $tablerec. FINIS" ; + + Call FreeTriggerFile ; + + Exit(Submit_RC) ; + +/* */ +/* The subroutine below is modified from the TBL#TOOL */ +/* */ +UPDATE_MODEL_FROM_VARIABLES: + + Method# = Wordpos(Transmissn,TransmissionMethods) ; + If Method# = 0 then, + Do + NewStatus = 'R' ; + Return ; + End; + ShipModel = Word(TransmissionModels,Method#); + + /* Determine Shipment JCL Model */ + STRING = "ALLOC DD(MODEL) ", + " DA('"ModelDSN"("ShipModel")')", + " SHR REUSE "; + sa= 'Destination' Destination 'is' ShipModel + CALL BPXWDYN STRING; + MyResult = RESULT ; + If MyResult > 0 then, + Do + Say 'Cannot find Shipment Model' ShipModel + Return ; + End; + + "EXECIO * DISKR "MODEL "(STEM $Model. FINIS" ; + $delimiter = "|" ; + STRING = "FREE DD(MODEL) " + CALL BPXWDYN STRING; + + Trace off + DO $LINE = 1 TO $Model.0 + $PLACE_VARIABLE = 1; + CALL EVALUATE_SYMBOLICS ; + END; /* DO $LINE = 1 TO $Model.0 */ + IF TraceRc = 1 then Trace R + + CALL BPXWDYN , + "ALLOC DD(SYSUT1) LRECL(80) BLKSIZE(27920) SPACE(5,5) ", + " RECFM(F,B) TRACKS ", + " NEW UNCATALOG REUSE "; + + "EXECIO * DISKW SYSUT1 (STEM $Model. FINIS" ; + + Call Submit_Job ; + + Drop $Model. ; + + RETURN; + +/* */ +/* The subroutine below is borrowed from the TBL#TOOL */ +/* */ +EVALUATE_SYMBOLICS: + + DO FOREVER; + $PLACE_VARIABLE = POS('&',$Model.$LINE,$PLACE_VARIABLE) + IF $PLACE_VARIABLE = 0 THEN LEAVE; + $temp_$LINE = TRANSLATE($Model.$LINE,' ',',.()"/\+-*|'); + $temp_$LINE = TRANSLATE($temp_$LINE,' ',"'"$delimiter); + $table_word = WORD(SUBSTR($temp_$LINE,($PLACE_VARIABLE+1)),1); + $table_word = TRANSLATE($table_word,'_','-') ; + $varlen = LENGTH($table_word) + 1 ; + + if WORDPOS($table_word,$All_VARIABLES) = 0 then, + do + $PLACE_VARIABLE = $PLACE_VARIABLE + 1 ; + iterate; + end; + + $temp_word = VALUE($table_word) ; + IF DATATYPE($temp_word,S) = 9 THEN, + $temp = 'SYMBVALUE = ' $temp_word ; + ELSE, + $temp = "SYMBVALUE = '"$temp_word"'" ; + IF TraceRc = 1 then say $temp + INTERPRET $temp; + SA= 'SYMBVALUE = ' SYMBVALUE ; + + $tail = SUBSTR($Model.$LINE,($PLACE_VARIABLE+$varlen)) ; + if Substr($tail,1,1) = $delimiter then, + $tail = SUBSTR($tail,2) ; + IF $PLACE_VARIABLE > 1 THEN, + $Model.$LINE = , + SUBSTR($Model.$LINE,1,($PLACE_VARIABLE-1)) ||, + SYMBVALUE || $tail ; + else, + $Model.$LINE = , + SYMBVALUE || $tail ; + END; /* DO FOREVER */ + + RETURN; + +Submit_Job: + + STRING = "ALLOC DD(SYSIN) DUMMY" + CALL BPXWDYN STRING; +/* + STRING = "ALLOC DD(SYSPRINT) DUMMY" + CALL BPXWDYN STRING; +*/ + + STRING = "ALLOC DD(SYSUT2)", + "SYSOUT(A) WRITER(INTRDR) REUSE " ; + CALL BPXWDYN STRING; + + ADDRESS LINK 'IEBGENER' + + "EXECIO * DISKR SYSUT1 (STEM $SUBS. FINIS" ; + "EXECIO * DISKW SYSPRINT (STEM $SUBS. FINIS" ; + + STRING = "FREE DD(SYSUT1)" + CALL BPXWDYN STRING; + + STRING = "FREE DD(SYSUT2)" + CALL BPXWDYN STRING; + + return; + +AllocateTriggerForUpdate: + + STRING = "ALLOC DD(TRIGGER)", + " DA('"TriggerFileName"') OLD REUSE" + seconds = '000007' /* Number of Seconds to wait if needed */ + + Do Forever /* or at least until the file is available */ + CALL BPXWDYN STRING; + MyRC = RC + MyResult = RESULT ; + If MyResult = 0 then Leave + Call WaitAwhile + End /* Do Forever */ + + Return ; + +FreeTriggerFile: + + STRING = "FREE DD(TRIGGER)" + CALL BPXWDYN STRING ; + + Return ; + +/* */ +/* Convert Date formats */ +/* */ + +WaitAwhile: + /* */ + /* A resource is unavailable. Wait awhile and try */ + /* accessing the resource again. */ + /* */ + /* The length of the wait is designated in the parameter */ + /* value which specifies a number of seconds. */ + /* A parameter value of '000003' causes a wait for 3 seconds. */ + /* */ + + seconds = Abs(seconds) + seconds = Trunc(seconds,0) + Say "Waiting for" seconds "seconds at " DATE(S) TIME() + + /* AOPBATCH and BPXWDYN are IBM programs */ + CALL BPXWDYN "ALLOC DD(STDOUT) DUMMY SHR REUSE" + CALL BPXWDYN "ALLOC DD(STDERR) DUMMY SHR REUSE" + CALL BPXWDYN "ALLOC DD(STDIN) DUMMY SHR REUSE" + + /* AOPBATCH and BPXWDYN are IBM programs */ + parm = "sleep "seconds + Address LINKMVS "AOPBATCH parm" + + Return + +ProcessTriggerFileHeading : +/* The subroutine below is modified from the TBL#TOOL */ + + $tbl = 1 ; + $TableHeadingChar = '*' + + $LastWord = Word($tablerec.$tbl,Words($tablerec.$tbl)); + If DATATYPE($LastWord) = 'NUM' then, + Do + Say 'Please remove sequence numbers from the Table' + Exit(12) + End + + $tmprec = Substr($tablerec.$tbl,2) ; + $PositionSpclChar = POS('-',$tmprec) ; + If $PositionSpclChar = 0 then, + $PositionSpclChar = POS('*',$tmprec) ; + $tmpreplaces = '-,.'$TableHeadingChar ; + $tmprec = TRANSLATE($tmprec,' ',$tmpreplaces); + $table_variables = strip($tmprec); + $Heading_Variable_count = WORDS($table_variables) ; + If $Heading_Variable_count /=, + Words(Substr($tablerec.$tbl,2)) then, + Do + Say 'Invalid table Heading:' $tablerec.$tbl + exit(12) + End + + $heading = Overlay(' ',$tablerec.$tbl,1); /* Space leading * */ + Do $pos = 1 to $Heading_Variable_count + $HeadingVariable = Word($table_variables,$pos) ; + $tmp = Wordindex($Heading,$pos) ; + $Starting_$position.$HeadingVariable = $tmp + $tmp = $tmp + Length(Word($Heading,$pos)) -1 ; + $Ending_$position.$HeadingVariable = $tmp + + /* Build ...pos variables and values */ + tmp = ""$HeadingVariable"pos =", + $Starting_$position.$HeadingVariable + Sa= tmp + Interpret tmp + + end; /* DO $pos = 1 to $Heading_Variable_count */ + + $Heading = Translate($Heading,' ','-*') + + Return ; + +GetDestinationInfoViaAPI: + + /* Set values for Hostprefix and Rmteprefix */ + /* From the site definition */ + + /* Call API to Get Destination information */ + + + STRING = "ALLOC DD(BSTAPI) SYSOUT(J) " + CALL BPXWDYN STRING; + + STRING = "ALLOC DD(BSTERR) SYSOUT(J) " + CALL BPXWDYN STRING; + + STRING = "ALLOC DD(APIMSGS) LRECL(133) BLKSIZE(13300) ", + " DSORG(PS) ", + " SPACE(1,1) RECFM(F,B) TRACKS ", + " NEW UNCATALOG REUSE "; + CALL BPXWDYN STRING; + + STRING = "ALLOC DD(APILIST) LRECL(2048) BLKSIZE(22800) ", + " DSORG(PS) ", + " SPACE(1,1) RECFM(V,B) TRACKS ", + " NEW UNCATALOG REUSE "; + CALL BPXWDYN STRING; + + /* Call API to Get Destination information */ + parm = Left(Destination'*',7) + + /* Call APIALDST to get Destination information */ + + ADDRESS LINKMVS "APIALDST parm" + RETURN_RC = RC ; + If RETURN_RC > 0 then, + DO + parm = 'DDN:STEPLIB,APIALDST,'parm + ADDRESS LINKMVS 'CONCALL' "parm" + SA= 'CANNOT GET INFORMATION FROM ENDEVOR' ; + EXIT + END ; + "EXECIO * DISKR APILIST ( Stem apiDestinations. FINIS" + Sa= 'Messages from PULLTGGR:' + Hostprefix = Strip(Substr(apiDestinations.1,079,14)) + Rmteprefix = Strip(Substr(apiDestinations.1,113,14)) + Transmissn = Strip(Substr(apiDestinations.1,051,11)) + TARGnode = Strip(Substr(apiDestinations.1,062,08)) + + STRING = "FREE DD(APILIST)" + CALL BPXWDYN STRING; + STRING = "FREE DD(APIMSGS)" + CALL BPXWDYN STRING; + STRING = "FREE DD(BSTAPI) " + CALL BPXWDYN STRING; + STRING = "FREE DD(BSTERR) " + CALL BPXWDYN STRING; + + Return ; + +GetDestinationInfoViaCSV: + + /* Set values for Hostprefix and Rmteprefix */ + /* From the site definition */ + + /* Call CSV to Get Destination information */ + + STRING = "ALLOC DD(C1MSGS1) DUMMY " + CALL BPXWDYN STRING; + STRING = "ALLOC DD(BSTERR) DUMMY " + CALL BPXWDYN STRING; + STRING = "ALLOC DD(BSTAPI) DUMMY " + CALL BPXWDYN STRING; + + STRING = "ALLOC DD(CSVDEST) LRECL(4000) BLKSIZE(32000) ", + " DSORG(PS) ", + " SPACE(1,5) RECFM(F,B) TRACKS ", + " NEW UNCATALOG REUSE "; + CALL BPXWDYN STRING; + + STRING = "ALLOC DD(BSTIPT01) LRECL(80) BLKSIZE(800) ", + " DSORG(PS) ", + " SPACE(1,5) RECFM(F,B) TRACKS ", + " NEW UNCATALOG REUSE "; + CALL BPXWDYN STRING; + + Push "LIST DESTINATION '"Destination"'", + " TO FILE CSVDEST OPTIONS ." + + "EXECIO 1 DISKW BSTIPT01 (FINIS "; + + ADDRESS LINK 'BC1PCSV0' ; /* load from authlib */ + call_rc = rc ; +/* ADDRESS TSO 'ISRDDN' */ + + "EXECIO * DISKR CSVDEST (STEM API. finis" + + STRING = "FREE DD(CSVDEST)" ; + CALL BPXWDYN STRING; + STRING = "FREE DD(BSTIPT01)" ; + CALL BPXWDYN STRING; + STRING = "FREE DD(C1MSGS1)" ; + CALL BPXWDYN STRING; + STRING = "FREE DD(BSTERR)" ; + CALL BPXWDYN STRING; + STRING = "FREE DD(BSTAPI)" ; + CALL BPXWDYN STRING; + + IF API.0 < 2 THEN, + Do + Say 'Cannot find Definition for Destination' Destination + EXIT(12) + End + + $table_variables= Strip(API.1,'T') + + $table_variables = translate($table_variables,"_"," ") ; + $table_variables = translate($table_variables," ",',"') ; + $table_variables = translate($table_variables,"@","/") ; + $table_variables = translate($table_variables,"@",")") ; + $table_variables = translate($table_variables,"@","(") ; + + Do rec# = 2 to API.0 + $detail = API.rec# + + /* Parse the Detail record until done */ + Do $column = 1 to Words($table_variables) + Call ParseDetailCSVline + End + + Sa= 'Messages from PULLTGGR:' + Hostprefix = HOST_DSN_PREFIX + Rmteprefix = REMOTE_DSN_PREFIX + Transmissn = TRANS_DESC + TARGnode = TRANS_NODE + End; /* Do rec# = 1 to API.0 */ + + RETURN ; + +ParseDetailCSVline: + + /* Find the data for the current $column */ + + $dlmchar = Substr($detail,1,1); + + If $dlmchar = "'" then, + Do + SA= 'parsing with single quote ' + PARSE VAR $detail "'" $temp_value "'" $detail ; + If Substr($detail,1,1) = ',' then, + $detail = Strip(Substr($detail,2),'L') + End + Else, + If $dlmchar = '"' then, + Do + SA= 'parsing with double quote ' + PARSE VAR $detail '"' $temp_value '"' $detail ; + If Substr($detail,1,1) = ',' then, + $detail = Strip(Substr($detail,2),'L') + End + Else, + If $dlmchar = ',' then, + Do + SA= 'parsing with comma ' + PARSE VAR $detail ',' $temp_value ',' $detail ; + If Substr($detail,1,1)/= ',' then, + $detail = "," || $detail + $detail = Strip(Substr($detail,2),'L') */ + End + Else, + If Words($detail) = 0 then, + $temp_value = ' ' + Else, + Do + SA= 'parsing with comma ' + PARSE VAR $detail $temp_value ',' $detail ; + Sa= '$temp_value=>' $temp_value '<' + End + $temp_value = STRIP($temp_value) ; + $rslt = $temp_value + $rslt = Strip($rslt,'B','"') ; + $rslt = Strip($rslt,'B',"'") ; + if Length($rslt) < 1 then $rslt = ' ' + if Length($rslt) < 250 then, + $temp = WORD($table_variables,$column) '= "'$rslt'"'; + Else, + $temp = WORD($table_variables,$column) "=$rslt" + INTERPRET $temp; + If rec# < 3 then Say $temp + + RETURN ; + diff --git a/endevor/Field-Developed-Programs/Package-Automation/README.md b/endevor/Field-Developed-Programs/Package-Automation/README.md index da7f3a9..0695c88 100644 --- a/endevor/Field-Developed-Programs/Package-Automation/README.md +++ b/endevor/Field-Developed-Programs/Package-Automation/README.md @@ -2,30 +2,43 @@ This collection provides two opportunities to introduce automation for package actions: - - Automate Package Executions as soon as the package status changes to "APPROVED", and the time falls within the Execution window - - Automate Package Shipments as soon as the package status changes to "EXECUTED", and your "Rules" of package shipments indicate that the package should be Shipped. + - Automate Package Executions as soon as the package status changes to "APPROVED", and the Execution window is open. + - Automate Package Shipments as soon as the package status changes to "EXECUTED", and your "Rules" for package shipments indicate that the package should be Shipped to one or more destinations. -If both are included then for example, the final approval given to a package would kick off an immediate package execution, and when completed the submissions of package shipments to 3 destinations would immediately follow. +If both actions are automated, then (for example) the final approval given to a package would kick off a package execution, and followed immediately by package shipments to multiple destinations. -Package Automation has been around since 2006, and can run on any release of Endevor. Whether a package action is performed manually, by a zowe command, a sweep job, or any other means, the Package Automation actions remain the same. +Whether a triggering action is performed manually, by a zowe command, a sweep job, the Endevor web interface, or any other means, the Package Automation follow-up actions, based on an Endevor exit, remain consistently the same. ## Package Automation on Multiple Endevor images -Some Endevor administrators have responsibility for multiple Endevor images, where details like job card information and dataaset names differ from one to the next. To accommodate multiple images, the members listed below are provided to contain image-specific detail and to allow the remainder of the items to remain unchanged. +Some Endevor administrators have responsibility for multiple Endevor images, where details like the life cycle map, job card information and dataaset names differ from one image to the next. +To manage the variations from multiple images, the instructions and members listed below are provided, and allow the majority of remaining items to be left unchanged. On each Lpar where portions of this collection will run: - - Place all the REXX items into a new or existing library of your choice. - - Enter the name the library into the Exit program you choose + - Place the REXX items into a new or existing library of your choice. + - Enter the name the REXX library into the Exit program you choose to use - C1UEXT07 for Automated Executions and Shipments - C1UEXSHP for Automated Shipments only - - The WHEREIAM.rex member is not a part of the configuration, but is intended to help identify names you should use as @site member names. Execute the WHEREIAM.rex (as is) to determine the name to assign to a copy of the @site member. Then tailor the content to reflect values for the Lpar. For example, if you intend to execute the collection on Lpars named SYS1 and SYS7, then WHEREIAM.rex will instruct you to create members @SYS1 and @SYS7 respectively. The names you use for the Rules and Trigger files must entered into the @SYS1 and @SYS7 members. Additionally the names of the libraries and members you use as "MODELS" must be entered. - + - The WHEREIAM.rex member is not a part of the configuration, + but is provided to help identify names you should use as @site member names. + Execute the WHEREIAM.rex (as is) to determine the name to give to the member currently named @site. + Then tailor the content to reflect values for the Lpar. + + For example, if you intend to execute the collection on Lpars named SYS1 and SYS7, + then WHEREIAM.rex will instruct you to create members @SYS1 and @SYS7 respectively. + The names you use for the Rules and Trigger files (and other values) must entered into the @SYS1 and @SYS7 members. + ## Automate Package Executions - When an action changes the package Status value to "APPROVED", either a CAST or REVIEW action was performed. The next step for the package is to EXECUTE the package, but normally a delay postpones the execution until an EXECUTE action is requested. At sites where a "Sweep" job is used, the execution may wait minutes or hours until the next "Sweep" job runs. Then the package execution will be submitted concurrently with executions of other packages that were also waiting. Package Automation spreads out the submissions of package executions and eliminates the waiting. It submits a package execution as soon as the package Status is APPROVED. Since the year 2005, many Endevor sites have been using this feature of Package Automation. - - Members that contribute to this feature include: + When a package Status changes to "APPROVED", either a CAST or REVIEW action was performed. + The next logical step is to EXECUTE the package. + Relying on a "Sweep" job, or manual submission leads to delays or possible neglect. + + A "Sweep" job may submit multiple package executions concurrently, causing them to compete with each other for resources. + Package Automation submits executions at the time of the Cast or Approval, spreading out the resource consumption over a larger period of time. + + Members that contribute to the Automated Package Executions feature include: - C1UEXT07.cob - PKGEEXEC.tbl - PKGEXECT.rex @@ -40,31 +53,76 @@ If you want to automate Executions only and to turn off the Automated Shipment f ## Automate Package Shipments -When a package completes its Execution, the next step for the package might be one or more package shipments. This second feature of Package Automation automatically submits zero to many package shipments, based on the package content, or the package name. No longer is the manual use of panel actions required. +When a package completes Executiing, the next logical step for the package might be the submission of package shipments. +This second feature of Package Automation automatically submits zero to many package shipments, based on the package content. +No human intervention, including the manual navigation through the package shipment panels, is required. -Immediately after a package Execution, the content of the package is compared with a table of "Rules". The comparison prepares zero to many destinations and shipments to be submitted immediately or scheduled for a later time. +The Shipping feature of Package Automation is activated immediately after a package Execution. +The content of the package is compared to a table of "Rules". +Each match with the table identifies a destination for a package shipment, which can be submitted immediately, or be delayed (scheduled) for a later time as designated by the "Rules". -The only requirement is that manual package shipments be already configured. ### Items for Automated Shipping -Most items for this feature require no changes during installation. Not every item in this collection is necessary at your site. Some items are available as choices for what works best for you. For example: +Most items for this feature require no changes during installation. +Moreover, not every item in this collection is necessary at your site. +Many items are provided for your convenience, and can be installed depending on what works best for you. - - The C1UEXT07 program performs both Automated functions - Executions and Shipments. In case you want to automate shipping only, there are two additional exit programs within the collection named C1UEXSHP. However, you need only one of them. One is written in assembler and the other in COBOL. Choose the one that works best for you. If for example, your Endevor run time libraries are not PDS-E or you have not yet migrated to latest version of COBOL, you may elect to use the assembler version. - - These routines were originally constructed prior to the availability of Endevor's CSV utility. Several of the REXX routines contain both API sections and CSV sections. If you do not use any of the API sections, then the corresponding assembler API programs are not necessary for you. +For example, the C1UEXT07 program performs both Automated functions - Executions and Shipments. + In case you want to automate shipping only, there are two additional exit programs within the collection named C1UEXSHP. + However, you need only one of them. + One is written in assembler and the other in COBOL. + Choose the one that works best for you. + If for example, your Endevor run time libraries are not PDS-E or you have not yet migrated to latest version of COBOL, you may elect to use the assembler version. - - Three package shipping "MODELS" are provided in this collection as examples for your models. After submitting and capturing each unique kind of your own package shipment job(s), you can tailor them using the models as a guide. ### Installation steps for Automated Shipping On each Lpar where this collection will run: -1. Place all the REXX items into a new or existing library of your choice. -2. Determine which version of the exit you want to run. In the source code of your choice, enter the name of the REXX library you selected in step 1. You may also choose to install the program with the default package exit name, C1UEXT07. -3. Tailor a Rules file to reflect your choices for package content and shipment destinations. Record the Rules file dataset name in the renamed @site member. By default package shipments are submitted immediately after a package execution. You may choose to force delays in package shipments by coding values in the Date and Time fields. If you do, then a SWEEP job will be responsible for submitting delayed package shipments. Schedule the SWEEP job to run on a frequency that is appropriate for you. If you already have a SWEEP job for executing packages, you may need only the last step from the example SWEEPJOB member to initiate package shipments. -4. Upload (or copy) the Trigger file as a sequential file, and record the name in the renamed @site member. Only the heading on each Trigger file is necessary. -5. From the JCL submitted for your manual shipments, create a "MODEL" for each unique kind or shipment. For example you may have local shipments and remote XCOM shipments. -6. Find Assembler API program source, APIALSUM for example, in the **API-Assembler-Examples** folder. +1. Perform the steps listed in the **Package Automation on Multiple Endevor images** section. +2. Tailor a Rules file to reflect your choices for package content and shipment destinations. Record the Rules file dataset name in the renamed @site member. By default package shipments are submitted immediately after a package execution. You may choose to force delays in package shipments by coding values in the Date and Time fields. If you do, then a SWEEP job will be responsible for submitting delayed package shipments. Schedule the SWEEP job to run on a frequency that is appropriate for you. If you already have a SWEEP job for executing packages, you may need only the last step from the example SWEEPJOB member to initiate package shipments. +3. Create the Trigger file as a sequential file, and record the file name as the **TriggerFileName** in the renamed @site member. Only the heading on the Trigger file is necessary, but keep the mixed-case format, and make the record length be at least 80 characters. +4. Create one or more package shipping "MODEL" members. Submit a 1-time manual package shipment for each file transmission method you use. Then, capture the manually submitted JCL (first job only) and tailor it using one of the models (SHIPLOCL, SHIP#FTP, SHIPMODL) in this collection as a guide. The three examples show how specific values are to be replaced with mixed-case variable names. Specify the names you give to your "MODEL" members as values for the **TransmissionModels** in your (renamed) @site member. Place each "MODEL" member into the library named as your **MySEN2Library**. +5. The use of the **#PSNFTPE** member is completely optional. File transmission tools will tell you the job number for remotely-submitted jobs. This member is coded to find the job number for an FTP submission, and to place it onto the TriggerFile. If you elect to not use the member, then your TriggerFile will not contain job numbers for remote jobs. +6. Older versions of this collection depended on assembler API programs. If you find you need or prefer an API program, find the source in the **API-Assembler-Examples** folder. + +### Notes on commenting Package Automation members + +It is highly recommended that each .skl and "MODEL" member you use be commented. +The edit macro named JCLCOMMT.rex can apply recommended comments onto anything that looks like JCL. +You can find the code for JCLCOMMT.rex in the [ISPF-tools-for-Quick-Edit-and-Endevor](https://github.com/BroadcomMFD/broadcom-product-scripts/tree/main/endevor/Field-Developed-Programs/ISPF-tools-for-Quick-Edit-and-Endevor) folder. + +The commnenting will allow you to reveiew your package shipping (and other) jobs, and know the element or member name that contains the lines of JCL. + +## Find items at the these locations: + +**item** Location + +**@site.rex** - endevor\Field-Developed-Programs\Package-Automation + +**BILDTGGR.rex** - endevor\Field-Developed-Programs\Package-Automation + +**PKGESHIP.rex** - endevor\Field-Developed-Programs\Package-Automation + +**PULLTGGR.rex** - endevor\Field-Developed-Programs\Package-Automation + +**SHIP#FTP.skl** - endevor\Field-Developed-Programs\Package-Automation + +**other models** - endevor\Field-Developed-Programs\Package-Automation + +**SHIPRULE** - endevor\Field-Developed-Programs\Package-Automation + +**TBLUNLOD.rex** - endevor\Field-Developed-Programs\Package-Automation + +**Trigger** - endevor\Shipments-for-Multiple-Destinations + endevor\Field-Developed-Programs\Package-Automation + +**UPDTTGGR.rex** - endevor\Field-Developed-Programs\Package-Automation + +**WHERE@M1.rex** - endevor\Field-Developed-Programs\Package-Automation + +**WHEREAMI.rex** - endevor\Field-Developed-Programs\Package-Automation + +**JCLCOMMT.rex** - endevor\Field-Developed-Programs\ISPF-tools-for-Quick-Edit-and-Endevor -The COBOL and Assembler modules you select to use, must be generated using your Endevor release CSIQOPTN and CSIQLOAD libraries as input, and typically output to your CSIQAUTU library. diff --git a/endevor/Field-Developed-Programs/Package-Automation/SHIP#FTP.skl b/endevor/Field-Developed-Programs/Package-Automation/SHIP#FTP.skl index b84019d..9be4333 100644 --- a/endevor/Field-Developed-Programs/Package-Automation/SHIP#FTP.skl +++ b/endevor/Field-Developed-Programs/Package-Automation/SHIP#FTP.skl @@ -1,484 +1,504 @@ -//&PkgExecJobname JOB (&AltIDAcctCode),'SHIP &Destination', -// MSGLEVEL=(1,1),CLASS=&AltIDJobClass,REGION=0M,MSGCLASS=A, -// NOTIFY=&Notify^&Typrun -//***==============================================================* * -//***=====Remote Package Shipment via FTP==========================* * -// JCLLIB ORDER=(SYSMD32.NDVR.TEAM.JCL) -//* ISPSLIB(SHIP#FTP) -//*----------------------------------------------------- -//*--------------------------------------------------------SHIP#FTP -//* MY DESTNAME = &Destination -//* MY FROMNODE = &SENDNODE -//* MY PACKAGE = &Package -//* MY VNBCPARM = C1BMX000,&Date8,&Time8 -//* DESTVAR1 = 'DESTVAR1' -//* DESTVAR2 = 'DESTVAR2' -//*--------------------------------------------------------SHIP#FTP -//***==============================================================* * -//***==============================================================* * -//*================================================================ -//* Prepare OVERRIDE temp PDS for Automated package shipments -//*================================================================ -//OVERRIDE EXEC PGM=IKJEFT1B,PARM='ENBPIU00 A ' SHIP#FTP -//TABLE DD * -* MODEL- TBLOUT-- - INPUTS SHOWME - INPUTS OVERRIDE -//SYSTSIN DD DUMMY -//OPTIONS DD * -* $delimiter = '|' -* $QuietMessages = 'Y' /* Bypass messages Y/N */ -* - Cmd="SHIP PAC '&Package' TO DEST &Destination OPT &ShipOutput." - thisSubSys = GETSYRSB(&Package) ; /* get sys/sub from pkg name*/ - thisSubSys = Word(thisSubSys,1); /* get sys/sub from pkg name*/ - SENTFROM = SYSVAR(SYSNODE) -//INPUTS DD DATA,DLM=@@ -//* Package Shipment Details (SHIP#FTP) ** -// SET C1SUBSYS='&thisSubSys' -// SET PACKAGE='&Package' -// SET DESTIN='&Destination' -// SET CMD='&Cmd' -// SET REQUEST='&ShipOutput' -// SET SENTFROM='&SENTFROM' -//* Package Shipment Details (SHIP#FTP) ** -@@ -//SYSEXEC DD DSN=SYSMD32.NDVR.ADMIN.ENDEVOR.ADM1.CLSTREXX, -// DISP=SHR -// DD DSN=&MyCLS0Library,DISP=SHR -// DD DSN=&MyCLS2Library,DISP=SHR -//SYSTSPRT DD SYSOUT=* -//SYSPRINT DD SYSOUT=* -//SYSIN DD DUMMY -//* -//SHOWME DD SYSOUT=* SHOWME = FINDREPL -//OVERRIDE DD DSN=&&OVERRIDE(OVERRIDE),DISP=(NEW,PASS), -// UNIT=3390, -// SPACE=(TRK,(01,01,05)), -// DCB=(LRECL=80,RECFM=FB,BLKSIZE=0,DSORG=PO) -//* -//***==============================================================* * -//***==============================================================* * -//***==============================================================* * -//NDVRSHIP EXEC PGM=NDVRC1,DYNAMNBR=1500,REGION=4096K, SHIP#FTP -// PARM='C1BMX000,&Date8,&Time8 SHIP &Userid ' -//* -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -// INCLUDE MEMBER=STEPLIB -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//*C1BMXTRC DD DISP=SHR, -//* DSN=CAPRD.ENDV.TRACE.LOCAL -//* -//C1BMXTRC DD SYSOUT=*,LRECL=133,RECFM=FBA ** Shipment trace ** -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* -//* *--------------------------------------------* SHIP#FTP (CONT.) * -//* -//C1BMXDET DD SYSOUT=* ** SHIPMENT DETAIL REPORT **************** -//C1BMXSUM DD SYSOUT=* ** SHIPMENT SUMMARY REPORT **************** -//C1BMXSYN DD SYSOUT=* ** INPUT LISTING AND SYNTAX ERROR REPORT ** -//* -//* ****************************************************************** -//* * LOCAL TRANSFER COPY/RUN COMMAND DATASETS -//* * LOCAL MODEL CONTROL CARD DATASET -//* ****************************************************************** -//* -//C1BMXLCC DD DSN=&&XLCC,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* -//C1BMXLCM DD DISP=SHR,DSN=&MyOPT2Library -// DD DISP=SHR,DSN=&MyOPTNLibrary -//* -//* ****************************************************************** -//* * NETVIEW FTP "ADD TO TRANSMISSION QUEUE" DATASET AND INTERNAL RDR -//* * NETVIEW FTP MODEL CONTROL CARD DATASET //* -****************************************************************** -//* -//C1BMXFTC DD DSN=&&XFTC,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//C1BMXFTM DD DISP=SHR,DSN=&MyOPT2Library -// DD DISP=SHR,DSN=&MyOPTNLibrary -//* * NETWORK DATA MOVER COPY/RUN COMMAND DATASETS -//* * NETWORK DATA MOVER MODEL CONTROL CARD DATASET -//* ****************************************************************** -//C1BMXNWC DD DSN=&&XNWC,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//C1BMXNWM DD DISP=SHR,DSN=&MyOPT2Library -// DD DISP=SHR,DSN=&MyOPTNLibrary -//* -//C1BMXNWM DD DISP=SHR,DSN=&MyOPT2Library -// DD DISP=SHR,DSN=&MyOPTNLibrary -//C1BMXRJC DD DISP=SHR,DSN=&MySEN2Library -// DD DISP=SHR,DSN=&MySENULibrary -//* -//* ****************************************************************** -//* * SHIPMENT DATE/TIME READ BY INLINE HOST CONFIRMATION STEP -//* ****************************************************************** -//* -//C1BMXDTM DD DSN=&&XDTM,DISP=(NEW,PASS),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* -//* ****************************************************************** -//* * HOST STAGING DATASET DELETION STATEMENTS (IDCAMS) -//* ****************************************************************** -//* -//C1BMXDEL DD DSN=&&HDEL,DISP=(NEW,PASS),SPACE=(TRK,(10,10)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* -//* ****************************************************************** -//* * REMOTE JCL MODEL MEMBERS -//* ****************************************************************** -//* -//C1BMXMDL DD DSN=&&OVERRIDE,DISP=(OLD,DELETE) -// DD DISP=SHR,DSN=&MyOPT2Library -// DD DISP=SHR,DSN=&MyOPTNLibrary -//* -//* ****************************************************************** -//* * JCL SEGMENTS TO CREATE GROUP SYMBOLICS FOR MODELLING -//* ****************************************************************** -//* -//C1BMXHJC DD DATA,DLM=## -//&Jobname JOB (55800000),'SHIP &Destination', -// MSGLEVEL=(1,1),CLASS=B,REGION=0M,MSGCLASS=A, -// NOTIFY=&SYSUID TYPRUN=HOLD -//*-------------------------------------------------------------------* -// JCLLIB ORDER=(SYSMD32.NDVR.TEAM.JCL) -//*-------------------------------------------------------------------* -//* ISPSLIB(SHIP#FTP) -//*--------------------------------------------------------SHIP#FTP -//* MY DESTNAME = &Destination -//* MY FROMNODE = &SENDNODE -//* MY PACKAGE = &Package -//* MY VNBCPARM = C1BMX000,&Date8,&Time8 -//*--------------------------------------------------------SHIP#FTP -## -//* -//* *--------------------------------------------* SHIP#FTP (CONT.) * -//* -//C1BMXHCN DD DATA,DLM=## -//* *--------------------------------------------------------------* * -//* *--------------------------------------------------------------* * -//* SHIP#FTP -//CONFGE12 EXEC PGM=NDVRC1,REGION=4096K,COND=(12,GT,$XM_STEP), -// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,GE,0012,$DEST_ID' -//* SHIP#FTP -//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* SHIP#FTP -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -// INCLUDE MEMBER=STEPLIB -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* *--------------------------------------------* SHIP#FTP(CONT -//* SHIP#FTP -//CONFGE08 EXEC PGM=NDVRC1,REGION=4096K,COND=(08,NE,$XM_STEP), -// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,GE,0008,$DEST_ID' -//* SHIP#FTP -//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -// INCLUDE MEMBER=STEPLIB -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* SHIP#FTP -//* SHIP#FTP -//CONFGE04 EXEC PGM=NDVRC1,REGION=4096K,COND=(04,NE,$XM_STEP), -// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,EQ,0004,$DEST_ID' -//* SHIP#FTP -//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* SHIP#FTP -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -// INCLUDE MEMBER=STEPLIB -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* SHIP#FTP -//* SHIP#FTP -//CONFGE00 EXEC PGM=NDVRC1,REGION=4096K,COND=(00,NE,$XM_STEP), -// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,EQ,0000,$DEST_ID' -//* SHIP#FTP -//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* SHIP#FTP -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -// INCLUDE MEMBER=STEPLIB -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* SHIP#FTP -//* SHIP#FTP -//CONFABND EXEC PGM=NDVRC1,REGION=4096K,COND=ONLY, SHIP#FTP -// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,AB,****,********' -//* SHIP#FTP -//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* SHIP#FTP -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -// INCLUDE MEMBER=STEPLIB -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* SHIP#FTP -//* *--------------------------------------------* ISPSLIB(SHIP#FTP) * -## -//* -//* *--------------------------------------------* C1BMXJOB (CONT.) * -//* -//C1BMXRCN DD DATA,DLM=## -//*----PACKAGE SHIPMENT JOB #4 -------------------------- SHIP#FTP -//* *--Package Shipment Confirmation/Notification* ISPSLIB(SHIP#FTP) * -//* -//* *================================================================* -//* * INSTREAM DATASET CONTAINING REMOTE CONFIRMATION JCL -//* *================================================================* -//WHATNTFY IF (RC > 7) THEN -//* -//CONFGT12 EXEC PGM=IEBGENER SHIP#FTP -//SYSUT1 DD DATA,DLM=$$ JOB SHIPPED BACK TO HOST -//&Jobname JOB (55800000),'SHIP &Destination', -// MSGLEVEL=(1,1),CLASS=B,REGION=0M,MSGCLASS=A, -// NOTIFY=&SYSUID TYPRUN=HOLD -// JCLLIB ORDER=(SYSMD32.NDVR.TEAM.JCL) -//* ISPSLIB(SHIP#FTP) -//*--------------------------------------------------------SHIP#FTP -//* MY DESTNAME = &Destination -//* MY FROMNODE = &SENDNODE -//* MY PACKAGE = &Package -//* MY VNBCPARM = C1BMX000,&Date8,&Time8 -//*--------------------------------------------------------SHIP#FTP -//CONFCOPY EXEC PGM=NDVRC1, SHIP#FTP -// PARM='C1BMX000,&Date8,&Time8,CONF,RCPY,EQ,0012,$DEST_ID' -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -// INCLUDE MEMBER=STEPLIB -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//*--------------------------------------------------------SHIP#FTP -//NTFYTGGR EXEC PGM=IRXJCL, SHIP#FTP -// PARM='UPDTTGGR &Destination 12 &VPHPKGID' -//STEPLIB DD DISP=SHR,DSN=&MyAUTULibrary -// DD DISP=SHR,DSN=&MyAUTHLibrary -//* DD DISP=SHR,DSN=&MyLOADLibrary -//CONLIB DD DISP=SHR,DSN=&MyLOADLibrary -//SYSEXEC DD DSN=&MyCLS0Library,DISP=SHR -// DD DSN=&MyCLS2Library,DISP=SHR -//SYSTSPRT DD SYSOUT=* -//*------------------------------------------------------- SHIP#FTP -//DELETES EXEC PGM=IDCAMS,COND=(4,LT) SHIP#FTP -//SYSPRINT DD SYSOUT=* -//AMSDUMP DD SYSOUT=* -//SYSIN DD * - DELETE 'PUBLIC.HOST.D&Date6.T&Time6.&Destination.*' NONVSAM -//*------------------------------------------------------- SHIP#FTP -//* *--------------------------------------------* SHIP#FTP (CONT.) * -$$ -//SYSUT2 DD DSN=PUBLIC.RMOT.D&Date6.T&Time6.NOTIFY, -// DISP=(NEW,CATLG,KEEP),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//SYSPRINT DD SYSOUT=* -//SYSIN DD DUMMY -//* *--------------------------------------------* SHIP#FTP (CONT.) * -//WHATNTFY ELSE -//* -//CONFGT00 EXEC PGM=IEBGENER SHIP#FTP -//SYSUT1 DD DATA,DLM=$$ JOB SHIPPED BACK TO HOST -//&Jobname JOB (55800000),'SHIP &Destination', -// MSGLEVEL=(1,1),CLASS=B,REGION=0M,MSGCLASS=A, -// NOTIFY=&SYSUID TYPRUN=HOLD -// JCLLIB ORDER=(SYSMD32.NDVR.TEAM.JCL) -//* ISPSLIB(SHIP#FTP) -//*--------------------------------------------------------SHIP#FTP -//* MY DESTNAME = &Destination -//* MY FROMNODE = &SENDNODE -//* MY PACKAGE = &Package -//* MY VNBCPARM = C1BMX000,&Date8,&Time8 -//*--------------------------------------------------------SHIP#FTP -//CONFCOPY EXEC PGM=NDVRC1, SHIP#FTP -// PARM='C1BMX000,&Date8,&Time8,CONF,RCPY,EQ,0000,$DEST_ID' -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -// INCLUDE MEMBER=STEPLIB -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//*--------------------------------------------------------SHIP#FTP -//NTFYTGGR EXEC PGM=IRXJCL, SHIP#FTP -// PARM='UPDTTGGR &Destination / &VPHPKGID' -//STEPLIB DD DISP=SHR,DSN=&MyAUTULibrary -// DD DISP=SHR,DSN=&MyAUTHLibrary -//* DD DISP=SHR,DSN=&MyLOADLibrary -//CONLIB DD DISP=SHR,DSN=&MyLOADLibrary -//SYSEXEC DD DSN=&MyCLS0Library,DISP=SHR -// DD DSN=&MyCLS2Library,DISP=SHR -//SYSTSPRT DD SYSOUT=* -//*------------------------------------------------------- SHIP#FTP -//DELETES EXEC PGM=IDCAMS,COND=(4,LT) SHIP#FTP -//SYSPRINT DD SYSOUT=* -//AMSDUMP DD SYSOUT=* -//SYSIN DD * - DELETE 'PUBLIC.HOST.D&Date6.T&Time6.&Destination.*' NONVSAM -//*------------------------------------------------------- SHIP#FTP -$$ -//SYSUT2 DD DSN=PUBLIC.RMOT.D&Date6.T&Time6.NOTIFY, -// DISP=(NEW,CATLG,KEEP),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//SYSPRINT DD SYSOUT=* -//SYSIN DD DUMMY -//WHATNTFY ENDIF -//* *--------------------------------------------* SHIP#FTP (CONT.) * -//FTPSUBMT EXEC PGM=FTP,REGION=2048K,TIME=800 SHIP#FTP -//NETRC DD DISP=SHR,DSN=&SYSUID..ENDEVOR.NETRC(SHIPPING) -//SYSTSPRT DD SYSOUT=* -//SYSPRINT DD SYSOUT=* -//SYSUDUMP DD SYSOUT=Q -//OUTPUT DD SYSOUT=* SHIP#FTP -//SYSIN DD * - &MyHomeAddress -MODE B -EBCDIC -SITE FILETYPE=JES -PUT 'PUBLIC.RMOT.D&Date6.T&Time6.NOTIFY' -QUIT -//* *--------------------------------------------* C1BMXJOB (CONT.) * -//REMODELT EXEC PGM=IDCAMS,COND=(4,LT) <-Remote Delete SHIP#FTP -//SYSPRINT DD SYSOUT=* -//AMSDUMP DD SYSOUT=* -//DELETEME DD DSN=PUBLIC.RMOT.D&Date6.T&Time6.NOTIFY, -// DISP=(SHR,DELETE) -//SYSIN DD * - DELETE 'PUBLIC.RMOT.D&Date6.T&Time6.&Destination.*' NONVSAM -## -//* -//* *--------------------------------------------* C1BMXJOB (CONT.) * -//* -//C1BMXLIB DD DATA,DLM=## -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -//STEPLIB DD DISP=SHR,DSN=&MyAUTULibrary -// DD DISP=SHR,DSN=&MyAUTHLibrary -//* DD DISP=SHR,DSN=&MyLOADLibrary -//CONLIB DD DISP=SHR,DSN=&MyLOADLibrary -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -## -//* -//* *--------------------------------------------* C1BMXJOB (CONT.) * -//* -//* ****************************************************************** -//* * SHIP PACKAGE PKG-ID TO DESTINATION DEST-ID ( OPTION BACKOUT ) . -//* ****************************************************************** -//* -//* THE FOLLOWING DD STATEMENT MUST BE THE *LAST* CARD IN THIS MEMBER. -//* ISPSLIB MEMBER C1BMXIN IS INCLUDED AFTER IT AS THE INSTREAM DATA. -//* -//C1BMXIN DD * *-------------------------------* ISPSLIB(SHIP#FTP) * -SHIP PAC '&Package' TO DEST &Destination OPT &ShipOutput . -//* *============================================* ISPSLIB(SHIP#FTP) * -//* *==============================================================* * -//* *==============================================================* * -//* *==============================================================* * -//* *==============================================================* * -//*------------------------------------------------------- SHIP#FTP -//* *==============================================================* * -//* *==============================================================* * -//* -//SUBMIT EXEC PGM=IEBGENER,COND=(12,LE,NDVRSHIP) SHIP#FTP -//SYSUT1 DD DSN=&&XFTC,DISP=(OLD,PASS) -//SYSUT2 DD SYSOUT=(A,INTRDR) -//SYSPRINT DD SYSOUT=* -//SYSIN DD DUMMY +//&PkgExecJobname JOB (&AltIDAcctCode),'SHIP &Destination', +// MSGLEVEL=(1,1),CLASS=&AltIDJobClass,REGION=0M,MSGCLASS=A, +// NOTIFY=&Notify|&Typrun +//***==============================================================* * +//***=====Remote Package Shipment via FTP==========================* * +//***= This example member is built from a manually submitted ===* * +//***= package shipping job, using IBM's FTP for Transmission. ==* * +//***= Then detailed text strings are replaced with variables ===* * +//***= to create this member. ===* * +//***= This example shipment model includes an auto-Cast option ===* * +//***= as processed by the SHIPCAST included member. ===* * +//***==============================================================* * +// JCLLIB ORDER=(YOURSITE.NDVR.TEAM.JCL) +//* ISPSLIB(SHIP#FTP) +//*--------------------------------------------------------SHIP#FTP +//* MY DESTNAME = &Destination +//* MY FROMNODE = &SENDNODE +//* MY PACKAGE = &Package +// SET PACKAGE='&Package' +//* MY VNBCPARM = C1BMX000,&Date8,&Time8 +//* DESTVAR1 = 'DESTVAR1' +//* DESTVAR2 = 'DESTVAR2' +//* RMOTPRFX = '&Rmteprefix' +//*--------------------------------------------------------SHIP#FTP +//***==============================================================* * +//***==============================================================* * +//*================================================================ +//* Prepare OVERRIDE temp PDS for Automated package shipments +//*================================================================ +//OVERRIDE EXEC PGM=IKJEFT1B,PARM='ENBPIU00 A ' SHIP#FTP +//TABLE DD * +* MODEL- TBLOUT-- + INPUTS SHOWME + INPUTS OVERRIDE +//SYSTSIN DD DUMMY +//OPTIONS DD * +* $delimiter = '|' +* $QuietMessages = 'Y' /* Bypass messages Y/N */ +* + Cmd="SHIP PAC '&Package' TO DEST &Destination OPT &ShipOutput." + thisSubSys = GETSYRSB(&Package) ; /* get sys/sub from pkg name*/ + thisSubSys = Word(thisSubSys,1); /* get sys/sub from pkg name*/ + SENTFROM = SYSVAR(SYSNODE) + RMOTLIBS = +//INPUTS DD DATA,DLM=@@ +//* Package Shipment Details (SHIP#FTP) ** +// SET C1SUBSYS='&thisSubSys' +// SET PACKAGE='&Package' +// SET DESTIN='&Destination' +// SET CMD='&Cmd' +// SET REQUEST='&ShipOutput' +// SET SENTFROM='&SENTFROM' +// SET RMOTLIBS='PUBLIC.RMOT.D&Date6.T&Time6.&Destination' +//* Package Shipment Details (SHIP#FTP) ** +@@ +//SYSEXEC DD DSN=YOURSITE.YOUR.NDVR.NODES1.CLSTREXX, +// DISP=SHR +// DD DSN=&MyCLS0Library,DISP=SHR +// DD DSN=&MyCLS2Library,DISP=SHR +//SYSTSPRT DD SYSOUT=* +//SYSPRINT DD SYSOUT=* +//SYSIN DD DUMMY +//* +//SHOWME DD SYSOUT=* SHOWME = FINDREPL +//OVERRIDE DD DSN=&&OVERRIDE(OVERRIDE),DISP=(NEW,PASS), +// UNIT=3390, +// SPACE=(TRK,(01,01,05)), +// DCB=(LRECL=80,RECFM=FB,BLKSIZE=0,DSORG=PO) +//* +//***==============================================================* * +//***==============================================================* * +//***==============================================================* * +//NDVRSHIP EXEC PGM=NDVRC1,DYNAMNBR=1500,REGION=4096K, SHIP#FTP +// PARM='C1BMX000,&Date8,&Time8 SHIP &Userid ' +//* +//* ****************************************************************** +//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS +//* ****************************************************************** +// INCLUDE MEMBER=STEPLIB +//* +//********************************************************************* +//* ESI TRACE IN BATCH MODE * +//********************************************************************* +//*EN$TRESI DD SYSOUT=* +//*EN$TRALC DD SYSOUT=* +//*C1BMXTRC DD DISP=SHR, +//* DSN=YOUR.ENDV.TRACE.LOCAL +//* +//C1BMXTRC DD SYSOUT=*,LRECL=133,RECFM=FBA ** Shipment trace ** +//* +//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* +//SYMDUMP DD DUMMY +//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* +//* +//* *--------------------------------------------* SHIP#FTP (CONT.) * +//* +//C1BMXDET DD SYSOUT=* ** SHIPMENT DETAIL REPORT **************** +//C1BMXSUM DD SYSOUT=* ** SHIPMENT SUMMARY REPORT **************** +//C1BMXSYN DD SYSOUT=* ** INPUT LISTING AND SYNTAX ERROR REPORT ** +//* +//* ****************************************************************** +//* * LOCAL TRANSFER COPY/RUN COMMAND DATASETS +//* * LOCAL MODEL CONTROL CARD DATASET +//* ****************************************************************** +//* +//C1BMXLCC DD DSN=&&XLCC,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//* +//C1BMXLCM DD DISP=SHR,DSN=&MyOPT2Library +// DD DISP=SHR,DSN=&MyOPTNLibrary +//* +//* ****************************************************************** +//* * NETVIEW FTP "ADD TO TRANSMISSION QUEUE" DATASET AND INTERNAL RDR +//* * NETVIEW FTP MODEL CONTROL CARD DATASET //* +****************************************************************** +//* +//C1BMXFTC DD DSN=&&XFTC,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//C1BMXFTM DD DISP=SHR,DSN=&MyOPT2Library +// DD DISP=SHR,DSN=&MyOPTNLibrary +//* * NETWORK DATA MOVER COPY/RUN COMMAND DATASETS +//* * NETWORK DATA MOVER MODEL CONTROL CARD DATASET +//* ****************************************************************** +//C1BMXNWC DD DSN=&&XNWC,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//C1BMXNWM DD DISP=SHR,DSN=&MyOPT2Library +// DD DISP=SHR,DSN=&MyOPTNLibrary +//* +//C1BMXNWM DD DISP=SHR,DSN=&MyOPT2Library +// DD DISP=SHR,DSN=&MyOPTNLibrary +//C1BMXRJC DD DISP=SHR,DSN=&MySEN2Library +// DD DISP=SHR,DSN=&MySENULibrary +//* +//* ****************************************************************** +//* * SHIPMENT DATE/TIME READ BY INLINE HOST CONFIRMATION STEP +//* ****************************************************************** +//* +//C1BMXDTM DD DSN=&&XDTM,DISP=(NEW,PASS),SPACE=(TRK,(1,0)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//* +//* ****************************************************************** +//* * HOST STAGING DATASET DELETION STATEMENTS (IDCAMS) +//* ****************************************************************** +//* +//C1BMXDEL DD DSN=&&HDEL,DISP=(NEW,PASS),SPACE=(TRK,(10,10)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//* +//* ****************************************************************** +//* * REMOTE JCL MODEL MEMBERS +//* ****************************************************************** +//* +//C1BMXMDL DD DSN=&&OVERRIDE,DISP=(OLD,DELETE) +// DD DISP=SHR,DSN=&MyOPT2Library +// DD DISP=SHR,DSN=&MyOPTNLibrary +//* +//* ****************************************************************** +//* * JCL SEGMENTS TO CREATE GROUP SYMBOLICS FOR MODELLING +//* ****************************************************************** +//* +//C1BMXHJC DD DATA,DLM=## +//&Jobname JOB (0000),'SHIP &Destination', +// MSGLEVEL=(1,1),CLASS=B,REGION=0M,MSGCLASS=A, +// NOTIFY=&SYSUID TYPRUN=HOLD +//*-------------------------------------------------------------------* +// JCLLIB ORDER=(YOURSITE.NDVR.TEAM.JCL) +//*-------------------------------------------------------------------* +//* ISPSLIB(SHIP#FTP) +//*--------------------------------------------------------SHIP#FTP +//* MY DESTNAME = &Destination +//* MY FROMNODE = &SENDNODE +//* MY PACKAGE = &Package +// SET PACKAGE='&Package' +//* MY VNBCPARM = C1BMX000,&Date8,&Time8 +//*--------------------------------------------------------SHIP#FTP +## +//* +//* *--------------------------------------------* SHIP#FTP (CONT.) * +//* +//C1BMXHCN DD DATA,DLM=## +//* *--------------------------------------------------------------* * +//* *--------------------------------------------------------------* * +//* SHIP#FTP +//CONFGE12 EXEC PGM=NDVRC1,REGION=4096K,COND=(12,GT,$XM_STEP), +// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,GE,0012,$DEST_ID' +//* SHIP#FTP +//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//* SHIP#FTP +//* ****************************************************************** +//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS +//* ****************************************************************** +// INCLUDE MEMBER=STEPLIB +//********************************************************************* +//* ESI TRACE IN BATCH MODE * +//********************************************************************* +//*EN$TRESI DD SYSOUT=* +//*EN$TRALC DD SYSOUT=* +//* +//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* +//SYMDUMP DD DUMMY +//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* +//* *--------------------------------------------* SHIP#FTP(CONT +//* SHIP#FTP +//CONFGE08 EXEC PGM=NDVRC1,REGION=4096K,COND=(08,NE,$XM_STEP), +// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,GE,0008,$DEST_ID' +//* SHIP#FTP +//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//* ****************************************************************** +//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS +//* ****************************************************************** +// INCLUDE MEMBER=STEPLIB +//* +//********************************************************************* +//* ESI TRACE IN BATCH MODE * +//********************************************************************* +//*EN$TRESI DD SYSOUT=* +//*EN$TRALC DD SYSOUT=* +//* +//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* +//SYMDUMP DD DUMMY +//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* +//* SHIP#FTP +//* SHIP#FTP +//CONFGE04 EXEC PGM=NDVRC1,REGION=4096K,COND=(04,NE,$XM_STEP), +// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,EQ,0004,$DEST_ID' +//* SHIP#FTP +//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//* SHIP#FTP +//* ****************************************************************** +//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS +//* ****************************************************************** +// INCLUDE MEMBER=STEPLIB +//* +//********************************************************************* +//* ESI TRACE IN BATCH MODE * +//********************************************************************* +//*EN$TRESI DD SYSOUT=* +//*EN$TRALC DD SYSOUT=* +//* +//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* +//SYMDUMP DD DUMMY +//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* +//* SHIP#FTP +//* SHIP#FTP +//CONFGE00 EXEC PGM=NDVRC1,REGION=4096K,COND=(00,NE,$XM_STEP), +// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,EQ,0000,$DEST_ID' +//* SHIP#FTP +//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//* SHIP#FTP +//* ****************************************************************** +//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS +//* ****************************************************************** +// INCLUDE MEMBER=STEPLIB +//* +//********************************************************************* +//* ESI TRACE IN BATCH MODE * +//********************************************************************* +//*EN$TRESI DD SYSOUT=* +//*EN$TRALC DD SYSOUT=* +//* +//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* +//SYMDUMP DD DUMMY +//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* +//* SHIP#FTP +//* SHIP#FTP +//CONFABND EXEC PGM=NDVRC1,REGION=4096K,COND=ONLY, SHIP#FTP +// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,AB,****,********' +//* SHIP#FTP +//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//* SHIP#FTP +//* ****************************************************************** +//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS +//* ****************************************************************** +// INCLUDE MEMBER=STEPLIB +//* +//********************************************************************* +//* ESI TRACE IN BATCH MODE * +//********************************************************************* +//*EN$TRESI DD SYSOUT=* +//*EN$TRALC DD SYSOUT=* +//* +//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* +//SYMDUMP DD DUMMY +//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* +//* SHIP#FTP +//* *--------------------------------------------* ISPSLIB(SHIP#FTP) * +## +//* +//* *--------------------------------------------* C1BMXJOB (CONT.) * +//* +//C1BMXRCN DD DATA,DLM=## +//*----PACKAGE SHIPMENT JOB #4 -------------------------- SHIP#FTP +//* *--Package Shipment Confirmation/Notification* ISPSLIB(SHIP#FTP) * +//* +//* *================================================================* +//* * INSTREAM DATASET CONTAINING REMOTE CONFIRMATION JCL +//* *================================================================* +//WHATNTFY IF (RC > 8) THEN +//* +//CONFGT12 EXEC PGM=IEBGENER SHIP#FTP +//SYSUT1 DD DATA,DLM=$$ JOB SHIPPED BACK TO HOST +//&Jobname JOB (0000),'SHIP &Destination', +// MSGLEVEL=(1,1),CLASS=B,REGION=0M,MSGCLASS=A, +// NOTIFY=&SYSUID TYPRUN=HOLD +// JCLLIB ORDER=(YOURSITE.NDVR.TEAM.JCL) +//* ISPSLIB(SHIP#FTP) +//*--------------------------------------------------------SHIP#FTP +//* MY DESTNAME = &Destination +//* MY FROMNODE = &SENDNODE +//* MY PACKAGE = &Package +// SET PACKAGE='&Package' +//* MY VNBCPARM = C1BMX000,&Date8,&Time8 +//*--------------------------------------------------------SHIP#FTP +//CONFCOPY EXEC PGM=NDVRC1, SHIP#FTP +// PARM='C1BMX000,&Date8,&Time8,CONF,RCPY,EQ,0012,$DEST_ID' +//* ****************************************************************** +//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS +//* ****************************************************************** +// INCLUDE MEMBER=STEPLIB +//* +//********************************************************************* +//* ESI TRACE IN BATCH MODE * +//********************************************************************* +//*EN$TRESI DD SYSOUT=* +//*EN$TRALC DD SYSOUT=* +//* +//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* +//SYMDUMP DD DUMMY +//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* +//*--------------------------------------------------------SHIP#FTP +//NTFYTGGR EXEC PGM=IRXJCL, SHIP#FTP +// PARM='UPDTTGGR &Destination 12 &Package' +//STEPLIB DD DISP=SHR,DSN=&MyAUTULibrary +// DD DISP=SHR,DSN=&MyAUTHLibrary +//* DD DISP=SHR,DSN=&MyLOADLibrary +//CONLIB DD DISP=SHR,DSN=&MyLOADLibrary +//SYSEXEC DD DSN=&MyCLS0Library,DISP=SHR +// DD DSN=&MyCLS2Library,DISP=SHR +//SYSTSPRT DD SYSOUT=* +//*------------------------------------------------------- SHIP#FTP +//DELETES EXEC PGM=IDCAMS,COND=(4,LT) SHIP#FTP +//SYSPRINT DD SYSOUT=* +//AMSDUMP DD SYSOUT=* +//SYSIN DD * + DELETE 'PUBLIC.HOST.D&Date6.T&Time6.&Destination.*' NONVSAM +//*------------------------------------------------------- SHIP#FTP +//* *--------------------------------------------* SHIP#FTP (CONT.) * +$$ +//SYSUT2 DD DSN=&Rmteprefix.D&Date6.T&Time6.NOTIFY, +// DISP=(MOD,CATLG,KEEP),SPACE=(TRK,(1,0)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//SYSPRINT DD SYSOUT=* +//SYSIN DD DUMMY +//* *--------------------------------------------* SHIP#FTP (CONT.) * +//WHATNTFY ELSE +//* +//CONFGT00 EXEC PGM=IEBGENER SHIP#FTP +//SYSUT1 DD DATA,DLM=$$ JOB SHIPPED BACK TO HOST +//&Jobname JOB (0000),'SHIP &Destination', +// MSGLEVEL=(1,1),CLASS=B,REGION=0M,MSGCLASS=A, +// NOTIFY=&SYSUID TYPRUN=HOLD +// JCLLIB ORDER=(YOURSITE.YOUR.NDVR.NODES1.ISPS, +// YOURSITE.NDVR.TEAM.JCL) +// EXPORT SYMLIST=(*) +// SET PACKAGE='&Package' +// SET LASTENVM='PRD' +// SET LASTSTGE='2' +// SET DSPREFIX='&Hostprefix.D&Date6.T&Time6' +//*--------------------------------------------------------SHIP#FTP +//* MY DESTNAME = &Destination +//* MY FROMNODE = &SENDNODE +//* MY PACKAGE = &Package +// SET PACKAGE='&Package' +//* MY VNBCPARM = C1BMX000,&Date8,&Time8 +//*--------------------------------------------------------SHIP#FTP +//CONFCOPY EXEC PGM=NDVRC1, SHIP#FTP +// PARM='C1BMX000,&Date8,&Time8,CONF,RCPY,EQ,0000,$DEST_ID' +//* ****************************************************************** +//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS +//* ****************************************************************** +// INCLUDE MEMBER=STEPLIB +//* +//********************************************************************* +//* ESI TRACE IN BATCH MODE * +//********************************************************************* +//*EN$TRESI DD SYSOUT=* +//*EN$TRALC DD SYSOUT=* +//* +//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* +//SYMDUMP DD DUMMY +//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* +//*--------------------------------------------------------SHIP#FTP +//NTFYTGGR EXEC PGM=IRXJCL, SHIP#FTP +// PARM='UPDTTGGR &Destination / &Package' +//STEPLIB DD DISP=SHR,DSN=&MyAUTULibrary +// DD DISP=SHR,DSN=&MyAUTHLibrary +//* DD DISP=SHR,DSN=&MyLOADLibrary +//CONLIB DD DISP=SHR,DSN=&MyLOADLibrary +//SYSEXEC DD DSN=&MyCLS0Library,DISP=SHR +// DD DSN=&MyCLS2Library,DISP=SHR +//SYSTSPRT DD SYSOUT=* +//*------------------------------------------------------- SHIP#FTP +//DELETES EXEC PGM=IDCAMS,COND=(4,LT) SHIP#FTP +//SYSPRINT DD SYSOUT=* +//AMSDUMP DD SYSOUT=* +//SYSIN DD * + DELETE 'PUBLIC.HOST.D&Date6.T&Time6.&Destination.*' NONVSAM +//*------------------------------------------------------- SHIP#FTP +// INCLUDE MEMBER=SHIPCAST <- Conditionally CAST (promotion pkg) +//*------------------------------------------------------- SHIP#FTP +$$ +//SYSUT2 DD DSN=&Rmteprefix.D&Date6.T&Time6.NOTIFY, +// DISP=(MOD,CATLG,KEEP),SPACE=(TRK,(1,0)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//SYSPRINT DD SYSOUT=* +//SYSIN DD DUMMY +//WHATNTFY ENDIF +//* *--------------------------------------------* SHIP#FTP (CONT.) * +//FTPSUBMT EXEC PGM=FTP,REGION=2048K,TIME=800 SHIP#FTP +//NETRC DD DISP=SHR,DSN=&SYSUID..ENDEVOR.NETRC(SHIPPING) +//SYSTSPRT DD SYSOUT=* +//SYSPRINT DD SYSOUT=* +//SYSUDUMP DD SYSOUT=Q +//OUTPUT DD SYSOUT=* SHIP#FTP +//SYSIN DD * + &MyHomeAddress +MODE B +EBCDIC +SITE FILETYPE=JES +PUT '&Rmteprefix.D&Date6.T&Time6.NOTIFY' +QUIT +//* *--------------------------------------------* C1BMXJOB (CONT.) * +//REMODELT EXEC PGM=IDCAMS,COND=(0,LE) <-Remote Delete SHIP#FTP +//SYSPRINT DD SYSOUT=* +//AMSDUMP DD SYSOUT=* +//DELETEME DD DSN=&Rmteprefix.D&Date6.T&Time6.NOTIFY, +// DISP=(SHR,DELETE) +//SYSIN DD * + DELETE 'PUBLIC.RMOT.D&Date6.T&Time6.&Destination.*' NONVSAM +## +//* +//* *--------------------------------------------* C1BMXJOB (CONT.) * +//* +//C1BMXLIB DD DATA,DLM=## +//* ****************************************************************** +//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS +//* ****************************************************************** +//STEPLIB DD DISP=SHR,DSN=&MyAUTULibrary +// DD DISP=SHR,DSN=&MyAUTHLibrary +//* DD DISP=SHR,DSN=&MyLOADLibrary +//CONLIB DD DISP=SHR,DSN=&MyLOADLibrary +//* +//********************************************************************* +//* ESI TRACE IN BATCH MODE * +//********************************************************************* +//*EN$TRESI DD SYSOUT=* +//*EN$TRALC DD SYSOUT=* +//* +//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* +//SYMDUMP DD DUMMY +//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* +## +//* +//* *--------------------------------------------* C1BMXJOB (CONT.) * +//* +//* ****************************************************************** +//* * SHIP PACKAGE PKG-ID TO DESTINATION DEST-ID ( OPTION BACKOUT ) . +//* ****************************************************************** +//* +//* THE FOLLOWING DD STATEMENT MUST BE THE *LAST* CARD IN THIS MEMBER. +//* ISPSLIB MEMBER C1BMXIN IS INCLUDED AFTER IT AS THE INSTREAM DATA. +//* +//C1BMXIN DD * *-------------------------------* ISPSLIB(SHIP#FTP) * +SHIP PAC '&Package' TO DEST &Destination OPT &ShipOutput . +//* *============================================* ISPSLIB(SHIP#FTP) * +//* *==============================================================* * +//* *==============================================================* * +//* *==============================================================* * +//* *==============================================================* * +//*------------------------------------------------------- SHIP#FTP +//* *==============================================================* * +//* *==============================================================* * +//* +//SUBMIT EXEC PGM=IEBGENER,COND=(12,LE,NDVRSHIP) SHIP#FTP +//SYSUT1 DD DSN=&&XFTC,DISP=(OLD,PASS) +//SYSUT2 DD SYSOUT=(A,INTRDR) +//SYSPRINT DD SYSOUT=* +//SYSIN DD DUMMY diff --git a/endevor/Field-Developed-Programs/Package-Automation/SHIPCAST.skl b/endevor/Field-Developed-Programs/Package-Automation/SHIPCAST.skl new file mode 100644 index 0000000..79f6fc1 --- /dev/null +++ b/endevor/Field-Developed-Programs/Package-Automation/SHIPCAST.skl @@ -0,0 +1,140 @@ +//*------------------------------------------------------------------- +//*- If shipping from middle sections of the life cycle with---------- +//*- promotion packages, then you may turn off the auto-CAST---------- +//*- feature, and include this member in your Notification ---------- +//*- jobs. Then, promotion packages will be automatically ---------- +//*- CAST after all the Shipments are done. ---------- +//*- ---------- +//*- The LASTENVM and LASTSTGE variables designate when ---------- +//*- to stop this kind of auto Casting. ---------- +//*- See the SHIP#FTP example shipment model. ---------- +//*------------------------------------------------------------------- +//* Expected JCL symbols include: +//* PACKAGE - the package name +//* LASTENVM - last Environ name in the map ex. PRD / PROD ..... +//* LASTSTGE - last stage name in the map ex. 2, P .... +//* DSPREFIX - prefix to use for a Shipment report +//*------------------------------------------------------------------- +//* Example SET statements for the JCL that includes this memeber: +//* +//* // SET PACKAGE='&Package' +//* // SET LASTENVM='PRD' +//* // SET LASTSTGE='2' +//* // SET DSPREFIX='&Hostprefix.D&Date6.T&Time6' +//* +//*------------------------------------------------------------------- +//* STEP 1 -- CSV UTILITY to collect Package information +//*------------------------------------------------------------------- +//RUNCSVS EXEC PGM=NDVRC1,REGION=4M, Use CSV for pkg SHIPCAST +// PARM='BC1PCSV0' +//*-- +// INCLUDE MEMBER=STEPLIB <- ENDEVOR Steplib and CONLIB +//*-- +//BSTIPT01 DD *,SYMBOLS=JCLONLY + LIST PACKAGE SHIP + TO FILE CSVPKGE1 + FROM PACKAGE '&PACKAGE' + OPTIONS . + LIST PACKAGE ID '&PACKAGE' + TO FILE CSVPKGE2 + OPTIONS NOCSV . +//CSVPKGE1 DD DSN=&&CSVFILE1, +// DCB=(RECFM=FB,LRECL=1800,BLKSIZE=9000,DSORG=PS), +// DISP=(NEW,PASS), +// SPACE=(TRK,(5,1),RLSE) +//CSVPKGE2 DD DSN=&&CSVFILE2, +// DCB=(RECFM=FB,LRECL=1800,BLKSIZE=9000,DSORG=PS), +// DISP=(NEW,PASS), +// SPACE=(TRK,(5,1),RLSE) +//C1MSGS1 DD SYSOUT=* +//BSTERR DD SYSOUT=* +//*------------------------------------------------------------------- +//* STEP 2 -- Show CSV output (you may elect to skip this step) +//*------------------------------------------------------------------- +//SHOWME EXEC PGM=IEBGENER,REGION=1024K Show CSV outputs SHIPCAST +//SYSPRINT DD SYSOUT=* MESSAGES +//SYSUT1 DD DSN=&&CSVFILE1,DISP=(OLD,PASS) +// DD DSN=&&CSVFILE2,DISP=(OLD,PASS) +//SYSUT2 DD SYSOUT=* OUTPUT FILE +//SYSIN DD DUMMY CONTROL STATEMENTS +//SYSUDUMP DD SYSOUT=* +//*-------------------------------------------------------------------- +//* STEP 3 -- Analyze CSV output to determine whether to CAST +//*-------------------------------------------------------------------- +//CASTQERY EXEC PGM=IRXJCL,COND=(4,LT), Analyze CSV data SHIPCAST +// PARM='ENBPIU00 PARMLIST' +//*-- +// INCLUDE MEMBER=CSIQCLS0 <- where is ENBPIU00 +//*-- +//TABLE DD DSN=&&CSVFILE1,DISP=(OLD,DELETE) +//PARMLIST DD * + NOTHING NOTHING PKGINFO 0 + MODEL RESULTS OPTIONS A + RESULTS REPORT NOTHING 1 +//CSVALPKG DD DSN=&&CSVFILE2,DISP=(OLD,DELETE) +//PKGINFO DD *,SYMBOLS=JCLONLY +* Examine the API output to find Promotion Target info + "EXECIO 1 DISKR CSVALPKG (Stem pkg. Finis" + PromotionEnv = Strip(Substr(pkg.1,857,8)) + PromotionStg = Strip(Substr(pkg.1,865,1)) + Say '@PKGINFO Promotion Target is' PromotionEnv PromotionStg + If PromotionEnv='&LASTENVM' & PromotionStg='&LASTSTGE' then Exit + If PromotionEnv = ' ' then Exit(0) + $my_rc = 1 +//MODEL DD * +PKG_ID &PKG_ID Shipped to &DEST_ID &SUBMIT_DATE &SUBMIT_TIME + Promotion Package Target = &PromotionEnv &PromotionStg + HOST/RMOT =&HOST_STG_RC &HOST_TRANS_RC / &RMT_JOB_NAME &RMT_MOVE_RC +//OPTIONS DD * + $Table_Type = "CSV" + DEST_ID = LEFT(DEST_ID,8) + If RMT_MOVE_RC = " " then $my_rc = 4 /* wait for shipments */ + If RMT_MOVE_RC = " " then RMT_MOVE_RC = '?????' +//*EPORT DD SYSOUT=* <- Show status of all package shipments +//RESULTS DD DSN=&&RESULTS, +// DCB=(RECFM=FB,LRECL=080,BLKSIZE=8000,DSORG=PS), +// DISP=(NEW,PASS), +// SPACE=(TRK,(1,1),RLSE) +//REPORT DD SYSOUT=* +//SYSTSPRT DD SYSOUT=* +//SYSPRINT DD SYSOUT=* +//DISPLAYS DD SYSOUT=* +//NOTHING DD DUMMY +//SYSTSIN DD DUMMY +//*-------------------------------------------------------------------- +//* STEP 4 -- Write report to shipping dataset +//*------------------------------------------------------------------- +//REPORT EXEC PGM=IEBGENER, Report Shippings SHIPCAST +// COND=(1,NE,CASTQERY) +//SYSPRINT DD SYSOUT=* MESSAGES +//SYSUT1 DD DSN=&&RESULTS,DISP=(OLD,DELETE) +//SYSUT2 DD DSN=&DSPREFIX..SHIPRPRT, +// DCB=(RECFM=FB,LRECL=080,BLKSIZE=8000,DSORG=PS), +// DISP=(NEW,CATLG,KEEP), +// SPACE=(TRK,(1,1),RLSE) +//SYSIN DD DUMMY CONTROL STATEMENTS +//SYSUDUMP DD SYSOUT=* +//*-------------------------------------------------------------------- +//* STEP 5 -- If promotion package, no errors, and not at the +//* -- end of the map, and all shipments are done, then +//* -- Reset and Cast the package . +//*-------------------------------------------------------------------- +//CASTPKGE EXEC PGM=NDVRC1, Maybe Cast SHIPCAST +// COND=(1,NE,CASTQERY), +// PARM=ENBP1000,DYNAMNBR=1500 +//EN$TRXIT DD DUMMY +//BSTERR DD SYSOUT=* +//EN$TROPT DD SYSOUT=* +//EN$TRESI DD SYSOUT=* +//EN$SMESI DD SYSOUT=* +//EN$SMRPT DD SYSOUT=* +//ENPSCLIN DD *,SYMBOLS=JCLONLY + RESET PACKAGE '&PACKAGE' . + CAST PACKAGE '&PACKAGE' . +//C1MSGS1 DD SYSOUT=* +//C1MSGS2 DD SYSOUT=* +//BSTERR DD SYSOUT=* +//SYSUDUMP DD SYSOUT=* +//SYMDUMP DD DUMMY +// INCLUDE MEMBER=STEPLIB <- ENDEVOR Steplib and CONLIB +//JCLOUT DD DUMMY diff --git a/endevor/Field-Developed-Programs/Package-Automation/SHIPLOCL.skl b/endevor/Field-Developed-Programs/Package-Automation/SHIPLOCL.skl index 67f8fce..5707f87 100644 --- a/endevor/Field-Developed-Programs/Package-Automation/SHIPLOCL.skl +++ b/endevor/Field-Developed-Programs/Package-Automation/SHIPLOCL.skl @@ -1,727 +1,727 @@ //&Jobname JOB (1),'ENDEVOR TEAM',REGION=0M, JOB06547 -// CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID&Typrun -//* -/*JOBPARM S=&SENDNODE -//***=====Local Package Shipment ==================================* * -// JCLLIB ORDER=(SYSMD32.NDVR.TEAM.JCL) -//* ISPSLIB(SHIPLOCL) -//*--------------------------------------------------------SHIPLOCL -//* MY DESTNAME = &Destination -//* MY FROMNODE = &SENDNODE -//* MY PACKAGE = &Package -//* MY VNBCPARM = C1BMX000,&Date8,&Time8 -//*--------------------------------------------------------SHIPLOCL -//*----------------------------------------------------- -//* *==============================================================* * -//NDVRSHIP EXEC PGM=NDVRC1,DYNAMNBR=1500,REGION=4096K, SHIPLOCL -// PARM='C1BMX000,&Date8,&Time8 SHIP N625723 ' -// INCLUDE MEMBER=STEPLIB -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* -//* *--------------------------------------------* C1BMXJOB (CONT.) * -//* -//C1BMXDET DD SYSOUT=* ** SHIPMENT DETAIL REPORT **************** -//C1BMXSUM DD SYSOUT=* ** SHIPMENT SUMMARY REPORT **************** -//C1BMXSYN DD SYSOUT=* ** INPUT LISTING AND SYNTAX ERROR REPORT ** -//* -//* ****************************************************************** -//* * LOCAL TRANSFER COPY/RUN COMMAND DATASETS -//* * LOCAL MODEL CONTROL CARD DATASET -//* ****************************************************************** -//* -//C1BMXLCC DD DSN=&&XLCC,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* -//C1BMXLCM DD DISP=SHR,DSN=&MyOPT2Library -// DD DISP=SHR,DSN=&MyOPTNLibrary -//* -//* ****************************************************************** -//* * NETVIEW FTP "ADD TO TRANSMISSION QUEUE" DATASET AND INTERNAL RDR -//* * NETVIEW FTP MODEL CONTROL CARD DATASET //* -****************************************************************** -//* -//C1BMXFTC DD DSN=&&XFTC,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//C1BMXFTM DD DISP=SHR,DSN=&MyOPT2Library -// DD DISP=SHR,DSN=&MyOPTNLibrary -//* * NETWORK DATA MOVER COPY/RUN COMMAND DATASETS -//* * NETWORK DATA MOVER MODEL CONTROL CARD DATASET -//* ****************************************************************** -//C1BMXNWM DD DISP=SHR,DSN=&MyOPT2Library -// DD DISP=SHR,DSN=&MyOPTNLibrary -//* -//C1BMXNWM DD DISP=SHR,DSN=&MyOPT2Library -// DD DISP=SHR,DSN=&MyOPTNLibrary -//C1BMXRJC DD DISP=SHR,DSN=&MySEN2Library -// DD DISP=SHR,DSN=&MySENULibrary -//* -//C1BMXNWC DD DSN=&&XNWC,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* -//* ****************************************************************** -//* * SHIPMENT DATE/TIME READ BY INLINE HOST CONFIRMATION STEP -//* ****************************************************************** -//* -//C1BMXDTM DD DSN=&&XDTM,DISP=(NEW,PASS),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* -//* ****************************************************************** -//* * HOST STAGING DATASET DELETION STATEMENTS (IDCAMS) -//* ****************************************************************** -//* -//C1BMXDEL DD DSN=&&HDEL,DISP=(NEW,PASS),SPACE=(TRK,(10,10)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* -//* ****************************************************************** -//* * REMOTE JCL MODEL MEMBERS -//* ****************************************************************** -//* -//C1BMXMDL DD DISP=SHR,DSN=&MyOPT2Library -// DD DISP=SHR,DSN=&MyOPTNLibrary -//* -//* ****************************************************************** -//* * JCL SEGMENTS TO CREATE GROUP SYMBOLICS FOR MODELLING -//* ****************************************************************** -//* -//C1BMXHJC DD DATA,DLM=## -//&Userid�9 JOB (2SH1SH20),MA1N.SB, -// MSGLEVEL=(1,1),MSGCLASS=H,CLASS=J, -// NOTIFY=&SYSUID TYPRUN=HOLD -/*XEQ GROUP1 -/*JOBPARM S=&SENDNODE -//*------------------------------------------------------ SHIPLOCL -//* MY DESTNAME = &Destination -//* MY FROMNODE = &SENDNODE -//* MY PACKAGE = &Package -//* MY VNBCPARM = C1BMX000,&Date8,&Time8 -//*------------------------------------------------------ SHIPLOCL -## -//* -//* *--------------------------------------------* C1BMXJOB (CONT.) * -//* -//C1BMXHCN DD DATA,DLM=## -//* *--------------------------------------------* ISPSLIB(SHIPLOCL) * -//* *--------------------------------------------------------------* * -//* *--------------------------------------------------------------* * -//* *--------------------------------------------------------------* * -//* *--------------------------------------------------------------* * -//* SHIPLOCL -//CONFGE12 EXEC PGM=NDVRC1,REGION=4096K,COND=(12,GT,$XM_STEP), -// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,GE,0012,$DEST_ID' -//* SHIPLOCL -//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* SHIPLOCL -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -//STEPLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTU -// DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTH -//* DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//CONLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* *--------------------------------------------* SHIPLOCLSHIPLOCL(CONT -//* *--------------------------------------------------------------* * -//* *--------------------------------------------------------------* * -//* *--------------------------------------------------------------* * -//* *--------------------------------------------------------------* * -//* SHIPLOCL -//* SHIPLOCL -//CONFGE08 EXEC PGM=NDVRC1,REGION=4096K,COND=(08,NE,$XM_STEP), -// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,GE,0008,$DEST_ID' -//* SHIPLOCL -//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* SHIPLOCL -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -//STEPLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTU -// DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTH -//* DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//CONLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* SHIPLOCL -//* SHIPLOCL -//CONFGE04 EXEC PGM=NDVRC1,REGION=4096K,COND=(04,NE,$XM_STEP), -// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,GE,0004,$DEST_ID' -//* SHIPLOCL -//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* SHIPLOCL -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -//STEPLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTU -// DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTH -//* DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//CONLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* SHIPLOCL -//* SHIPLOCL -//CONFGE00 EXEC PGM=NDVRC1,REGION=4096K,COND=(00,NE,$XM_STEP), -// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,GE,0000,$DEST_ID' -//* SHIPLOCL -//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* SHIPLOCL -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -//STEPLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTU -// DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTH -//* DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//CONLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* SHIPLOCL -//* SHIPLOCL -//CONFABND EXEC PGM=NDVRC1,REGION=4096K,COND=ONLY, SHIPLOCL -// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,AB,****,********' -//* SHIPLOCL -//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* SHIPLOCL -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -//STEPLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTU -// DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTH -//* DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//CONLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* SHIPLOCL -//* *--------------------------------------------* ISPSLIB(SHIPLOCL) * -## -//* -//* *--------------------------------------------* C1BMXJOB (CONT.) * -//* -//C1BMXRCN DD DATA,DLM=## -//*----PACKAGE SHIPMENT JOB #4 -------------------------- SHIPLOCL -//* *--Package Shipment Confirmation/Notification* ISPSLIB(SHIPLOCL) * -//* -//* *================================================================* -//* * INSTREAM DATASET CONTAINING REMOTE CONFIRMATION JCL -//* *================================================================* -//* -//CONFGT12 EXEC PGM=IEBGENER,COND=(12,GE) SHIPLOCL -//SYSUT1 DD DATA,DLM=$$ JOB SHIPPED BACK TO HOST -//&Userid�9 JOB (2SH1SH20),MA1N.SB, -// MSGLEVEL=(1,1),MSGCLASS=H,CLASS=J, -// NOTIFY=&SYSUID TYPRUN=HOLD -/*XEQ GROUP1 -/*JOBPARM S=&SENDNODE -//*------------------------------------------------------ SHIPLOCL -//* MY DESTNAME = &Destination -//* MY FROMNODE = &SENDNODE -//* MY PACKAGE = &Package -//* MY VNBCPARM = C1BMX000,&Date8,&Time8 -//*------------------------------------------------------ SHIPLOCL -//*--- Confirmation/Notification job -----RC=12------------SHIPLOCL -//CONFCOPY EXEC PGM=NDVRC1, SHIPLOCL -// PARM='C1BMX000,&Date8,&Time8,CONF,RCPY,GE,0012,$DEST_ID' -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -//STEPLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTU -// DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTH -//* DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//CONLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* *--------------------------------------------* SHIPLOCL (CONT.) * -//*--------------------------------------------------------SHIPLOCL -//SHIPLOCL EXEC PGM=IRXJCL,COND=(8,LE), SHIPLOCL -// PARM='UPDTTGGR &Destination / &Package' -//STEPLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTU -// DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTH -//* DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//CONLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//SYSEXEC DD DSN=SYSMD32.NDVR.TEAM.REXX,DISP=SHR -//SYSTSPRT DD SYSOUT=* -//*------------------------------------------------------- SHIPLOCL -$$ -//SYSUT2 DD DSN=PUBLIC.LOCAL.D&Date6.T&Time6.NOTIFY, -// DISP=(,CATLG),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//SYSPRINT DD SYSOUT=* -//SYSIN DD DUMMY -//* *--------------------------------------------* SHIPLOCL (CONT.) * -//* -//CONFGT08 EXEC PGM=IEBGENER,COND=(08,NE,FASTCOPY) SHIPLOCL -//SYSUT1 DD DATA,DLM=$$ JOB SHIPPED BACK TO HOST -//&Userid�9 JOB (2SH1SH20),MA1N.SB, -// MSGLEVEL=(1,1),MSGCLASS=H,CLASS=J, -// NOTIFY=&SYSUID TYPRUN=HOLD -/*XEQ GROUP1 -/*JOBPARM S=&SENDNODE -//*------------------------------------------------------ SHIPLOCL -//* MY DESTNAME = &Destination -//* MY FROMNODE = &SENDNODE -//* MY PACKAGE = &Package -//* MY VNBCPARM = C1BMX000,&Date8,&Time8 -//*------------------------------------------------------ SHIPLOCL -//*--- Confirmation/Notification job ------RC=08-----------SHIPLOCL -//CONFCOPY EXEC PGM=NDVRC1, SHIPLOCL -// PARM='C1BMX000,&Date8,&Time8,CONF,RCPY,EQ,0008,$DEST_ID' -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -//STEPLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTU -// DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTH -//* DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//CONLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//*--------------------------------------------------------SHIPLOCL -//SHIPLOCL EXEC PGM=IRXJCL,COND=(8,LE), SHIPLOCL -// PARM='UPDTTGGR &Destination / &Package' -//STEPLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTU -// DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTH -//* DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//CONLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//SYSEXEC DD DSN=SYSMD32.NDVR.TEAM.REXX,DISP=SHR -//SYSTSPRT DD SYSOUT=* -//*------------------------------------------------------- SHIPLOCL -$$ -//SYSUT2 DD DSN=PUBLIC.LOCAL.D&Date6.T&Time6.NOTIFY, -// DISP=(,CATLG),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//SYSPRINT DD SYSOUT=* -//SYSIN DD DUMMY -//* -//* *----------------------------------------------------------------* -//* -//CONFGT04 EXEC PGM=IEBGENER,COND=(04,NE,FASTCOPY) SHIPLOCL -//SYSUT1 DD DATA,DLM=$$ JOB SHIPPED BACK TO HOST -//&Userid�9 JOB (2SH1SH20),MA1N.SB, -// MSGLEVEL=(1,1),MSGCLASS=H,CLASS=J, -// NOTIFY=&SYSUID TYPRUN=HOLD -/*XEQ GROUP1 -/*JOBPARM S=&SENDNODE -//*------------------------------------------------------ SHIPLOCL -//* MY DESTNAME = &Destination -//* MY FROMNODE = &SENDNODE -//* MY PACKAGE = &Package -//* MY VNBCPARM = C1BMX000,&Date8,&Time8 -//*------------------------------------------------------ SHIPLOCL -//*--- Confirmation/Notification job ------RC=04-----------SHIPLOCL -//CONFCOPY EXEC PGM=NDVRC1, SHIPLOCL -// PARM='C1BMX000,&Date8,&Time8,CONF,RCPY,EQ,0004,$DEST_ID' -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -//STEPLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTU -// DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTH -//* DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//CONLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//*--------------------------------------------------------SHIPLOCL -//SHIPLOCL EXEC PGM=IRXJCL,COND=(8,LE), SHIPLOCL -// PARM='UPDTTGGR &Destination / &Package' -//STEPLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTU -// DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTH -//* DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//CONLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//SYSEXEC DD DSN=SYSMD32.NDVR.TEAM.REXX,DISP=SHR -//SYSTSPRT DD SYSOUT=* -//*------------------------------------------------------- SHIPLOCL -$$ -//SYSUT2 DD DSN=PUBLIC.LOCAL.D&Date6.T&Time6.NOTIFY, -// DISP=(,CATLG),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//SYSPRINT DD SYSOUT=* -//SYSIN DD DUMMY -//* -//* *----------------------------------------------------------------* -//* -//CONFGT00 EXEC PGM=IEBGENER,COND=(00,NE,FASTCOPY) SHIPLOCL -//SYSUT1 DD DATA,DLM=$$ JOB SHIPPED BACK TO HOST -//&Userid�9 JOB (2SH1SH20),MA1N.SB, -// MSGLEVEL=(1,1),MSGCLASS=H,CLASS=J, -// NOTIFY=&SYSUID TYPRUN=HOLD -/*XEQ GROUP1 -/*JOBPARM S=&SENDNODE -//*------------------------------------------------------ SHIPLOCL -//*------------------------------------------------------ SHIPLOCL -//* MY DESTNAME = &Destination -//* MY FROMNODE = &SENDNODE -//* MY PACKAGE = &Package -//* MY VNBCPARM = C1BMX000,&Date8,&Time8 -//*------------------------------------------------------ SHIPLOCL -//*--- Confirmation/Notification job ------RC=00-----------SHIPLOCL -//CONFCOPY EXEC PGM=NDVRC1, SHIPLOCL -// PARM='C1BMX000,&Date8,&Time8,CONF,RCPY,EQ,0000,$DEST_ID' -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -//STEPLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTU -// DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTH -//* DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//CONLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//*--------------------------------------------------------SHIPLOCL -//SHIPLOCL EXEC PGM=IRXJCL,COND=(8,LE), SHIPLOCL -// PARM='UPDTTGGR &Destination / &Package' -//STEPLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTU -// DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTH -//* DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//CONLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//SYSEXEC DD DSN=SYSMD32.NDVR.TEAM.REXX,DISP=SHR -//SYSTSPRT DD SYSOUT=* -//*------------------------------------------------------- SHIPLOCL -$$ -//SYSUT2 DD DSN=PUBLIC.LOCAL.D&Date6.T&Time6.NOTIFY, -// DISP=(,CATLG),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//SYSPRINT DD SYSOUT=* -//SYSIN DD DUMMY -//* -//* *----------------------------------------------------------------* -//* -//CONFABND EXEC PGM=IEBGENER,COND=ONLY EXECUTED AT THE REMOTE SITE -//SYSUT1 DD DATA,DLM=$$ JOB SHIPPED BACK TO HOST -//&Userid�9 JOB (2SH1SH20),MA1N.SB, -// MSGLEVEL=(1,1),MSGCLASS=H,CLASS=J, -// NOTIFY=&SYSUID TYPRUN=HOLD -/*XEQ GROUP1 -/*JOBPARM S=&SENDNODE -//*------------------------------------------------------ SHIPLOCL -//*------------------------------------------------------ SHIPLOCL -//* MY DESTNAME = &Destination -//* MY FROMNODE = &SENDNODE -//* MY PACKAGE = &Package -//* MY VNBCPARM = C1BMX000,&Date8,&Time8 -//*------------------------------------------------------ SHIPLOCL -//*--- Confirmation/Notification job ------Abend-----------SHIPLOCL -//CONFCOPY EXEC PGM=NDVRC1, SHIPLOCL -// PARM='C1BMX000,&Date8,&Time8,CONF,RCPY,AB,****,$DEST_ID' -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -//STEPLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTU -// DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTH -//* DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//CONLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//*--------------------------------------------------------SHIPLOCL -//SHIPLOCL EXEC PGM=IRXJCL,COND=(8,LE), SHIPLOCL -// PARM='UPDTTGGR &Destination / &Package' -//STEPLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTU -// DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTH -//* DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//CONLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//SYSEXEC DD DSN=SYSMD32.NDVR.TEAM.REXX,DISP=SHR -//SYSTSPRT DD SYSOUT=* -//*------------------------------------------------------- SHIPLOCL -//* *--------------------------------------------* SHIPLOCL (CONT.) * -$$ -//SYSUT2 DD DSN=PUBLIC.LOCAL.D&Date6.T&Time6.NOTIFY, -// DISP=(,CATLG),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//SYSPRINT DD SYSOUT=* -//SYSIN DD DUMMY -//* *--------------------------------------------* SHIPLOCL (CONT.) * -//SUBMIT EXEC PGM=IKJEFT01 -//SYSOUT DD SYSOUT=* -//SYSTSPRT DD SYSOUT=* -//SYSTSIN DD * - SUBMIT 'PUBLIC.LOCAL.D&Date6.T&Time6.NOTIFY' -//* SHIPLOCL -## -//* -//* *--------------------------------------------* C1BMXJOB (CONT.) * -//* -//C1BMXLIB DD DATA,DLM=## -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -//STEPLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTU -// DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTH -//* DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//CONLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -## -//* -//* *--------------------------------------------* C1BMXJOB (CONT.) * -//* -//* ****************************************************************** -//* * SHIP PACKAGE PKG-ID TO DESTINATION DEST-ID ( OPTION BACKOUT ) . -//* ****************************************************************** -//* -//* THE FOLLOWING DD STATEMENT MUST BE THE *LAST* CARD IN THIS MEMBER. -//* ISPSLIB MEMBER C1BMXIN IS INCLUDED AFTER IT AS THE INSTREAM DATA. -//* -//C1BMXIN DD * *-------------------------------* ISPSLIB(C1BMXIN) * -SHIP PAC '&Package' TO DEST &Destination OPT &ShipOutput . -//* *============================================* ISPSLIB(C1BMXLOC) * -//* *==============================================================* * -//* *==============================================================* * -//* *==============================================================* * -//* *==============================================================* * -//* -//C1BMXLOC EXEC PGM=IKJEFT01,COND=(12,LE,NDVRSHIP) SHIPLOCL -//SYSTSIN DD DSN=&&XLCC,DISP=(OLD,PASS) -//SYSTSPRT DD SYSOUT=* -//SYSOUT DD SYSOUT=* -//* *--------------------------------------------* ISPSLIB(SHIPLOCL) * -//* *--------------------------------------------------------------* * -//* *--------------------------------------------------------------* * -//* *--------------------------------------------------------------* * -//* *--------------------------------------------------------------* * -//* SHIPLOCL -//CONFGE12 EXEC PGM=NDVRC1,REGION=4096K,COND=(12,GT), -// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,GE,0012,***L****' -//* SHIPLOCL -//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* SHIPLOCL -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -//STEPLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTU -// DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTH -//* DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//CONLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* *--------------------------------------------* SHIPLOCLSHIPLOCL(CONT -//* *--------------------------------------------------------------* * -//* *--------------------------------------------------------------* * -//* *--------------------------------------------------------------* * -//* *--------------------------------------------------------------* * -//* SHIPLOCL -//* SHIPLOCL -//CONFGE08 EXEC PGM=NDVRC1,REGION=4096K,COND=(08,NE), -// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,GE,0008,***L****' -//* SHIPLOCL -//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* SHIPLOCL -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -//STEPLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTU -// DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTH -//* DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//CONLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* SHIPLOCL -//* SHIPLOCL -//CONFGE04 EXEC PGM=NDVRC1,REGION=4096K,COND=(04,NE), -// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,GE,0004,***L****' -//* SHIPLOCL -//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* SHIPLOCL -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -//STEPLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTU -// DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTH -//* DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//CONLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* SHIPLOCL -//* SHIPLOCL -//CONFGE00 EXEC PGM=NDVRC1,REGION=4096K,COND=(00,NE), -// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,GE,0000,***L****' -//* SHIPLOCL -//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* SHIPLOCL -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -//STEPLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTU -// DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTH -//* DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//CONLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* SHIPLOCL -//* SHIPLOCL -//CONFABND EXEC PGM=NDVRC1,REGION=4096K,COND=ONLY, SHIPLOCL -// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,AB,****,********' -//* SHIPLOCL -//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* SHIPLOCL -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -//STEPLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTU -// DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQAUTH -//* DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//CONLIB DD DISP=SHR,DSN=CAPRD.NDVR.V180CA06.CSIQLOAD -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* SHIPLOCL -//* *--------------------------------------------* ISPSLIB(SHIPLOCL) * -//* ISPSLIB(C1BMXEOJ) - END OF JOB +// CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID&Typrun +//* +/*JOBPARM S=&SENDNODE +//***=====Local Package Shipment ==================================* * +// JCLLIB ORDER=(YOURSITE.NDVR.TEAM.JCL) +//* ISPSLIB(SHIPLOCL) +//*--------------------------------------------------------SHIPLOCL +//* MY DESTNAME = &Destination +//* MY FROMNODE = &SENDNODE +//* MY PACKAGE = &Package +//* MY VNBCPARM = C1BMX000,&Date8,&Time8 +//*--------------------------------------------------------SHIPLOCL +//*----------------------------------------------------- +//* *==============================================================* * +//NDVRSHIP EXEC PGM=NDVRC1,DYNAMNBR=1500,REGION=4096K, SHIPLOCL +// PARM='C1BMX000,&Date8,&Time8 SHIP N625723 ' +// INCLUDE MEMBER=STEPLIB +//********************************************************************* +//* ESI TRACE IN BATCH MODE * +//********************************************************************* +//*EN$TRESI DD SYSOUT=* +//*EN$TRALC DD SYSOUT=* +//* +//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* +//SYMDUMP DD DUMMY +//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* +//* +//* *--------------------------------------------* C1BMXJOB (CONT.) * +//* +//C1BMXDET DD SYSOUT=* ** SHIPMENT DETAIL REPORT **************** +//C1BMXSUM DD SYSOUT=* ** SHIPMENT SUMMARY REPORT **************** +//C1BMXSYN DD SYSOUT=* ** INPUT LISTING AND SYNTAX ERROR REPORT ** +//* +//* ****************************************************************** +//* * LOCAL TRANSFER COPY/RUN COMMAND DATASETS +//* * LOCAL MODEL CONTROL CARD DATASET +//* ****************************************************************** +//* +//C1BMXLCC DD DSN=&&XLCC,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//* +//C1BMXLCM DD DISP=SHR,DSN=&MyOPT2Library +// DD DISP=SHR,DSN=&MyOPTNLibrary +//* +//* ****************************************************************** +//* * NETVIEW FTP "ADD TO TRANSMISSION QUEUE" DATASET AND INTERNAL RDR +//* * NETVIEW FTP MODEL CONTROL CARD DATASET //* +****************************************************************** +//* +//C1BMXFTC DD DSN=&&XFTC,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//C1BMXFTM DD DISP=SHR,DSN=&MyOPT2Library +// DD DISP=SHR,DSN=&MyOPTNLibrary +//* * NETWORK DATA MOVER COPY/RUN COMMAND DATASETS +//* * NETWORK DATA MOVER MODEL CONTROL CARD DATASET +//* ****************************************************************** +//C1BMXNWM DD DISP=SHR,DSN=&MyOPT2Library +// DD DISP=SHR,DSN=&MyOPTNLibrary +//* +//C1BMXNWM DD DISP=SHR,DSN=&MyOPT2Library +// DD DISP=SHR,DSN=&MyOPTNLibrary +//C1BMXRJC DD DISP=SHR,DSN=&MySEN2Library +// DD DISP=SHR,DSN=&MySENULibrary +//* +//C1BMXNWC DD DSN=&&XNWC,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//* +//* ****************************************************************** +//* * SHIPMENT DATE/TIME READ BY INLINE HOST CONFIRMATION STEP +//* ****************************************************************** +//* +//C1BMXDTM DD DSN=&&XDTM,DISP=(NEW,PASS),SPACE=(TRK,(1,0)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//* +//* ****************************************************************** +//* * HOST STAGING DATASET DELETION STATEMENTS (IDCAMS) +//* ****************************************************************** +//* +//C1BMXDEL DD DSN=&&HDEL,DISP=(NEW,PASS),SPACE=(TRK,(10,10)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//* +//* ****************************************************************** +//* * REMOTE JCL MODEL MEMBERS +//* ****************************************************************** +//* +//C1BMXMDL DD DISP=SHR,DSN=&MyOPT2Library +// DD DISP=SHR,DSN=&MyOPTNLibrary +//* +//* ****************************************************************** +//* * JCL SEGMENTS TO CREATE GROUP SYMBOLICS FOR MODELLING +//* ****************************************************************** +//* +//C1BMXHJC DD DATA,DLM=## +//&Userid^9 JOB (2SH1SH20),MA1N.SB, +// MSGLEVEL=(1,1),MSGCLASS=H,CLASS=J, +// NOTIFY=&SYSUID TYPRUN=HOLD +/*XEQ GROUP1 +/*JOBPARM S=&SENDNODE +//*------------------------------------------------------ SHIPLOCL +//* MY DESTNAME = &Destination +//* MY FROMNODE = &SENDNODE +//* MY PACKAGE = &Package +//* MY VNBCPARM = C1BMX000,&Date8,&Time8 +//*------------------------------------------------------ SHIPLOCL +## +//* +//* *--------------------------------------------* C1BMXJOB (CONT.) * +//* +//C1BMXHCN DD DATA,DLM=## +//* *--------------------------------------------* ISPSLIB(SHIPLOCL) * +//* *--------------------------------------------------------------* * +//* *--------------------------------------------------------------* * +//* *--------------------------------------------------------------* * +//* *--------------------------------------------------------------* * +//* SHIPLOCL +//CONFGE12 EXEC PGM=NDVRC1,REGION=4096K,COND=(12,GT,$XM_STEP), +// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,GE,0012,$DEST_ID' +//* SHIPLOCL +//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//* SHIPLOCL +//* ****************************************************************** +//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS +//* ****************************************************************** +//STEPLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTU +// DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTH +//* DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//CONLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//* +//********************************************************************* +//* ESI TRACE IN BATCH MODE * +//********************************************************************* +//*EN$TRESI DD SYSOUT=* +//*EN$TRALC DD SYSOUT=* +//* +//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* +//SYMDUMP DD DUMMY +//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* +//* *--------------------------------------------* SHIPLOCLSHIPLOCL(CONT +//* *--------------------------------------------------------------* * +//* *--------------------------------------------------------------* * +//* *--------------------------------------------------------------* * +//* *--------------------------------------------------------------* * +//* SHIPLOCL +//* SHIPLOCL +//CONFGE08 EXEC PGM=NDVRC1,REGION=4096K,COND=(08,NE,$XM_STEP), +// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,GE,0008,$DEST_ID' +//* SHIPLOCL +//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//* SHIPLOCL +//* ****************************************************************** +//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS +//* ****************************************************************** +//STEPLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTU +// DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTH +//* DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//CONLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//* +//********************************************************************* +//* ESI TRACE IN BATCH MODE * +//********************************************************************* +//*EN$TRESI DD SYSOUT=* +//*EN$TRALC DD SYSOUT=* +//* +//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* +//SYMDUMP DD DUMMY +//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* +//* SHIPLOCL +//* SHIPLOCL +//CONFGE04 EXEC PGM=NDVRC1,REGION=4096K,COND=(04,NE,$XM_STEP), +// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,GE,0004,$DEST_ID' +//* SHIPLOCL +//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//* SHIPLOCL +//* ****************************************************************** +//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS +//* ****************************************************************** +//STEPLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTU +// DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTH +//* DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//CONLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//* +//********************************************************************* +//* ESI TRACE IN BATCH MODE * +//********************************************************************* +//*EN$TRESI DD SYSOUT=* +//*EN$TRALC DD SYSOUT=* +//* +//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* +//SYMDUMP DD DUMMY +//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* +//* SHIPLOCL +//* SHIPLOCL +//CONFGE00 EXEC PGM=NDVRC1,REGION=4096K,COND=(00,NE,$XM_STEP), +// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,GE,0000,$DEST_ID' +//* SHIPLOCL +//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//* SHIPLOCL +//* ****************************************************************** +//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS +//* ****************************************************************** +//STEPLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTU +// DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTH +//* DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//CONLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//* +//********************************************************************* +//* ESI TRACE IN BATCH MODE * +//********************************************************************* +//*EN$TRESI DD SYSOUT=* +//*EN$TRALC DD SYSOUT=* +//* +//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* +//SYMDUMP DD DUMMY +//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* +//* SHIPLOCL +//* SHIPLOCL +//CONFABND EXEC PGM=NDVRC1,REGION=4096K,COND=ONLY, SHIPLOCL +// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,AB,****,********' +//* SHIPLOCL +//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//* SHIPLOCL +//* ****************************************************************** +//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS +//* ****************************************************************** +//STEPLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTU +// DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTH +//* DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//CONLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//* +//********************************************************************* +//* ESI TRACE IN BATCH MODE * +//********************************************************************* +//*EN$TRESI DD SYSOUT=* +//*EN$TRALC DD SYSOUT=* +//* +//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* +//SYMDUMP DD DUMMY +//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* +//* SHIPLOCL +//* *--------------------------------------------* ISPSLIB(SHIPLOCL) * +## +//* +//* *--------------------------------------------* C1BMXJOB (CONT.) * +//* +//C1BMXRCN DD DATA,DLM=## +//*----PACKAGE SHIPMENT JOB #4 -------------------------- SHIPLOCL +//* *--Package Shipment Confirmation/Notification* ISPSLIB(SHIPLOCL) * +//* +//* *================================================================* +//* * INSTREAM DATASET CONTAINING REMOTE CONFIRMATION JCL +//* *================================================================* +//* +//CONFGT12 EXEC PGM=IEBGENER,COND=(12,GE) SHIPLOCL +//SYSUT1 DD DATA,DLM=$$ JOB SHIPPED BACK TO HOST +//&Userid^9 JOB (2SH1SH20),MA1N.SB, +// MSGLEVEL=(1,1),MSGCLASS=H,CLASS=J, +// NOTIFY=&SYSUID TYPRUN=HOLD +/*XEQ GROUP1 +/*JOBPARM S=&SENDNODE +//*------------------------------------------------------ SHIPLOCL +//* MY DESTNAME = &Destination +//* MY FROMNODE = &SENDNODE +//* MY PACKAGE = &Package +//* MY VNBCPARM = C1BMX000,&Date8,&Time8 +//*------------------------------------------------------ SHIPLOCL +//*--- Confirmation/Notification job -----RC=12------------SHIPLOCL +//CONFCOPY EXEC PGM=NDVRC1, SHIPLOCL +// PARM='C1BMX000,&Date8,&Time8,CONF,RCPY,GE,0012,$DEST_ID' +//* ****************************************************************** +//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS +//* ****************************************************************** +//STEPLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTU +// DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTH +//* DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//CONLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//* +//********************************************************************* +//* ESI TRACE IN BATCH MODE * +//********************************************************************* +//*EN$TRESI DD SYSOUT=* +//*EN$TRALC DD SYSOUT=* +//* +//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* +//SYMDUMP DD DUMMY +//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* +//* *--------------------------------------------* SHIPLOCL (CONT.) * +//*--------------------------------------------------------SHIPLOCL +//SHIPLOCL EXEC PGM=IRXJCL,COND=(8,LE), SHIPLOCL +// PARM='UPDTTGGR &Destination / &Package' +//STEPLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTU +// DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTH +//* DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//CONLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//SYSEXEC DD DSN=YOURSITE.NDVR.TEAM.REXX,DISP=SHR +//SYSTSPRT DD SYSOUT=* +//*------------------------------------------------------- SHIPLOCL +$$ +//SYSUT2 DD DSN=PUBLIC.LOCAL.D&Date6.T&Time6.NOTIFY, +// DISP=(,CATLG),SPACE=(TRK,(1,0)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//SYSPRINT DD SYSOUT=* +//SYSIN DD DUMMY +//* *--------------------------------------------* SHIPLOCL (CONT.) * +//* +//CONFGT08 EXEC PGM=IEBGENER,COND=(08,NE,FASTCOPY) SHIPLOCL +//SYSUT1 DD DATA,DLM=$$ JOB SHIPPED BACK TO HOST +//&Userid^9 JOB (2SH1SH20),MA1N.SB, +// MSGLEVEL=(1,1),MSGCLASS=H,CLASS=J, +// NOTIFY=&SYSUID TYPRUN=HOLD +/*XEQ GROUP1 +/*JOBPARM S=&SENDNODE +//*------------------------------------------------------ SHIPLOCL +//* MY DESTNAME = &Destination +//* MY FROMNODE = &SENDNODE +//* MY PACKAGE = &Package +//* MY VNBCPARM = C1BMX000,&Date8,&Time8 +//*------------------------------------------------------ SHIPLOCL +//*--- Confirmation/Notification job ------RC=08-----------SHIPLOCL +//CONFCOPY EXEC PGM=NDVRC1, SHIPLOCL +// PARM='C1BMX000,&Date8,&Time8,CONF,RCPY,EQ,0008,$DEST_ID' +//* ****************************************************************** +//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS +//* ****************************************************************** +//STEPLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTU +// DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTH +//* DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//CONLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//* +//********************************************************************* +//* ESI TRACE IN BATCH MODE * +//********************************************************************* +//*EN$TRESI DD SYSOUT=* +//*EN$TRALC DD SYSOUT=* +//* +//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* +//SYMDUMP DD DUMMY +//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* +//*--------------------------------------------------------SHIPLOCL +//SHIPLOCL EXEC PGM=IRXJCL,COND=(8,LE), SHIPLOCL +// PARM='UPDTTGGR &Destination / &Package' +//STEPLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTU +// DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTH +//* DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//CONLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//SYSEXEC DD DSN=YOURSITE.NDVR.TEAM.REXX,DISP=SHR +//SYSTSPRT DD SYSOUT=* +//*------------------------------------------------------- SHIPLOCL +$$ +//SYSUT2 DD DSN=PUBLIC.LOCAL.D&Date6.T&Time6.NOTIFY, +// DISP=(,CATLG),SPACE=(TRK,(1,0)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//SYSPRINT DD SYSOUT=* +//SYSIN DD DUMMY +//* +//* *----------------------------------------------------------------* +//* +//CONFGT04 EXEC PGM=IEBGENER,COND=(04,NE,FASTCOPY) SHIPLOCL +//SYSUT1 DD DATA,DLM=$$ JOB SHIPPED BACK TO HOST +//&Userid^9 JOB (2SH1SH20),MA1N.SB, +// MSGLEVEL=(1,1),MSGCLASS=H,CLASS=J, +// NOTIFY=&SYSUID TYPRUN=HOLD +/*XEQ GROUP1 +/*JOBPARM S=&SENDNODE +//*------------------------------------------------------ SHIPLOCL +//* MY DESTNAME = &Destination +//* MY FROMNODE = &SENDNODE +//* MY PACKAGE = &Package +//* MY VNBCPARM = C1BMX000,&Date8,&Time8 +//*------------------------------------------------------ SHIPLOCL +//*--- Confirmation/Notification job ------RC=04-----------SHIPLOCL +//CONFCOPY EXEC PGM=NDVRC1, SHIPLOCL +// PARM='C1BMX000,&Date8,&Time8,CONF,RCPY,EQ,0004,$DEST_ID' +//* ****************************************************************** +//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS +//* ****************************************************************** +//STEPLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTU +// DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTH +//* DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//CONLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//* +//********************************************************************* +//* ESI TRACE IN BATCH MODE * +//********************************************************************* +//*EN$TRESI DD SYSOUT=* +//*EN$TRALC DD SYSOUT=* +//* +//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* +//SYMDUMP DD DUMMY +//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* +//*--------------------------------------------------------SHIPLOCL +//SHIPLOCL EXEC PGM=IRXJCL,COND=(8,LE), SHIPLOCL +// PARM='UPDTTGGR &Destination / &Package' +//STEPLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTU +// DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTH +//* DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//CONLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//SYSEXEC DD DSN=YOURSITE.NDVR.TEAM.REXX,DISP=SHR +//SYSTSPRT DD SYSOUT=* +//*------------------------------------------------------- SHIPLOCL +$$ +//SYSUT2 DD DSN=PUBLIC.LOCAL.D&Date6.T&Time6.NOTIFY, +// DISP=(,CATLG),SPACE=(TRK,(1,0)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//SYSPRINT DD SYSOUT=* +//SYSIN DD DUMMY +//* +//* *----------------------------------------------------------------* +//* +//CONFGT00 EXEC PGM=IEBGENER,COND=(00,NE,FASTCOPY) SHIPLOCL +//SYSUT1 DD DATA,DLM=$$ JOB SHIPPED BACK TO HOST +//&Userid^9 JOB (2SH1SH20),MA1N.SB, +// MSGLEVEL=(1,1),MSGCLASS=H,CLASS=J, +// NOTIFY=&SYSUID TYPRUN=HOLD +/*XEQ GROUP1 +/*JOBPARM S=&SENDNODE +//*------------------------------------------------------ SHIPLOCL +//*------------------------------------------------------ SHIPLOCL +//* MY DESTNAME = &Destination +//* MY FROMNODE = &SENDNODE +//* MY PACKAGE = &Package +//* MY VNBCPARM = C1BMX000,&Date8,&Time8 +//*------------------------------------------------------ SHIPLOCL +//*--- Confirmation/Notification job ------RC=00-----------SHIPLOCL +//CONFCOPY EXEC PGM=NDVRC1, SHIPLOCL +// PARM='C1BMX000,&Date8,&Time8,CONF,RCPY,EQ,0000,$DEST_ID' +//* ****************************************************************** +//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS +//* ****************************************************************** +//STEPLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTU +// DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTH +//* DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//CONLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//* +//********************************************************************* +//* ESI TRACE IN BATCH MODE * +//********************************************************************* +//*EN$TRESI DD SYSOUT=* +//*EN$TRALC DD SYSOUT=* +//* +//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* +//SYMDUMP DD DUMMY +//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* +//*--------------------------------------------------------SHIPLOCL +//SHIPLOCL EXEC PGM=IRXJCL,COND=(8,LE), SHIPLOCL +// PARM='UPDTTGGR &Destination / &Package' +//STEPLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTU +// DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTH +//* DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//CONLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//SYSEXEC DD DSN=YOURSITE.NDVR.TEAM.REXX,DISP=SHR +//SYSTSPRT DD SYSOUT=* +//*------------------------------------------------------- SHIPLOCL +$$ +//SYSUT2 DD DSN=PUBLIC.LOCAL.D&Date6.T&Time6.NOTIFY, +// DISP=(,CATLG),SPACE=(TRK,(1,0)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//SYSPRINT DD SYSOUT=* +//SYSIN DD DUMMY +//* +//* *----------------------------------------------------------------* +//* +//CONFABND EXEC PGM=IEBGENER,COND=ONLY EXECUTED AT THE REMOTE SITE +//SYSUT1 DD DATA,DLM=$$ JOB SHIPPED BACK TO HOST +//&Userid^9 JOB (2SH1SH20),MA1N.SB, +// MSGLEVEL=(1,1),MSGCLASS=H,CLASS=J, +// NOTIFY=&SYSUID TYPRUN=HOLD +/*XEQ GROUP1 +/*JOBPARM S=&SENDNODE +//*------------------------------------------------------ SHIPLOCL +//*------------------------------------------------------ SHIPLOCL +//* MY DESTNAME = &Destination +//* MY FROMNODE = &SENDNODE +//* MY PACKAGE = &Package +//* MY VNBCPARM = C1BMX000,&Date8,&Time8 +//*------------------------------------------------------ SHIPLOCL +//*--- Confirmation/Notification job ------Abend-----------SHIPLOCL +//CONFCOPY EXEC PGM=NDVRC1, SHIPLOCL +// PARM='C1BMX000,&Date8,&Time8,CONF,RCPY,AB,****,$DEST_ID' +//* ****************************************************************** +//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS +//* ****************************************************************** +//STEPLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTU +// DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTH +//* DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//CONLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//* +//********************************************************************* +//* ESI TRACE IN BATCH MODE * +//********************************************************************* +//*EN$TRESI DD SYSOUT=* +//*EN$TRALC DD SYSOUT=* +//* +//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* +//SYMDUMP DD DUMMY +//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* +//*--------------------------------------------------------SHIPLOCL +//SHIPLOCL EXEC PGM=IRXJCL,COND=(8,LE), SHIPLOCL +// PARM='UPDTTGGR &Destination / &Package' +//STEPLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTU +// DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTH +//* DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//CONLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//SYSEXEC DD DSN=YOURSITE.NDVR.TEAM.REXX,DISP=SHR +//SYSTSPRT DD SYSOUT=* +//*------------------------------------------------------- SHIPLOCL +//* *--------------------------------------------* SHIPLOCL (CONT.) * +$$ +//SYSUT2 DD DSN=PUBLIC.LOCAL.D&Date6.T&Time6.NOTIFY, +// DISP=(,CATLG),SPACE=(TRK,(1,0)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//SYSPRINT DD SYSOUT=* +//SYSIN DD DUMMY +//* *--------------------------------------------* SHIPLOCL (CONT.) * +//SUBMIT EXEC PGM=IKJEFT01 +//SYSOUT DD SYSOUT=* +//SYSTSPRT DD SYSOUT=* +//SYSTSIN DD * + SUBMIT 'PUBLIC.LOCAL.D&Date6.T&Time6.NOTIFY' +//* SHIPLOCL +## +//* +//* *--------------------------------------------* C1BMXJOB (CONT.) * +//* +//C1BMXLIB DD DATA,DLM=## +//* ****************************************************************** +//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS +//* ****************************************************************** +//STEPLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTU +// DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTH +//* DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//CONLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//* +//********************************************************************* +//* ESI TRACE IN BATCH MODE * +//********************************************************************* +//*EN$TRESI DD SYSOUT=* +//*EN$TRALC DD SYSOUT=* +//* +//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* +//SYMDUMP DD DUMMY +//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* +## +//* +//* *--------------------------------------------* C1BMXJOB (CONT.) * +//* +//* ****************************************************************** +//* * SHIP PACKAGE PKG-ID TO DESTINATION DEST-ID ( OPTION BACKOUT ) . +//* ****************************************************************** +//* +//* THE FOLLOWING DD STATEMENT MUST BE THE *LAST* CARD IN THIS MEMBER. +//* ISPSLIB MEMBER C1BMXIN IS INCLUDED AFTER IT AS THE INSTREAM DATA. +//* +//C1BMXIN DD * *-------------------------------* ISPSLIB(C1BMXIN) * +SHIP PAC '&Package' TO DEST &Destination OPT &ShipOutput . +//* *============================================* ISPSLIB(C1BMXLOC) * +//* *==============================================================* * +//* *==============================================================* * +//* *==============================================================* * +//* *==============================================================* * +//* +//C1BMXLOC EXEC PGM=IKJEFT01,COND=(12,LE,NDVRSHIP) SHIPLOCL +//SYSTSIN DD DSN=&&XLCC,DISP=(OLD,PASS) +//SYSTSPRT DD SYSOUT=* +//SYSOUT DD SYSOUT=* +//* *--------------------------------------------* ISPSLIB(SHIPLOCL) * +//* *--------------------------------------------------------------* * +//* *--------------------------------------------------------------* * +//* *--------------------------------------------------------------* * +//* *--------------------------------------------------------------* * +//* SHIPLOCL +//CONFGE12 EXEC PGM=NDVRC1,REGION=4096K,COND=(12,GT), +// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,GE,0012,***L****' +//* SHIPLOCL +//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//* SHIPLOCL +//* ****************************************************************** +//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS +//* ****************************************************************** +//STEPLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTU +// DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTH +//* DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//CONLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//* +//********************************************************************* +//* ESI TRACE IN BATCH MODE * +//********************************************************************* +//*EN$TRESI DD SYSOUT=* +//*EN$TRALC DD SYSOUT=* +//* +//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* +//SYMDUMP DD DUMMY +//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* +//* *--------------------------------------------* SHIPLOCLSHIPLOCL(CONT +//* *--------------------------------------------------------------* * +//* *--------------------------------------------------------------* * +//* *--------------------------------------------------------------* * +//* *--------------------------------------------------------------* * +//* SHIPLOCL +//* SHIPLOCL +//CONFGE08 EXEC PGM=NDVRC1,REGION=4096K,COND=(08,NE), +// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,GE,0008,***L****' +//* SHIPLOCL +//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//* SHIPLOCL +//* ****************************************************************** +//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS +//* ****************************************************************** +//STEPLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTU +// DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTH +//* DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//CONLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//* +//********************************************************************* +//* ESI TRACE IN BATCH MODE * +//********************************************************************* +//*EN$TRESI DD SYSOUT=* +//*EN$TRALC DD SYSOUT=* +//* +//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* +//SYMDUMP DD DUMMY +//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* +//* SHIPLOCL +//* SHIPLOCL +//CONFGE04 EXEC PGM=NDVRC1,REGION=4096K,COND=(04,NE), +// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,GE,0004,***L****' +//* SHIPLOCL +//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//* SHIPLOCL +//* ****************************************************************** +//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS +//* ****************************************************************** +//STEPLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTU +// DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTH +//* DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//CONLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//* +//********************************************************************* +//* ESI TRACE IN BATCH MODE * +//********************************************************************* +//*EN$TRESI DD SYSOUT=* +//*EN$TRALC DD SYSOUT=* +//* +//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* +//SYMDUMP DD DUMMY +//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* +//* SHIPLOCL +//* SHIPLOCL +//CONFGE00 EXEC PGM=NDVRC1,REGION=4096K,COND=(00,NE), +// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,GE,0000,***L****' +//* SHIPLOCL +//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//* SHIPLOCL +//* ****************************************************************** +//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS +//* ****************************************************************** +//STEPLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTU +// DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTH +//* DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//CONLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//* +//********************************************************************* +//* ESI TRACE IN BATCH MODE * +//********************************************************************* +//*EN$TRESI DD SYSOUT=* +//*EN$TRALC DD SYSOUT=* +//* +//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* +//SYMDUMP DD DUMMY +//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* +//* SHIPLOCL +//* SHIPLOCL +//CONFABND EXEC PGM=NDVRC1,REGION=4096K,COND=ONLY, SHIPLOCL +// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,AB,****,********' +//* SHIPLOCL +//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), +// UNIT=SYSALLDA +//* SHIPLOCL +//* ****************************************************************** +//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS +//* ****************************************************************** +//STEPLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTU +// DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQAUTH +//* DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//CONLIB DD DISP=SHR,DSN=YOUR.NDVR.V180CA06.CSIQLOAD +//* +//********************************************************************* +//* ESI TRACE IN BATCH MODE * +//********************************************************************* +//*EN$TRESI DD SYSOUT=* +//*EN$TRALC DD SYSOUT=* +//* +//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* +//SYMDUMP DD DUMMY +//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* +//* SHIPLOCL +//* *--------------------------------------------* ISPSLIB(SHIPLOCL) * +//* ISPSLIB(C1BMXEOJ) - END OF JOB diff --git a/endevor/Field-Developed-Programs/Package-Automation/SHIPMODL.skl b/endevor/Field-Developed-Programs/Package-Automation/SHIPMODL.skl index 240e2f6..718e804 100644 --- a/endevor/Field-Developed-Programs/Package-Automation/SHIPMODL.skl +++ b/endevor/Field-Developed-Programs/Package-Automation/SHIPMODL.skl @@ -1,12 +1,12 @@ -//&Jobname JOB (55800000), +//&Jobname JOB (0000), // 'ENDEVOR JOB',MSGLEVEL=(1,1),CLASS=B,REGION=0M,MSGCLASS=A, SHIPMODL -// NOTIFY=&Notify,TYPRUN=SCAN -//* NOTIFY=&Notify/&TYPRUN +// NOTIFY=&Notify,TYPRUN=SCAN +//* NOTIFY=&Notify/&TYPRUN //*------------------------------------------------------------------- SHIPMODL //*----.....ENDEVOR.MODELS(SHIPMODL)---------------------------------- SHIPMODL -// SET PACKAGE=&Package -// SET DEST=&Destination -// SET HLQ=&userid.SHIP.&Destination +// SET PACKAGE=&Package +// SET DEST=&Destination +// SET HLQ=IBMUSER.SHIP.&Destination // SET AUTHLIB1=CADEMO.ENDV.RUN.CSIQAUTU SHIPMODL // SET AUTHLIB2=CADEMO.ENDV.RUN.CSIQAUTH SHIPMODL // SET CONLIB=CADEMO.ENDV.RUN.CSIQLOAD SHIPMODL @@ -15,14 +15,14 @@ //* *==============================================================* * SHIPMODL //* *==============================================================* * SHIPMODL //NDVRSHIP EXEC PGM=NDVRC1,DYNAMNBR=1500,REGION=4096K, SHIPMODL -// PARM='C1BMX000,&Date8,&Time8 SHIP &Userid' +// PARM='C1BMX000,&Date8,&Time8 SHIP &Userid' //* SHIPMODL //* ****************************************************************** SHIPMODL //* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS SHIPMODL //* ****************************************************************** SHIPMODL -//STEPLIB DD DISP=SHR,DSN=&AUTHLIB1 -// DD DISP=SHR,DSN=&AUTHLIB2 -//CONLIB DD DISP=SHR,DSN=&CONLIB +//STEPLIB DD DISP=SHR,DSN=&AUTHLIB1 +// DD DISP=SHR,DSN=&AUTHLIB2 +//CONLIB DD DISP=SHR,DSN=&CONLIB //* SHIPMODL //SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* SHIPMODL //SYMDUMP DD DUMMY SHIPMODL @@ -39,11 +39,11 @@ //* * XCOM MODEL CONTROL CARD DATASET SHIPMODL //* ****************************************************************** SHIPMODL //* SHIPMODL -//C1BMXXCC DD DSN=&&XXCC,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), +//C1BMXXCC DD DSN=&&XXCC,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), // DCB=(RECFM=FB,LRECL=80,DSORG=PS), SHIPMODL // UNIT=3390 SHIPMODL //C1BMXXCM DD DISP=SHR, SHIPMODL -// DSN=&SOURCE +// DSN=&SOURCE //* SHIPMODL //* SHIPMODL //* ****************************************************************** SHIPMODL @@ -51,22 +51,22 @@ //* * LOCAL MODEL CONTROL CARD DATASET SHIPMODL //* ****************************************************************** SHIPMODL //* SHIPMODL -//C1BMXLCC DD DSN=&&XLCC,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), +//C1BMXLCC DD DSN=&&XLCC,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), // DCB=(RECFM=FB,LRECL=80,DSORG=PS), SHIPMODL // UNIT=3390 SHIPMODL //C1BMXLCM DD DISP=SHR, SHIPMODL -// DSN=&SOURCE +// DSN=&SOURCE //* SHIPMODL //* ****************************************************************** SHIPMODL //* * BULK DATA TRANSFER U_S_I_N_G J_E_S - GENERATED JCL DATASET SHIPMODL //* * BULK DATA TRANSFER MODEL JCL DATASET SHIPMODL //* ****************************************************************** SHIPMODL //* SHIPMODL -//C1BMXB1C DD DSN=&&XB1C,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), +//C1BMXB1C DD DSN=&&XB1C,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), // DCB=(RECFM=FB,LRECL=80,DSORG=PS), SHIPMODL // UNIT=3390 SHIPMODL //C1BMXB1M DD DISP=SHR, SHIPMODL -// DSN=&SOURCE +// DSN=&SOURCE //* SHIPMODL //* SHIPMODL //* ****************************************************************** SHIPMODL @@ -74,46 +74,46 @@ //* * BULK DATA TRANSFER MODEL CONTROL CARD DATASET SHIPMODL //* ****************************************************************** SHIPMODL //* SHIPMODL -//C1BMXBDC DD DSN=&&XBDC,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), +//C1BMXBDC DD DSN=&&XBDC,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), // DCB=(RECFM=FB,LRECL=80,DSORG=PS), SHIPMODL // UNIT=3390 SHIPMODL //C1BMXBDM DD DISP=SHR, SHIPMODL -// DSN=&SOURCE +// DSN=&SOURCE //* SHIPMODL //* ****************************************************************** SHIPMODL //* * NETVIEW FTP "ADD TO TRANSMISSION QUEUE" DATASET AND INTERNAL RDR SHIPMODL //* * NETVIEW FTP MODEL CONTROL CARD DATASET SHIPMODL //* ****************************************************************** SHIPMODL //* SHIPMODL -//C1BMXFTC DD DSN=&&XFTC,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), +//C1BMXFTC DD DSN=&&XFTC,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), // DCB=(RECFM=FB,LRECL=80,DSORG=PS), SHIPMODL // UNIT=3390 SHIPMODL //C1BMXFTM DD DISP=SHR, SHIPMODL -// DSN=&SOURCE +// DSN=&SOURCE //* SHIPMODL //* ****************************************************************** SHIPMODL //* * NETWORK DATA MOVER COPY/RUN COMMAND DATASETS SHIPMODL //* * NETWORK DATA MOVER MODEL CONTROL CARD DATASET SHIPMODL //* ****************************************************************** SHIPMODL //* SHIPMODL -//C1BMXNWC DD DSN=&&XNWC,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), +//C1BMXNWC DD DSN=&&XNWC,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), // DCB=(RECFM=FB,LRECL=80,DSORG=PS), SHIPMODL // UNIT=3390 SHIPMODL //C1BMXNWM DD DISP=SHR, SHIPMODL -// DSN=&SOURCE +// DSN=&SOURCE //* SHIPMODL //* ****************************************************************** SHIPMODL //* * PDS CONTAINING REMOTE IEBCOPY AND IDCAMS JOBSTEP MEMBERS SHIPMODL //* ****************************************************************** SHIPMODL //* SHIPMODL //C1BMXRJC DD DISP=SHR, SHIPMODL -// DSN=&ISPSLIB +// DSN=&ISPSLIB //* SHIPMODL //* ****************************************************************** SHIPMODL //* * SHIPMENT DATE/TIME READ BY INLINE HOST CONFIRMATION STEP SHIPMODL //* ****************************************************************** SHIPMODL //* SHIPMODL -//C1BMXDTM DD DSN=&&XDTM,DISP=(NEW,PASS),SPACE=(TRK,(1,0)), +//C1BMXDTM DD DSN=&&XDTM,DISP=(NEW,PASS),SPACE=(TRK,(1,0)), // DCB=(RECFM=FB,Lf CL=80,DSORG=PS), SHIPMODL // UNIT=3390 SHIPMODL //* SHIPMODL @@ -121,7 +121,7 @@ //* * HOST STAGING DATASET DELETION STATEMENTS (IDCAMS) SHIPMODL //* ****************************************************************** SHIPMODL //* SHIPMODL -//C1BMXDEL DD DSN=&&HDEL,DISP=(NEW,PASS),SPACE=(TRK,(10,10)), +//C1BMXDEL DD DSN=&&HDEL,DISP=(NEW,PASS),SPACE=(TRK,(10,10)), // DCB=(RECFM=FB,LRECL=80,DSORG=PS), SHIPMODL // UNIT=3390 SHIPMODL //* SHIPMODL @@ -130,17 +130,17 @@ //* ****************************************************************** SHIPMODL //* SHIPMODL //C1BMXMDL DD DISP=SHR, SHIPMODL -// DSN=&SOURCE +// DSN=&SOURCE //* SHIPMODL //* ****************************************************************** SHIPMODL //* * JCL SEGMENTS TO CREATE GROUP SYMBOLICS FOR MODELLING SHIPMODL //* ****************************************************************** SHIPMODL //* SHIPMODL //C1BMXHJC DD DATA,DLM=## SHIPMODL -//&Jobname JOB (55800000), +//&Jobname JOB (0000), // 'ENDEVOR JOB',MSGLEVEL=(1,1),CLASS=B,REGION=0M,MSGCLASS=A, SHIPMODL -// NOTIFY=&Userid -## +// NOTIFY=&Userid +## //* SHIPMODL //* *--------------------------------------------* C1BMXJOB (CONT.) * SHIPMODL //* SHIPMODL @@ -152,18 +152,18 @@ //* *--------------------------------------------------------------* * SHIPMODL //* SHIPMODL //CONFEXEC EXEC PGM=NDVRC1,REGION=4096K, SHIPMODL -// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,EX,****,$DEST_ID' +// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,EX,****,$DEST_ID' //* SHIPMODL -//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), +//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), // DCB=(RECFM=FB,LRECL=80,DSORG=PS), SHIPMODL // UNIT=3390 SHIPMODL //* SHIPMODL //* ****************************************************************** SHIPMODL //* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS SHIPMODL //* ****************************************************************** SHIPMODL -//STEPLIB DD DISP=SHR,DSN=CAPRD.SIQ126S1.USER.AUTHLIB SHIPMODL -// DD DISP=SHR,DSN=CAPRD.SIQ126S1.AUTHLIB SHIPMODL -//CONLIB DD DISP=SHR,DSN=CAPRD.SIQ126S1.CONLIB SHIPMODL +//STEPLIB DD DISP=SHR,DSN=YOUR.SIQ126S1.USER.AUTHLIB SHIPMODL +// DD DISP=SHR,DSN=YOUR.SIQ126S1.AUTHLIB SHIPMODL +//CONLIB DD DISP=SHR,DSN=YOUR.SIQ126S1.CONLIB SHIPMODL //* SHIPMODL //SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* SHIPMODL //SYMDUMP DD DUMMY SHIPMODL @@ -175,23 +175,23 @@ //* *--------------------------------------------------------------* * SHIPMODL //* SHIPMODL //CONFABND EXEC PGM=NDVRC1,REGION=4096K,COND=ONLY, SHIPMODL -// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,AB,****,********' +// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,AB,****,********' //* SHIPMODL -//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), +//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), // DCB=(RECFM=FB,LRECL=80,DSORG=PS), SHIPMODL // UNIT=3390 SHIPMODL //* SHIPMODL //* ****************************************************************** SHIPMODL //* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS SHIPMODL //* ****************************************************************** SHIPMODL -//STEPLIB DD DISP=SHR,DSN=CAPRD.SIQ126S1.USER.AUTHLIB SHIPMODL -// DD DISP=SHR,DSN=CAPRD.SIQ126S1.AUTHLIB SHIPMODL -//CONLIB DD DISP=SHR,DSN=CAPRD.SIQ126S1.CONLIB SHIPMODL +//STEPLIB DD DISP=SHR,DSN=YOUR.SIQ126S1.USER.AUTHLIB SHIPMODL +// DD DISP=SHR,DSN=YOUR.SIQ126S1.AUTHLIB SHIPMODL +//CONLIB DD DISP=SHR,DSN=YOUR.SIQ126S1.CONLIB SHIPMODL //* SHIPMODL //SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* SHIPMODL //SYMDUMP DD DUMMY SHIPMODL //C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* SHIPMODL -## +## //* SHIPMODL //* *--------------------------------------------* C1BMXJOB (CONT.) * SHIPMODL //* SHIPMODL @@ -204,51 +204,51 @@ //* SHIPMODL //CONFCOPY EXEC PGM=IEBGENER EXECUTED AT THE REMOTE SITE SHIPMODL //SYSUT1 DD DATA,DLM=$$ JOB SHIPPED BACK TO HOST SHIPMODL -//&Jobname JOB (55800000), +//&Jobname JOB (0000), // 'ENDEVOR JOB',MSGLEVEL=(1,1),CLASS=B,REGION=0M,MSGCLASS=A, SHIPMODL -// NOTIFY=&Userid +// NOTIFY=&Userid //CONFEXEC EXEC PGM=NDVRC1, SHIPMODL -// PARM='C1BMX000,&Date8,&Time8,CONF,RCPY,EX,****,$DEST_ID' +// PARM='C1BMX000,&Date8,&Time8,CONF,RCPY,EX,****,$DEST_ID' //* ****************************************************************** SHIPMODL //* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS SHIPMODL //* ****************************************************************** SHIPMODL -//STEPLIB DD DISP=SHR,DSN=CAPRD.SIQ126S1.USER.AUTHLIB SHIPMODL -// DD DISP=SHR,DSN=CAPRD.SIQ126S1.AUTHLIB SHIPMODL -//CONLIB DD DISP=SHR,DSN=CAPRD.SIQ126S1.CONLIB SHIPMODL +//STEPLIB DD DISP=SHR,DSN=YOUR.SIQ126S1.USER.AUTHLIB SHIPMODL +// DD DISP=SHR,DSN=YOUR.SIQ126S1.AUTHLIB SHIPMODL +//CONLIB DD DISP=SHR,DSN=YOUR.SIQ126S1.CONLIB SHIPMODL //* SHIPMODL //SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* SHIPMODL //SYMDUMP DD DUMMY SHIPMODL //C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* SHIPMODL //* *--------------------------------------------* C1BMXRCN (CONT.) * SHIPMODL -$$ +$$ //SYSUT2 DD SYSOUT=(A,INTRDR) SHIPMODL //SYSPRINT DD SYSOUT=* SHIPMODL //SYSIN DD DUMMY SHIPMODL //* SHIPMODL //CONFABND EXEC PGM=IEBGENER,COND=ONLY EXECUTED AT THE REMOTE SITE SHIPMODL //SYSUT1 DD DATA,DLM=$$ JOB SHIPPED BACK TO HOST SHIPMODL -//&Jobname JOB (55800000), +//&Jobname JOB (0000), // 'ENDEVOR JOB',MSGLEVEL=(1,1),CLASS=B,REGION=0M,MSGCLASS=A, SHIPMODL -// NOTIFY=&Userid +// NOTIFY=&Userid //ABNDEXEC EXEC PGM=NDVRC1, SHIPMODL -// PARM='C1BMX000,&Date8,&Time8,CONF,RCPY,AB,****,$DEST_ID' +// PARM='C1BMX000,&Date8,&Time8,CONF,RCPY,AB,****,$DEST_ID' //* SHIPMODL //* ****************************************************************** SHIPMODL //* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS SHIPMODL //* ****************************************************************** SHIPMODL -//STEPLIB DD DISP=SHR,DSN=CAPRD.SIQ126S1.USER.AUTHLIB SHIPMODL -// DD DISP=SHR,DSN=CAPRD.SIQ126S1.AUTHLIB SHIPMODL -//CONLIB DD DISP=SHR,DSN=CAPRD.SIQ126S1.CONLIB SHIPMODL +//STEPLIB DD DISP=SHR,DSN=YOUR.SIQ126S1.USER.AUTHLIB SHIPMODL +// DD DISP=SHR,DSN=YOUR.SIQ126S1.AUTHLIB SHIPMODL +//CONLIB DD DISP=SHR,DSN=YOUR.SIQ126S1.CONLIB SHIPMODL //* SHIPMODL //SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* SHIPMODL //SYMDUMP DD DUMMY SHIPMODL //C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* SHIPMODL //* *--------------------------------------------* C1BMXRCN (CONT.) * SHIPMODL -$$ +$$ //SYSUT2 DD SYSOUT=(A,INTRDR) SHIPMODL //SYSPRINT DD SYSOUT=* SHIPMODL //SYSIN DD DUMMY SHIPMODL -## +## //* SHIPMODL //* *--------------------------------------------* C1BMXJOB (CONT.) * SHIPMODL //* SHIPMODL @@ -256,14 +256,14 @@ $$ //* ****************************************************************** SHIPMODL //* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS SHIPMODL //* ****************************************************************** SHIPMODL -//STEPLIB DD DISP=SHR,DSN=CAPRD.SIQ126S1.USER.AUTHLIB SHIPMODL -// DD DISP=SHR,DSN=CAPRD.SIQ126S1.AUTHLIB SHIPMODL -//CONLIB DD DISP=SHR,DSN=CAPRD.SIQ126S1.CONLIB SHIPMODL +//STEPLIB DD DISP=SHR,DSN=YOUR.SIQ126S1.USER.AUTHLIB SHIPMODL +// DD DISP=SHR,DSN=YOUR.SIQ126S1.AUTHLIB SHIPMODL +//CONLIB DD DISP=SHR,DSN=YOUR.SIQ126S1.CONLIB SHIPMODL //* SHIPMODL //SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* SHIPMODL //SYMDUMP DD DUMMY SHIPMODL //C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* SHIPMODL -## +## //* SHIPMODL //* *--------------------------------------------* C1BMXJOB (CONT.) * SHIPMODL //* SHIPMODL @@ -275,7 +275,7 @@ $$ //* ISPSLIB MEMBER C1BMXIN IS INCLUDED AFTER IT AS THE INSTREAM DATA. SHIPMODL //* SHIPMODL //C1BMXIN DD * *-------------------------------* ISPSLIB(C1BMXIN) * SHIPMODL -SHIP PACKAGE '&Package' TO DESTINATION &Destination &ShipOption . +SHIP PACKAGE '&Package' TO DESTINATION &Destination &ShipOption . //* *============================================* ISPSLIB(C1BMXLOC) * SHIPMODL //* *==============================================================* * SHIPMODL //* *==============================================================* * SHIPMODL @@ -283,7 +283,7 @@ SHIP PACKAGE '&Package' TO DESTINATION &Destination &ShipOption . //* *==============================================================* * SHIPMODL //* SHIPMODL //C1BMXLOC EXEC PGM=IKJEFT01,COND=(12,LE,NDVRSHIP) SHIPMODL -//SYSTSIN DD DSN=&&XLCC,DISP=(OLD,PASS) +//SYSTSIN DD DSN=&&XLCC,DISP=(OLD,PASS) //SYSTSPRT DD SYSOUT=* SHIPMODL //SYSOUT DD SYSOUT=* SHIPMODL //* *--------------------------------------------* ISPSLIB(C1BMXHCN) * SHIPMODL @@ -293,18 +293,18 @@ SHIP PACKAGE '&Package' TO DESTINATION &Destination &ShipOption . //* *--------------------------------------------------------------* * SHIPMODL //* SHIPMODL //CONFEXEC EXEC PGM=NDVRC1,REGION=4096K, SHIPMODL -// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,EX,****,***L****' +// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,EX,****,***L****' //* SHIPMODL -//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), +//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), // DCB=(RECFM=FB,LRECL=80,DSORG=PS), SHIPMODL // UNIT=3390 SHIPMODL //* SHIPMODL //* ****************************************************************** SHIPMODL //* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS SHIPMODL //* ****************************************************************** SHIPMODL -//STEPLIB DD DISP=SHR,DSN=&AUTHLIB1 -// DD DISP=SHR,DSN=&AUTHLIB2 -//CONLIB DD DISP=SHR,DSN=&CONLIB +//STEPLIB DD DISP=SHR,DSN=&AUTHLIB1 +// DD DISP=SHR,DSN=&AUTHLIB2 +//CONLIB DD DISP=SHR,DSN=&CONLIB //* SHIPMODL //SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* SHIPMODL //SYMDUMP DD DUMMY SHIPMODL @@ -316,18 +316,18 @@ SHIP PACKAGE '&Package' TO DESTINATION &Destination &ShipOption . //* *--------------------------------------------------------------* * SHIPMODL //* SHIPMODL //CONFABND EXEC PGM=NDVRC1,REGION=4096K,COND=ONLY, SHIPMODL -// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,AB,****,********' +// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,AB,****,********' //* SHIPMODL -//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), +//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), // DCB=(RECFM=FB,LRECL=80,DSORG=PS), SHIPMODL // UNIT=3390 SHIPMODL //* SHIPMODL //* ****************************************************************** SHIPMODL //* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS SHIPMODL //* ****************************************************************** SHIPMODL -//STEPLIB DD DISP=SHR,DSN=&AUTHLIB1 -// DD DISP=SHR,DSN=&AUTHLIB2 -//CONLIB DD DISP=SHR,DSN=&CONLIB +//STEPLIB DD DISP=SHR,DSN=&AUTHLIB1 +// DD DISP=SHR,DSN=&AUTHLIB2 +//CONLIB DD DISP=SHR,DSN=&CONLIB //* SHIPMODL //SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* SHIPMODL //SYMDUMP DD DUMMY SHIPMODL diff --git a/endevor/Field-Developed-Programs/Package-Automation/SHIPRULE.tbl b/endevor/Field-Developed-Programs/Package-Automation/SHIPRULE.tbl index 587ea6e..62aa076 100644 --- a/endevor/Field-Developed-Programs/Package-Automation/SHIPRULE.tbl +++ b/endevor/Field-Developed-Programs/Package-Automation/SHIPRULE.tbl @@ -1,7 +1,12 @@ -*Environment Stage System-- Subsys-- Destination St Jobname- Date Time Typrun Notify----- - DEV * FINANCE REMOTEST TST32 _ RMTEMD32 +0 0000 -*QAS 9 FINANCE * MTS21 _ SENDTS21 +0 0000 HOLD - PRD 2 * * MTS32 _ PRODMD32 +0 0000 - PRD 2 * * MD57# _ PRODMD57 +0 0000 - ADMIN 1 CATSNDVR * MC66A _ D32#MC66 +0 0000 - ADMIN 1 CATSNDVR * MC32A _ D32#MC32 +0 0000 \ No newline at end of file +*Environment Stage System-- Subsys-- Destination St Jobname- Date Time Typrun + DEV * FINANCE REMOTEST TST32 _ RMTEDEV2 +0 0000 +*QAS 9 FINANCE * TSO21 _ SENDTS21 +0 0000 HOLD + DEV * DESEIPOC * TST32 _ RMTEDEV2 +0 0000 +*QAS Q FINANCE * STE32 _ QAS2DEV2 +0 0000 +*QAS Q FINANCE * DEV6FIN _ QAS2DEV2 +0 0000 + PRD 2 * * STE32 _ PRODDEV2 +0 0000 + PRD 2 * * DEV6FIN _ PRODDEV2 +0 0000 +*PRD 2 * * DEV7# _ PRODDEV7 +0 0000 + ADMIN 1 ADMINSYS * DEV6A _ D32#DEV6 +0 0000 + ADMIN 1 ADMINSYS * DEVRSVW _ D32#DEVR +0 0000 + ADMIN 1 ADMINSYS * DEVCA _ D32#DEVC +0 0000 diff --git a/endevor/Field-Developed-Programs/Package-Automation/SWEEPJOB.jcl b/endevor/Field-Developed-Programs/Package-Automation/SWEEPJOB.jcl index 32b7830..614c6b2 100644 --- a/endevor/Field-Developed-Programs/Package-Automation/SWEEPJOB.jcl +++ b/endevor/Field-Developed-Programs/Package-Automation/SWEEPJOB.jcl @@ -1,55 +1,66 @@ -//IBMUSERS JOB (0000), -// 'ENDEVOR JOB',MSGLEVEL=(1,1),CLASS=B,REGION=0M,MSGCLASS=A, -// NOTIFY=&SYSUID -//*-----------------------------------------------------------------* JOB02096 +//IBMUSERS JOB (0000), +// 'ENDEVOR JOB',MSGLEVEL=(1,1),CLASS=B,REGION=0M,MSGCLASS=A, +// NOTIFY=&SYSUID +//*==================================================================* +//* https://github.com/BroadcomMFD/broadcom-product-scripts */ +//* This version of a "Sweep Job" goes beyond traditional functions: */ +//* - It submits jobs to execute packages ( traditional function) */ +//* - It submits jobs to ship packages ("Package Automation" ) */ +//* The Trigger file is scanned to find packages whose */ +//* scheduled shipment date-time has arrived. */ +//* A shipment job is submitted for each one found. */ +//* The MODELDSN is the name of the dataset where your */ +//* Shipment models are found. */ +//* Packages that can be shipped immediately after Execution */ +//* are submitted by the Exit and not by this job. */ +//*==================================================================* +// JCLLIB ORDER=(YOURSITE.NDVR.TEAM.JCL) <-Where are INCLUDES +// EXPORT SYMLIST=(*) +//*-- -* +// SET PKGPREFX='FINA*' <- Execute for Stg +//*-- -* +// SET SUBMITDS=IBMUSER.PULLTGGR <- Work datasets +// SET MODELDSN=YOURSITE.YOUR.NDVR.NODES1.ISPS +//*==================================================================* +//*-------------------------------------------------------------------* //* SWEEP PACKAGE DATABASE AND ESTABLISH RUNJCL FOR PACKAGES THAT * JOB02096 //* ARE APPROVED AND MEET SUBMIT TIMES * JOB02096 -//*-----------------------------------------------------------------* -// SET SUBMITDS=IBMUSER.PULLTGGR <- Work datasets -// SET MODELDSN=CAPRD.ENDV.SHIP.MODELS <- Where Shipping MODELS -// SET SYSSEXEC=CAPRD.ENDV.SHIP.REXX <- Where is PULLTGGR -//*-----------------------------------------------------------------* -//SWEEP EXEC PGM=NDVRC1,PARM='ENBP1000',REGION=0M -//STEPLIB DD DISP=SHR,DSN=CAPRD.END##.CSIQAUTU -// DD DISP=SHR,DSN=CAPRD.END##.CSIQAUTH -// DD DISP=SHR,DSN=CAPRD.END##.CSIQLOAD -//CONLIB DD DISP=SHR,DSN=CAPRD.END##.CSIQLOAD -//ENPSCLIN DD * - SUBMIT PACKAGE * - JOBCARD DDNAME JCLIN - TO INTERNAL READER DDNAME JCLOUT - OPTION WHERE PACKAGE STATUS IS APPROVED - INCREMENT JOBNAME - JCL PROCEDURE NAME IS ENDEVOR - . -//JCLOUT DD SYSOUT=(A,INTRDR),DCB=(BLKSIZE=80,LRECL=80,RECFM=F) -//JCLIN DD DATA,DLM=@@ -//SWEEP#01 JOB (0000), JOB00219 -// 'ENDEVOR JOB',MSGLEVEL=(1,1),CLASS=B,REGION=0M,MSGCLASS=A, -// NOTIFY=&SYSUID -//*-------------------------------------------------------------------* -// JCLLIB ORDER=(CAPRD.END##.CSIQJCL) -//**------------------------------------------------------------------* -@@ -//C1MSGS1 DD SYSOUT=* -//C1MSGS2 DD SYSOUT=* -//SYSABEND DD SYSOUT=* -//SYSPRINT DD SYSOUT=* -//SYSTERM DD SYSOUT=* -//*-------------------------------------------------------------------* -//* Run the step below to Sweep Package Shipments. -* -//*-------------------------------------------------------------------* -//SHIPMENT EXEC PGM=IKJEFT1B,COND=(4,LE), -// PARM=('PULLTGGR &SUBMITDS', -// ' &MODELDSN') -//STEPLIB DD DISP=SHR,DSN=CAPRD.END##.CSIQAUTU -// DD DISP=SHR,DSN=CAPRD.END##.CSIQAUTH -// DD DISP=SHR,DSN=CAPRD.END##.CSIQLOAD -//CONLIB DD DISP=SHR,DSN=CAPRD.END##.CSIQLOAD -//SYSTSPRT DD SYSOUT=* -//SYSPRINT DD SYSOUT=* -//* Trigger file is dynamically allocated -//SUBFAILS DD SYSOUT=* -//SYSEXEC DD DISP=SHR,DSN=&SYSEXEC -//SYSTSIN DD DUMMY -//*-------------------------------------------------------------------* +//*-------------------------------------------------------------------* +//EXECUTE EXEC PGM=NDVRC1,PARM='ENBP1000',REGION=0M +// INCLUDE MEMBER=STEPLIB <-Endevor STEPLIB,CONLIB etc +//JCLIN DD DATA,DLM=QQ +//PACKAGEX JOB (0000), +// 'ENDEVOR JOB',MSGLEVEL=(1,1),CLASS=B,REGION=0M,MSGCLASS=A, +// NOTIFY=&SYSUID TYPRUN=HOLD +// JCLLIB ORDER=(YOUR.NDVR.CSIQJCL) <-Where is ENDEVOR proc +//*-- Execute Endevor Package ----------------------------------------- +QQ +//JCLOUT DD SYSOUT=(A,INTRDR),DCB=(BLKSIZE=80,LRECL=80,RECFM=F) +//ENPSCLIN DD *,SYMBOLS=JCLONLY + SUBMIT PACKAGE * + JOBCARD DDNAME JCLIN + TO INTERNAL READER DDNAME JCLOUT + OPTION WHERE PACKAGE STATUS IS APPROVED + INCREMENT JOBNAME + JCL PROCEDURE NAME IS ENDEVOR + . +//C1MSGS1 DD SYSOUT=* +//C1MSGS2 DD SYSOUT=* +//SYSTERM DD SYSOUT=* +//SYSPRINT DD SYSOUT=* +//SYSABEND DD SYSOUT=* +//*-------------------------------------------------------------------* +//* Run the step below to Sweep Package Shipments. -* +//*-------------------------------------------------------------------* +//SHIPMENT EXEC PGM=IKJEFT1B,COND=(4,LE), +// PARM=('PULLTGGR &SUBMITDS', +// ' &MODELDSN') +// INCLUDE MEMBER=STEPLIB <-Endevor STEPLIB,CONLIB etc +// INCLUDE MEMBER=SYSEXEC <- where is PULLTGGR + CSIQCLS0 +//SYSTSPRT DD SYSOUT=* +//PULLTGGR DD DUMMY +//SYSPRINT DD SYSOUT=* +//* Trigger file is dynamically allocated +//SUBFAILS DD SYSOUT=* +//SYSTSIN DD DUMMY +//*-------------------------------------------------------------------* diff --git a/endevor/Field-Developed-Programs/Package-Automation/TBLUNLOD.rex b/endevor/Field-Developed-Programs/Package-Automation/TBLUNLOD.rex index 069b81c..6d2c9e9 100644 --- a/endevor/Field-Developed-Programs/Package-Automation/TBLUNLOD.rex +++ b/endevor/Field-Developed-Programs/Package-Automation/TBLUNLOD.rex @@ -4,127 +4,127 @@ /* of Tables to consider content of multiple tables. */03850000 /* */03850000 /* WRITTEN BY DAN WALTHER */ 03870000 - - Arg DSN Request HeadingChar ; - tmp = Translate(DSN,' ','()') - MEMBER = Word(tmp,Words(tmp)) - Sa= 'Request='REQUEST - - STRING = "ALLOC DD(TABLE) DA('"DSN"') SHR REUSE" - CALL BPXWDYN STRING; - "EXECIO * DISKR TABLE (STEM $tablerec. FINIS" - - $TableCommentPrefix = "**"; /* For TABLE comments */ - - $TableHeadingChar = "*" ; /* For TABLE heading */ - If Substr(HeadingChar,1,1) /= ' ' then, - $TableHeadingChar = HeadingChar ; - - /* Find Heading for Table */ - DO $tbl = 1 TO $tablerec.0 /* Look for header or CSV format*/ - /* If not finding a heading, just get out */ - If Substr($tablerec.$tbl,1,2) = $TableCommentPrefix then Iterate ; - If Substr($tablerec.$tbl,1,1) /= $TableHeadingChar then Iterate ; - Leave - End - - If Substr($tablerec.$tbl,1,1) /= $TableHeadingChar then Exit(8) ; - - /* A Heading was found, get column info for Table */ - Call Process_Heading - Call CaptureVariablePositions - If REQUEST = 'ALL' then, - Call CaptureTableContent - - Exit - -/* This routine copied from ENBPUI00 */ -Process_Heading : - - $LastWord = Word($tablerec.$tbl,Words($tablerec.$tbl)); - If DATATYPE($LastWord) = 'NUM' then, - Do - Say 'Please remove sequence numbers from the Table' - Exit(12) - End - - $tmprec = Substr($tablerec.$tbl,2) ; - $PositionSpclChar = POS('-',$tmprec) ; - If $PositionSpclChar = 0 then, - $PositionSpclChar = POS('*',$tmprec) ; - $tmpreplaces = '-,.'$TableHeadingChar ; - $tmprec = TRANSLATE($tmprec,' ',$tmpreplaces); - $table_variables = strip($tmprec); - $Heading_Variable_count = WORDS($table_variables) ; - If $PositionSpclChar = 0 then, - return ; - If $Heading_Variable_count /=, - Words(Substr($tablerec.$tbl,2)) then, - Do - Say 'Invalid table Heading:' $tablerec.$tbl - exit(12) - End - - $heading = Overlay(' ',$tablerec.$tbl,1); /* Space leading * */ - Do $pos = 1 to $Heading_Variable_count - $headingVariable = Word($table_variables,$pos) ; - If $headingVariable = "$my_rc" then, - $headingVariable = "$Temp_RC" - $tmp = Wordindex($heading,$pos) ; - $Starting_$position.$headingVariable = $tmp - $tmp = $tmp + Length(Word($heading,$pos)) -1 ; - $Ending_$position.$headingVariable = $tmp - end; /* DO $pos = 1 to $Heading_Variable_count */ - - $Table_Type = "positions" ; - Return ; - -CaptureVariablePositions: - - $headingvariables = Translate($heading,' ','-*') - Queue "$heading."MEMBER, - "='"Space($headingvariables)"'" - - Do $pos = 1 to $Heading_Variable_count - $headingVariable = Word($table_variables,$pos) ; - Starts=$Starting_$position.$headingVariable - Ends =$Ending_$position.$headingVariable - Queue "Start."MEMBER"."$headingVariable"="Starts - Queue "End."MEMBER"."$headingVariable"="Ends - If REQUEST = 'ALL' then, - Do - Start.MEMBER.$headingVariable=Starts - Ends.MEMBER.$headingVariable=Ends - End - end; /* DO $pos = 1 to $Heading_Variable_count */ - - Return ; - -CaptureTableContent: - - DO $tbl = 1 TO $tablerec.0 /* Capture content of deail recs*/ - Queue "Char@1."MEMBER"."$tbl"= '"Substr($tablerec.$tbl,1,1)"'" - If Substr($tablerec.$tbl,1,2) = $TableCommentPrefix then Iterate ; - If Substr($tablerec.$tbl,1,1) = $TableHeadingChar then Iterate ; - Do $pos = 1 to $Heading_Variable_count - $headingVariable = Word($table_variables,$pos) ; - Starts=$Starting_$position.$headingVariable - Ends =$Ending_$position.$headingVariable - len = Ends - Starts +1 - value = Strip(Substr($tablerec.$tbl,Starts,len)) - $delim = "'" - If Pos("'",value) > 0 then, - Do - $delim = '"' - value = Translate(value,"'",'"') - End - Queue "Value."MEMBER"."$headingVariable"."$tbl"=", - $delim || value ||$delim - end; /* DO $pos = 1 to $Heading_Variable_count */ - - End /* Do Forever */ - - Queue "LastRecord."MEMBER"="$tablerec.0 - - Return ; - + + Arg DSN Request HeadingChar ; + tmp = Translate(DSN,' ','()') + MEMBER = Word(tmp,Words(tmp)) + Sa= 'Request='REQUEST + + STRING = "ALLOC DD(TABLE) DA('"DSN"') SHR REUSE" + CALL BPXWDYN STRING; + "EXECIO * DISKR TABLE (STEM $tablerec. FINIS" + + $TableCommentPrefix = "**"; /* For TABLE comments */ + + $TableHeadingChar = "*" ; /* For TABLE heading */ + If Substr(HeadingChar,1,1) /= ' ' then, + $TableHeadingChar = HeadingChar ; + + /* Find Heading for Table */ + DO $tbl = 1 TO $tablerec.0 /* Look for header or CSV format*/ + /* If not finding a heading, just get out */ + If Substr($tablerec.$tbl,1,2) = $TableCommentPrefix then Iterate ; + If Substr($tablerec.$tbl,1,1) /= $TableHeadingChar then Iterate ; + Leave + End + + If Substr($tablerec.$tbl,1,1) /= $TableHeadingChar then Exit(8) ; + + /* A Heading was found, get column info for Table */ + Call Process_Heading + Call CaptureVariablePositions + If REQUEST = 'ALL' then, + Call CaptureTableContent + + Exit + +/* This routine copied from ENBPUI00 */ +Process_Heading : + + $LastWord = Word($tablerec.$tbl,Words($tablerec.$tbl)); + If DATATYPE($LastWord) = 'NUM' then, + Do + Say 'Please remove sequence numbers from the Table' + Exit(12) + End + + $tmprec = Substr($tablerec.$tbl,2) ; + $PositionSpclChar = POS('-',$tmprec) ; + If $PositionSpclChar = 0 then, + $PositionSpclChar = POS('*',$tmprec) ; + $tmpreplaces = '-,.'$TableHeadingChar ; + $tmprec = TRANSLATE($tmprec,' ',$tmpreplaces); + $table_variables = strip($tmprec); + $Heading_Variable_count = WORDS($table_variables) ; + If $PositionSpclChar = 0 then, + return ; + If $Heading_Variable_count /=, + Words(Substr($tablerec.$tbl,2)) then, + Do + Say 'Invalid table Heading:' $tablerec.$tbl + exit(12) + End + + $heading = Overlay(' ',$tablerec.$tbl,1); /* Space leading * */ + Do $pos = 1 to $Heading_Variable_count + $headingVariable = Word($table_variables,$pos) ; + If $headingVariable = "$my_rc" then, + $headingVariable = "$Temp_RC" + $tmp = Wordindex($heading,$pos) ; + $Starting_$position.$headingVariable = $tmp + $tmp = $tmp + Length(Word($heading,$pos)) -1 ; + $Ending_$position.$headingVariable = $tmp + end; /* DO $pos = 1 to $Heading_Variable_count */ + + $Table_Type = "positions" ; + Return ; + +CaptureVariablePositions: + + $headingvariables = Translate($heading,' ','-*') + Queue "$heading."MEMBER, + "='"Space($headingvariables)"'" + + Do $pos = 1 to $Heading_Variable_count + $headingVariable = Word($table_variables,$pos) ; + Starts=$Starting_$position.$headingVariable + Ends =$Ending_$position.$headingVariable + Queue "Start."MEMBER"."$headingVariable"="Starts + Queue "End."MEMBER"."$headingVariable"="Ends + If REQUEST = 'ALL' then, + Do + Start.MEMBER.$headingVariable=Starts + Ends.MEMBER.$headingVariable=Ends + End + end; /* DO $pos = 1 to $Heading_Variable_count */ + + Return ; + +CaptureTableContent: + + DO $tbl = 1 TO $tablerec.0 /* Capture content of deail recs*/ + Queue "Char@1."MEMBER"."$tbl"= '"Substr($tablerec.$tbl,1,1)"'" + If Substr($tablerec.$tbl,1,2) = $TableCommentPrefix then Iterate ; + If Substr($tablerec.$tbl,1,1) = $TableHeadingChar then Iterate ; + Do $pos = 1 to $Heading_Variable_count + $headingVariable = Word($table_variables,$pos) ; + Starts=$Starting_$position.$headingVariable + Ends =$Ending_$position.$headingVariable + len = Ends - Starts +1 + value = Strip(Substr($tablerec.$tbl,Starts,len)) + $delim = "'" + If Pos("'",value) > 0 then, + Do + $delim = '"' + value = Translate(value,"'",'"') + End + Queue "Value."MEMBER"."$headingVariable"."$tbl"=", + $delim || value ||$delim + end; /* DO $pos = 1 to $Heading_Variable_count */ + + End /* Do Forever */ + + Queue "LastRecord."MEMBER"="$tablerec.0 + + Return ; + diff --git a/endevor/Field-Developed-Programs/Package-Automation/TRIGGER.txt b/endevor/Field-Developed-Programs/Package-Automation/TRIGGER.txt index 8cf9433..a562992 100644 --- a/endevor/Field-Developed-Programs/Package-Automation/TRIGGER.txt +++ b/endevor/Field-Developed-Programs/Package-Automation/TRIGGER.txt @@ -1,10 +1 @@ -*St Package--------- System-- Destination Date---- Time Jobname- Jobnumber Typrun Notify - / T#OCXL2603798307 CONCURNT MTS21 20140324 0000 MTS21TST JOB0232 - / X#VBIQ3243131551 FINANCE MTS32 20210210 0000 REMOTEST JOB59266 - / 1#VBJM2335646942 CATSNDVR MTS32 20210210 0000 FROMMD32 JOB62692 - / 2#VBOS2344967392 FINANCE MTS32 20210215 1924 PRODMD32 00068958 - / X#VBOS3909643281 FINANCE MTS32 20210215 1939 RMTEMD32 JOB19266 - / X#VBOS4258944784 FINANCE MTS32 20210215 1944 RMTEMD32 JOB19491 - 12 X#VBOS5733561884 FINANCE TST32 20210215 1959 RMTEMD32 JOB20284 - s UTIL#XAQT5642836 CATSNDVR MTS06 20230117 2056 D32#MC32 - +*St Package--------- System-- Destination Date---- Time Jobname- Jobnumb- Typrun diff --git a/endevor/Field-Developed-Programs/Package-Automation/UPDTTGGR.rex b/endevor/Field-Developed-Programs/Package-Automation/UPDTTGGR.rex index 38fd33a..7b24479 100644 --- a/endevor/Field-Developed-Programs/Package-Automation/UPDTTGGR.rex +++ b/endevor/Field-Developed-Programs/Package-Automation/UPDTTGGR.rex @@ -1,278 +1,292 @@ -/* REXX */ -/* Update the Trigger file at the completion of package shipment */ - - trace Off - -/* Variable settings for each site ---> */ - WhereIam = WHERE@M1() - - interpret 'Call' WhereIam "'MyCLS2Library'" - MyCLS2Library = Result - Say 'Running UPDTTGGR in' MyCLS2Library - - interpret 'Call' WhereIam "'TriggerFileName'" - TriggerFileName = Result - - interpret 'Call' WhereIam "'MyDATALibrary'" - MyDATALibrary = Result - ShipRules = MyDATALibrary"(SHIPRULE)" - - interpret 'Call' WhereIam "'MySEN2Library'" - MySEN2Library = Result -/* <---- Variable settings for each site */ - -/* */ -/* This Rexx updates Trigger entries for a package just submitted */ -/* for package shipment. */ -/* It also checks for 'Transfer completed successfully' text */ -/* It is executed by a step in the #PSNFTPE shipment member . */ - - ARG Destination Calltype Package ; - - Jobnumber = '' ; /* replace if one is found */ - - If Calltype = '#PSNFTPE' then, - Do - /* Read the FTP output */ - MyRC= 0 ; - Call ScanFTPOutput ; - If MyRC > 0 then Exit(MyRC) ; - - If Jobnumber = '' then Exit(MyRC) ; - End /* If Calltype = '#PSNFTPE' */ - - If Calltype = 'NDMSCAN' then, - Do - /* Read the NDM output */ - MyRC= 0 ; - Call ScanNDMOutput ; - If MyRC > 0 then Exit(MyRC) ; - - If Jobnumber = '' then Exit(MyRC) ; - End /* If Calltype = '#PSNFTPE' */ - - Call AllocateTriggerForUpdate ; - Call UpdateTriggerEntry ; - Call FreeTriggerFile ; - -/* */ -/* All Done */ -/* */ - - Exit - -/* */ -/* Allocate the Rules member for Read only */ -/* */ - -ScanFTPOutput: - - "Execio * DISKR FTPOUT (Stem ftp. finis " - IF RC > 0 then EXIT(8) - If ftp.0 < 1 then EXIT(8) - - "Execio * DISKW OUTPUT (Stem ftp. finis " - - MyRC= 8 ; - Do f# = 1 to ftp.0 - ftp@ = Substr(ftp.f#,2) - w1 = Word(ftp@,1) - w2 = Word(ftp@,2) - w3 = Word(ftp@,3) - w4 = Word(ftp@,4) - if w2='Transfer' & w3='completed' & w4='Successfully' then, - Do - MyRC= 0 ; - Leave ; - End - w5 = Word(ftp@,5) - w6 = Word(ftp@,6) - w7 = Word(ftp@,7) - /* 250-It is known to JES as JOB32058 */ - if w3='known' & w4='to' & w5='JES' & w6='as' then, - Do - Jobnumber = w7; - MyRC= 0 ; - Leave ; - End - End ; /* Do f# = 1 to ftp.0 */ - - Return ; - -ScanNDMOutput: - - "Execio * DISKR NDMOUT (Stem ndm. finis " - IF RC > 0 then EXIT(8) - If ndm.0 < 1 then EXIT(8) - - "Execio * DISKW DMPRINT (Stem ndm. finis " - - MyRC= 8 ; - Do f# = 1 to ndm.0 - ndm@ = Substr(ndm.f#,2) - w1 = Word(ndm@,1) - w2 = Word(ndm@,2) - w3 = Word(ndm@,3) - w4 = Word(ndm@,4) - /* SUBMITTED PROCESS NUMBER 00068958 */ - if w2='SUBMITTED' & w3='PROCESS' & w4='NUMBER' then, - Do - Jobnumber = Word(ndm@,5) - MyRC= 0 ; - Leave ; - End - End ; /* Do f# = 1 to ndm.0 */ - - Return ; - -AllocateTriggerForUpdate: - - STRING = "ALLOC DD(TRIGGER)", - " DA('"TriggerFileName"') OLD REUSE" - seconds = '000005' /* Number of Seconds to wait if needed */ - - Do Forever /* or at least until the file is available */ - CALL BPXWDYN STRING; - MyRC = RC - MyResult = RESULT ; - If MyResult = 0 then Leave - Call WaitAwhile - End /* Do Forever */ - - Return ; - -UpdateTriggerEntry: - - - "Execio * DISKR TRIGGER (Stem $tablerec. finis " - - $tbl = 1 ; - $TableHeadingChar = '*' - /* Build all the ...pos variables from heading */ - Call Process_Trigger_Heading ; - - WeHaveAnUpdate = 'N' - Do t# = $tablerec.0 to 1 by -1 - Say 'Examining Trigger entry for ', - Substr($tablerec.t#,Packagepos,16), - Substr($tablerec.t#,Destinationpos,08) - Say ' for match with... ', - Left(Package,16) Left(Destination,08) - If (Calltype = '#PSNFTPE' & , - Substr($tablerec.t#,Stpos,01) /= 's') then iterate ; - If Substr($tablerec.t#,Packagepos,16) /=, - Left(Package,16) then iterate ; - If Substr($tablerec.t#,Destinationpos,08) /= , - Left(Destination,08) then iterate ; - /* We have a match */ - If Calltype = '#PSNFTPE' | Calltype = 'NDMSCAN' then, - Do - /* Update Job number */ - $tablerec.t# = Overlay(Jobnumber' ',$tablerec.t#,Jobnumberpos) - /* Update status */ - $tablerec.t# = Overlay('S',$tablerec.t#,Stpos) - End; - Else, - $tablerec.t# = Overlay(Calltype,$tablerec.t#,Stpos) ; - WeHaveAnUpdate = 'Y' - msg='Updating ... ', - Left(Package,16) Left(Destination,08) - If Jobnumber /= '' then msg = msg, - ' Submitted job' Jobnumber - Say msg ; - Leave ; - End /* Do t# = 1 to $tablerec. */ - - If WeHaveAnUpdate = 'Y' then, - "Execio * DISKW TRIGGER (Stem $tablerec. finis " - - Return ; - -/* */ -/* Free the Trigger File */ -/* */ - -FreeTriggerFile: - - STRING = "FREE DD(TRIGGER)" - CALL BPXWDYN STRING ; - - Return ; - -/* */ -/* Convert Date formats */ -/* */ - -WaitAwhile: - /* */ - /* A resource is unavailable. Wait awhile and try */ - /* accessing the resource again. */ - /* */ - /* The length of the wait is designated in the parameter */ - /* value which specifies a number of seconds. */ - /* A parameter value of '000003' causes a wait for 3 seconds. */ - /* */ - - seconds = Abs(seconds) - seconds = Trunc(seconds,0) - Say "Waiting for" seconds "seconds at " DATE(S) TIME() - - /* AOPBATCH and BPXWDYN are IBM programs */ - CALL BPXWDYN "ALLOC DD(STDOUT) DUMMY SHR REUSE" - CALL BPXWDYN "ALLOC DD(STDERR) DUMMY SHR REUSE" - CALL BPXWDYN "ALLOC DD(STDIN) DUMMY SHR REUSE" - - /* AOPBATCH and BPXWDYN are IBM programs */ - parm = "sleep "seconds - Address LINKMVS "AOPBATCH parm" - - Return - -Process_Trigger_Heading : -/* The subroutine below is modified from the TBL#TOOL */ - - $tbl = 1 ; - $TableHeadingChar = '*' - - $LastWord = Word($tablerec.$tbl,Words($tablerec.$tbl)); - If DATATYPE($LastWord) = 'NUM' then, - Do - Say 'Please remove sequence numbers from the Table' - Exit(12) - End - - $tmprec = Substr($tablerec.$tbl,2) ; - $PositionSpclChar = POS('-',$tmprec) ; - If $PositionSpclChar = 0 then, - $PositionSpclChar = POS('*',$tmprec) ; - $tmpreplaces = '-,.'$TableHeadingChar ; - $tmprec = TRANSLATE($tmprec,' ',$tmpreplaces); - $table_variables = strip($tmprec); - $Heading_Variable_count = WORDS($table_variables) ; - If $Heading_Variable_count /=, - Words(Substr($tablerec.$tbl,2)) then, - Do - Say 'Invalid table Heading:' $tablerec.$tbl - exit(12) - End - - $heading = Overlay(' ',$tablerec.$tbl,1); /* Space leading * */ - Do $pos = 1 to $Heading_Variable_count - $HeadingVariable = Word($table_variables,$pos) ; - $tmp = Wordindex($Heading,$pos) ; - $Starting_$position.$HeadingVariable = $tmp - $tmp = $tmp + Length(Word($Heading,$pos)) -1 ; - $Ending_$position.$HeadingVariable = $tmp - - /* Build ...pos variables and values */ - tmp = ""$HeadingVariable"pos =", - $Starting_$position.$HeadingVariable - Sa= tmp - Interpret tmp - - end; /* DO $pos = 1 to $Heading_Variable_count */ - - $Heading = Translate($Heading,' ','-*') - - Return ; - +/* REXX */ +/* */ +/* https://github.com/BroadcomMFD/broadcom-product-scripts */ +/* */ +/* This rexx is an optionally called subroutine. */ +/* It can help keep track of the status of each package shipment */ +/* by modifying the status field (St) on the Trigger file entry. */ +/* */ +/* Update the Trigger file at the completion of package shipment */ +/* Optionally use UPDTTGGR to reflect these status values: */ +/* _ means that the shipment entry is created */ +/* s means that the local shipment job has been submitted */ +/* S means that the remote shipment job has been submitted */ +/* / means that the shipment is completed (Notification job too) */ +/* 12 means that the shipment failed */ +/* */ + + trace Off + +/* Variable settings for each site ---> */ + WhereIam = WHERE@M1() + + interpret 'Call' WhereIam "'MyCLS2Library'" + MyCLS2Library = Result + Say 'Running UPDTTGGR in' MyCLS2Library + + interpret 'Call' WhereIam "'TriggerFileName'" + TriggerFileName = Result + + interpret 'Call' WhereIam "'MyDATALibrary'" + MyDATALibrary = Result + ShipRules = MyDATALibrary"(SHIPRULE)" + + interpret 'Call' WhereIam "'MySEN2Library'" + MySEN2Library = Result +/* <---- Variable settings for each site */ + +/* */ +/* This Rexx updates Trigger entries for a package just submitted */ +/* for package shipment. */ +/* It also checks for 'Transfer completed successfully' text */ +/* It is executed by a step in the #PSNFTPE shipment member . */ + + ARG Destination Calltype Package ; + + Jobnumb = '' ; /* replace if one is found */ + + If Calltype = '#PSNFTPE' then, + Do + /* Read the FTP output */ + MyRC= 0 ; + Call ScanFTPOutput ; + If MyRC > 0 then Exit(MyRC) ; + + If Jobnumb = '' then Exit(MyRC) ; + End /* If Calltype = '#PSNFTPE' */ + + If Calltype = 'NDMSCAN' then, + Do + /* Read the NDM output */ + MyRC= 0 ; + Call ScanNDMOutput ; + If MyRC > 0 then Exit(MyRC) ; + + If Jobnumb = '' then Exit(MyRC) ; + End /* If Calltype = '#PSNFTPE' */ + + Call AllocateTriggerForUpdate ; + Call UpdateTriggerEntry ; + Call FreeTriggerFile ; + +/* */ +/* All Done */ +/* */ + + Exit + +/* */ +/* Allocate the Rules member for Read only */ +/* */ + +ScanFTPOutput: + + "Execio * DISKR FTPOUT (Stem ftp. finis " + IF RC > 0 then EXIT(8) + If ftp.0 < 1 then EXIT(8) + + "Execio * DISKW OUTPUT (Stem ftp. finis " + + MyRC= 8 ; + Do f# = 1 to ftp.0 + ftp@ = Substr(ftp.f#,2) + w1 = Word(ftp@,1) + w2 = Word(ftp@,2) + w3 = Word(ftp@,3) + w4 = Word(ftp@,4) + if w2='Transfer' & w3='completed' & w4='Successfully' then, + Do + MyRC= 0 ; + Leave ; + End + w5 = Word(ftp@,5) + w6 = Word(ftp@,6) + w7 = Word(ftp@,7) + /* 250-It is known to JES as JOB32058 */ + if w3='known' & w4='to' & w5='JES' & w6='as' then, + Do + Jobnumb = w7; + MyRC= 0 ; + Leave ; + End + End ; /* Do f# = 1 to ftp.0 */ + + Return ; + +ScanNDMOutput: + + "Execio * DISKR NDMOUT (Stem ndm. finis " + IF RC > 0 then EXIT(8) + If ndm.0 < 1 then EXIT(8) + + "Execio * DISKW DMPRINT (Stem ndm. finis " + + MyRC= 8 ; + Do f# = 1 to ndm.0 + ndm@ = Substr(ndm.f#,2) + w1 = Word(ndm@,1) + w2 = Word(ndm@,2) + w3 = Word(ndm@,3) + w4 = Word(ndm@,4) + /* SUBMITTED PROCESS NUMBER 00068958 */ + if w2='SUBMITTED' & w3='PROCESS' & w4='NUMBER' then, + Do + Jobnumb = Word(ndm@,5) + MyRC= 0 ; + Leave ; + End + End ; /* Do f# = 1 to ndm.0 */ + + Return ; + +AllocateTriggerForUpdate: + + STRING = "ALLOC DD(TRIGGER)", + " DA('"TriggerFileName"') OLD REUSE" + seconds = '000005' /* Number of Seconds to wait if needed */ + + Do Forever /* or at least until the file is available */ + CALL BPXWDYN STRING; + MyRC = RC + MyResult = RESULT ; + If MyResult = 0 then Leave + Call WaitAwhile + End /* Do Forever */ + + Return ; + +UpdateTriggerEntry: + + + "Execio * DISKR TRIGGER (Stem $tablerec. finis " + + $tbl = 1 ; + $TableHeadingChar = '*' + /* Build all the ...pos variables from heading */ + Call Process_Trigger_Heading ; + + WeHaveAnUpdate = 'N' + Do t# = $tablerec.0 to 1 by -1 + Say 'Examining Trigger entry for ', + Substr($tablerec.t#,Packagepos,16), + Substr($tablerec.t#,Destinationpos,08) + Say ' for match with... ', + Left(Package,16) Left(Destination,08) + If (Calltype = '#PSNFTPE' & , + Substr($tablerec.t#,Stpos,01) /= 's') then iterate ; + If Substr($tablerec.t#,Packagepos,16) /=, + Left(Package,16) then iterate ; + If Substr($tablerec.t#,Destinationpos,08) /= , + Left(Destination,08) then iterate ; + /* We have a match */ + If Calltype = '#PSNFTPE' | Calltype = 'NDMSCAN' then, + Do + /* Update Job number */ + $tablerec.t# = Overlay(Jobnumb' ',$tablerec.t#,Jobnumbpos) + /* Update status */ + $tablerec.t# = Overlay('S',$tablerec.t#,Stpos) + End; + Else, + $tablerec.t# = Overlay(Calltype,$tablerec.t#,Stpos) ; + WeHaveAnUpdate = 'Y' + msg='Updating ... ', + Left(Package,16) Left(Destination,08) + If Jobnumb /= '' then msg = msg, + ' Submitted job' Jobnumb + Say msg ; + Leave ; + End /* Do t# = 1 to $tablerec. */ + + If WeHaveAnUpdate = 'Y' then, + "Execio * DISKW TRIGGER (Stem $tablerec. finis " + + Return ; + +/* */ +/* Free the Trigger File */ +/* */ + +FreeTriggerFile: + + STRING = "FREE DD(TRIGGER)" + CALL BPXWDYN STRING ; + + Return ; + +/* */ +/* Convert Date formats */ +/* */ + +WaitAwhile: + /* */ + /* A resource is unavailable. Wait awhile and try */ + /* accessing the resource again. */ + /* */ + /* The length of the wait is designated in the parameter */ + /* value which specifies a number of seconds. */ + /* A parameter value of '000003' causes a wait for 3 seconds. */ + /* */ + + seconds = Abs(seconds) + seconds = Trunc(seconds,0) + Say "Waiting for" seconds "seconds at " DATE(S) TIME() + + /* AOPBATCH and BPXWDYN are IBM programs */ + CALL BPXWDYN "ALLOC DD(STDOUT) DUMMY SHR REUSE" + CALL BPXWDYN "ALLOC DD(STDERR) DUMMY SHR REUSE" + CALL BPXWDYN "ALLOC DD(STDIN) DUMMY SHR REUSE" + + /* AOPBATCH and BPXWDYN are IBM programs */ + parm = "sleep "seconds + Address LINKMVS "AOPBATCH parm" + + Return + +Process_Trigger_Heading : +/* The subroutine below is modified from the TBL#TOOL */ + + $tbl = 1 ; + $TableHeadingChar = '*' + + $LastWord = Word($tablerec.$tbl,Words($tablerec.$tbl)); + If DATATYPE($LastWord) = 'NUM' then, + Do + Say 'Please remove sequence numbers from the Table' + Exit(12) + End + + $tmprec = Substr($tablerec.$tbl,2) ; + $PositionSpclChar = POS('-',$tmprec) ; + If $PositionSpclChar = 0 then, + $PositionSpclChar = POS('*',$tmprec) ; + $tmpreplaces = '-,.'$TableHeadingChar ; + $tmprec = TRANSLATE($tmprec,' ',$tmpreplaces); + $table_variables = strip($tmprec); + $Heading_Variable_count = WORDS($table_variables) ; + If $Heading_Variable_count /=, + Words(Substr($tablerec.$tbl,2)) then, + Do + Say 'Invalid table Heading:' $tablerec.$tbl + exit(12) + End + + $heading = Overlay(' ',$tablerec.$tbl,1); /* Space leading * */ + Do $pos = 1 to $Heading_Variable_count + $HeadingVariable = Word($table_variables,$pos) ; + $tmp = Wordindex($Heading,$pos) ; + $Starting_$position.$HeadingVariable = $tmp + $tmp = $tmp + Length(Word($Heading,$pos)) -1 ; + $Ending_$position.$HeadingVariable = $tmp + + /* Build ...pos variables and values */ + tmp = ""$HeadingVariable"pos =", + $Starting_$position.$HeadingVariable + Sa= tmp + Interpret tmp + + end; /* DO $pos = 1 to $Heading_Variable_count */ + + $Heading = Translate($Heading,' ','-*') + + Return ; + diff --git a/endevor/Field-Developed-Programs/Package-Automation/WHERE@M1.rex b/endevor/Field-Developed-Programs/Package-Automation/WHERE@M1.rex index a558465..bd2ea2f 100644 --- a/endevor/Field-Developed-Programs/Package-Automation/WHERE@M1.rex +++ b/endevor/Field-Developed-Programs/Package-Automation/WHERE@M1.rex @@ -1,5 +1,5 @@ -/* REXX */ -/* Names the member that contains your site-specific settings. */ -/* Override to another value if you prefer ---> */ - WhereIam = Strip(Left("@"MVSVAR(SYSNAME),8)) ; - Return (WhereIam) +/* REXX */ +/* Names the member that contains your site-specific settings. */ +/* Override to another value if you prefer ---> */ + WhereIam = Strip(Left("@"MVSVAR(SYSNAME),8)) ; + Return (WhereIam) diff --git a/endevor/Field-Developed-Programs/Package-Automation/WHEREIAM.rex b/endevor/Field-Developed-Programs/Package-Automation/WHEREIAM.rex index 40777fd..34062c2 100644 --- a/endevor/Field-Developed-Programs/Package-Automation/WHEREIAM.rex +++ b/endevor/Field-Developed-Programs/Package-Automation/WHEREIAM.rex @@ -1,5 +1,5 @@ -/* REXX */ -/* Names the member that contains your site-specific settings. */ - WhereIam = Strip(Left("@"MVSVAR(SYSNAME),8)) ; - Say 'WhereIam =' WhereIam - EXIT +/* REXX */ +/* Names the member that contains your site-specific settings. */ + WhereIam = Strip(Left("@"MVSVAR(SYSNAME),8)) ; + Say 'WhereIam =' WhereIam + EXIT diff --git a/endevor/Package-Shipping-Model-and-Script-Examples/JCLCOMMT.rex b/endevor/Package-Shipping-Model-and-Script-Examples/JCLCOMMT.rex deleted file mode 100644 index b013346..0000000 --- a/endevor/Package-Shipping-Model-and-Script-Examples/JCLCOMMT.rex +++ /dev/null @@ -1,24 +0,0 @@ -/* REXX */ -/* Can be used as an edit macro when editing a PROCESS or INC */ -/* or JCL */ -/* Just enter JCLCOMMT on the command line while in QuickEdit*/ -/* It gets the */ -/* name of the element and places the element name onto */ -/* each line that contains 'PGM=' and is blank in col 60. */ - ADDRESS ISREDIT - "ISREDIT MACRO " - ADDRESS ISPEXEC, - "VGET (ZSCREEN ZSCREENC ZSCREENI) SHARED" -/* ZSCREENI = Substr(ZSCREENI,161) */ - C1Element = Word(ZSCREENI,1) - If C1Element = 'File' then, - Do - ADDRESS ISREDIT " (MEMBER) = MEMBER " ; - C1Element = MEMBER - End - "EXCLUDE ALL" - "FIND 'PGM=' ALL " - "EXCLUDE P'@' 1 ALL " - "EXCLUDE ' ' 1 ALL " - "CHANGE p' ========' ' "C1Element"' 59 all nx" - Exit diff --git a/endevor/Package-Shipping-Model-and-Script-Examples/README.md b/endevor/Package-Shipping-Model-and-Script-Examples/README.md index 2ea5d1e..8d7197c 100644 --- a/endevor/Package-Shipping-Model-and-Script-Examples/README.md +++ b/endevor/Package-Shipping-Model-and-Script-Examples/README.md @@ -193,4 +193,11 @@ Lines 13 and 14 show the REXX code identifying where it is running. The **MVSVAR Engaging a "callable REXX" service may also be performed from other REXX programs, such as an Endevor REXX exit or from REXX zowe executions. -One final note about about the CSIQCLS0 variable. The variable is created brand new in the REXX portion of the C1BMXIN skeleton, and is used as an ISPF variable later on the TAILOR step. You can make variables like CSIQCLS0 be both an ISPF variable and a Table Tool variable, if it is included in the OPTIONS of the TAILOR step. \ No newline at end of file +One final note about about the CSIQCLS0 variable. The variable is created brand new in the REXX portion of the C1BMXIN skeleton, and is used as an ISPF variable later on the TAILOR step. You can make variables like CSIQCLS0 be both an ISPF variable and a Table Tool variable, if it is included in the OPTIONS of the TAILOR step. + + +## Find items at the these locations: + +**item Location** + +JCLCOMMT.rex - endevor\Field-Developed-Programs\ISPF-tools-for-Quick-Edit-and-Endevor diff --git a/endevor/README.md b/endevor/README.md index b746391..6e246da 100644 --- a/endevor/README.md +++ b/endevor/README.md @@ -13,11 +13,19 @@ This [sample repository](Field-Developed-Programs) contains artifacts created by ## Self-servicing Project Workareas in Endevor with Dynamic Environments This [sample repository](Self-servicing-Project-Workareas-in-Endevor-with-Dynamic-Environments) contains artifacts described in the [Self-servicing Project Workareas in Endevor with Dynamic Environments](https://medium.com/modern-mainframe/self-service-developer-workspaces-in-endevor-3b83c72bdc14) blog on Medium. The objects are sample processors for enabling self service with Dynamic Environments backed by Deferred File Creation. -## Shipments for a Single-Destination -This [sample repository](Shipments-for-a-Single-Destination) contains artifacts described in the [Automate Endevor Package Shipments with Zowe CLI](https://medium.com/zowe/automate-ca-endevor-package-shipments-with-zowe-cli-e15feb61745a) blog on Medium. The objects are used to initiate package shipments for an Endevor image that has only one Shipment destination. The installation steps are fewer and simpler than those necessary for Shipments-for-Multiple-Destinations. +## Automated Package Shipping Methods +There are three automated package shipping methods presented in this GitHub. All have some unique software components, but also share many software components with the other methods. Within the README files for each, look for the folder references where shared components may be found. -## Shipments for Multiple Destinations -This [sample repository](Shipments-for-Multiple-Destinations) contains artifacts described in the [Automate Endevor Package Shipments with Zowe CLI](https://medium.com/zowe/automate-ca-endevor-package-shipments-with-zowe-cli-e15feb61745a) blog on Medium. The objects are used to initiate package shipments for Endevor images that have multiple Shipment destinations. Zero to many package shipment destinations are determined, and shipment jobs are submitted based on each Endevor package content. +#### Package Automation (exit driven) +This [sample repository](https://github.com/BroadcomMFD/broadcom-product-scripts/tree/main/endevor/Field-Developed-Programs/Package-Automation) contains artifacts described in the [Package Automation - what are you waiting for?](https://community.broadcom.com/blogs/joseph-walther/2023/07/11/package-automation-what-are-you-waiting-for?CommunityKey=592eb6c9-73f7-460f-9aa9-e5194cdafcd2) blog on the Endevor community website. The objects are used to initiate automated package shipments from actions performed in Endevor, triggered by an Endevor package exit. + +Package Automation also my trigger package executions. + +#### Shipments for a Single-Destination (zowe) +This [sample repository](https://github.com/BroadcomMFD/broadcom-product-scripts/tree/main/endevor/Shipments-for-a-Single-Destination) contains artifacts described in the [Automate Endevor Package Shipments with Zowe CLI](https://medium.com/zowe/automate-ca-endevor-package-shipments-with-zowe-cli-e15feb61745a) blog on Medium. The objects are used to initiate package shipments from zowe for an Endevor image that has only one Shipment destination. The installation steps are fewer and simpler than those necessary for Shipments-for-Multiple-Destinations. + +#### Shipments for Multiple Destinations (zowe) +This [sample repository](https://github.com/BroadcomMFD/broadcom-product-scripts/tree/main/endevor/Shipments-for-Multiple-Destinations) contains artifacts described in the [Automate Endevor Package Shipments with Zowe CLI](https://medium.com/zowe/automate-ca-endevor-package-shipments-with-zowe-cli-e15feb61745a) blog on Medium. The objects are used to initiate package shipments from zowe for Endevor images that have multiple Shipment destinations. Zero to many package shipment destinations are determined, and shipment jobs are submitted based on each Endevor package content. ## Storing zUnit Artifacts in Endevor This [sample repository](zunit) contains the artifacts described in the [Modern Mainframe](https://medium.com/modern-mainframe) blog on Medium. The REXX scripts and corresponding JCL are used to serialize and deserialize zUnit test cases. Also included is a JenkinsFile that shows how these scripts can be invoked via Zowe CLI in a Jenkins pipeline. diff --git a/endevor/Shipments-for-Multiple-Destinations/@siteMult.rex b/endevor/Shipments-for-Multiple-Destinations (zowe)/@siteMult.rex similarity index 100% rename from endevor/Shipments-for-Multiple-Destinations/@siteMult.rex rename to endevor/Shipments-for-Multiple-Destinations (zowe)/@siteMult.rex diff --git a/endevor/Shipments-for-Multiple-Destinations/README.md b/endevor/Shipments-for-Multiple-Destinations (zowe)/README.md similarity index 79% rename from endevor/Shipments-for-Multiple-Destinations/README.md rename to endevor/Shipments-for-Multiple-Destinations (zowe)/README.md index 660ed24..c0a9ef5 100644 --- a/endevor/Shipments-for-Multiple-Destinations/README.md +++ b/endevor/Shipments-for-Multiple-Destinations (zowe)/README.md @@ -1,14 +1,14 @@ -# Shipments for Multiple Destinations -This procedure allows zowe commands to execute Endevor package shipments. For example: +# Zowe Shipments for Multiple Destinations +This procedure supports zowe commands to execute Endevor package shipments. For example: `zowe zos-tso issue command "PKGESHIP 'name-of-package'"` -The procedure is a more robust alternative to a simpler version, used when there is only one Endevor package shipment destination. +The procedure is a more robust alternative to a simpler zowe version, used when there is only one Endevor package shipment destination. Both procedures utilize mainframe REXX programs running under z/OSMF. Endevor web services is not required. As a result, these routines may operate on Endevor releases 16.0 and forward. -There are two significant differences in this robust solution compared to the simple version: +There are two significant differences in this zowe robust solution compared to the simple zowe version: 1) The site must maintain a table of expected package shipments. See the SHIPRULE.example. 2) Automated updates to a "Trigger" file, support Package Shipment scheduling and logging. @@ -81,3 +81,42 @@ Setup steps for the REXX-based objects for zowe package shipment automation: Note: Shipments are submitted from entries placed automatically onto the "Trigger" file. You can manually update the "Trigger" file to request package shipments. If you create a `SHIPRULE` that designates a future shipment, then you can use the `PULLTGGR` program within a step of a typical sweep job to submit package shipments in a timely manner, similar to the way package execution jobs are submitted. + +## Find items at the these locations: + +**item** Location + +**@siteMult.rex** - endevor\Shipments-for-Multiple-Destinations + endevor\Field-Developed-Programs\Package-Automation + +**BILDTGGR.rex** - endevor\Field-Developed-Programs\Package-Automation + +**IZUFNDVR.jcl** - endevor\Shipments-for-a-Single-Destination + +**PKGESHIP.rex** - endevor\Shipments-for-a-Single-Destination + +**PULLTGGR.rex** - endevor\Field-Developed-Programs\Package-Automation + +**SHIP#FTP.skl** - endevor\Field-Developed-Programs\Package-Automation + +**other models** - endevor\Field-Developed-Programs\Package-Automation + +**SHIPRULE** - endevor\Shipments-for-Multiple-Destinations + endevor\Field-Developed-Programs\Package-Automation + +**TBLUNLOD.rex** - endevor\Field-Developed-Programs\Package-Automation + +**Trigger** - endevor\Shipments-for-Multiple-Destinations + endevor\Field-Developed-Programs\Package-Automation + +**UPDTTGGR.rex** - endevor\Field-Developed-Programs\Package-Automation + +**WHERE@M1.rex** - endevor\Field-Developed-Programs\Package-Automation + +**WHEREAMI.rex** - endevor\Field-Developed-Programs\Package-Automation + +**JCLCOMMT.rex** - endevor\Field-Developed-Programs\ISPF-tools-for-Quick-Edit-and-Endevor + + + + + + + diff --git a/endevor/Shipments-for-Multiple-Destinations/SHIPRULE example.txt b/endevor/Shipments-for-Multiple-Destinations (zowe)/SHIPRULE example.txt similarity index 100% rename from endevor/Shipments-for-Multiple-Destinations/SHIPRULE example.txt rename to endevor/Shipments-for-Multiple-Destinations (zowe)/SHIPRULE example.txt diff --git a/endevor/Shipments-for-Multiple-Destinations/Trigger File example.txt b/endevor/Shipments-for-Multiple-Destinations (zowe)/Trigger File example.txt similarity index 100% rename from endevor/Shipments-for-Multiple-Destinations/Trigger File example.txt rename to endevor/Shipments-for-Multiple-Destinations (zowe)/Trigger File example.txt diff --git a/endevor/Shipments-for-Multiple-Destinations/BILDTGGR.rex b/endevor/Shipments-for-Multiple-Destinations/BILDTGGR.rex deleted file mode 100644 index 3602d29..0000000 --- a/endevor/Shipments-for-Multiple-Destinations/BILDTGGR.rex +++ /dev/null @@ -1,850 +0,0 @@ -/* REXX */ -/* From Rules info, update Trigger file for each expected shipment */ - - /* If a DDNAME of BILDTGGR is allocated, then Trace */ - WhatDDName = 'BILDTGGR' - CALL BPXWDYN "INFO FI("WhatDDName")", - "INRTDSN(DSNVAR) INRDSNT(myDSNT)" - if Substr(DSNVAR,1,1) /= ' ' then TraceRc = 1; - IF TraceRc = 1 then Trace R - -/* Variable settings for each site ---> */ - /* Determine the DSORG for TriggerFileNAme */ - /* x = LISTDSI("'"TriggerFileName"'" RECALL ); */ - TriggerFileDsorg = 'PS' ; /* VS / PS .... */ - - WhereIam = WHERE@M1() - - interpret 'Call' WhereIam "'MyCLS2Library'" - MyCLS2Library = Result - Say 'Running BILDTGGR in' MyCLS2Library - - interpret 'Call' WhereIam "'TriggerFileName'" - TriggerFileName = Result - - interpret 'Call' WhereIam "'MyDATALibrary'" - MyDATALibrary = Result - ShipRules = MyDATALibrary"(SHIPRULE)" - - interpret 'Call' WhereIam "'MySEN2Library'" - MySEN2Library = Result -/* <---- Variable settings for each site */ - -/* */ -/* This Rexx creates Trigger entrires for a package just executed. */ -/* It is called by the Endevor exit program C1UEXT07 */ -/* */ -/* */ - STRING = "ALLOC DD(SYSTSPRT) SYSOUT(A) " - CALL BPXWDYN STRING; - - /* Do not allow the Trace to start until after the allocation - above for SYSTSPRT. - */ - - ARG Parms ; - -/* if called by zowe, then this is the Argument .... */ - If Length(Parms) < 18 then, - Do - Package = Translate(Parms,' ',"'") - Package = Strip(Package) - Say Length(Package) Package - End /* If Length(Parms) < 18 */ - Else - Do - /* if called by exit, then these are the Arguments.... */ - Notes.7 = Substr(PARMS,414,60) ; - If Substr(Notes.7,1,5) = 'TRACE' then Trace r - Package = Substr(PARMS,1,16) ; -/* No longer attempting to leverage promotion packages - Environ = Substr(PARMS,18,08) ; - pkgStage = Substr(PARMS,27,01) ; */ - CREATE_USER = Substr(PARMS,29,08) ; - UPDATE_USER = Substr(PARMS,37,08) ; - CAST_USER = Substr(PARMS,45,08) ; - Notes.1 = Substr(PARMS,054,60) ; - Notes.2 = Substr(PARMS,114,60) ; - Notes.3 = Substr(PARMS,174,60) ; - Notes.4 = Substr(PARMS,234,60) ; - Notes.5 = Substr(PARMS,294,60) ; - Notes.6 = Substr(PARMS,354,60) ; - Notes.7 = Substr(PARMS,414,60) ; - Notes.8 = Substr(PARMS,474,60) ; - ShipOutput = Substr(PARMS,584,03) ; - End /* Else */ - - - Userid = CAST_USER ; - MyRC = 0 ; - /* Intitialize a list of shipments for this package */ - Shipment_List = '' - - - /* Install Date 06 JUN 2013 15:22 */ - /* ----+----1----+----2----+----3-- */ - - rulSt = '_' - InstallDate = Word(Notes.8,5) ; - - If InstallDate = '' | Word(Notes.8,1) /= 'SHIP' then, - Do - InstallDate = DATE('S') - InstallTime = '0000' - rulSt = 'R' ; /* This Trigger file entry to be Reviewed */ - End - Else, - Do - InstallTime = Word(Notes.8,6) ; - InstallTime = Substr(Installtime,1,2) || Substr(Installtime,4) - ListMonths =, - "JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC" ; - mon = Substr(InstallDate,3,3) ; - mon#= Right(Wordpos(mon,ListMonths),2,'0') ; - year = Substr(InstallDate,6) - Century = '20' ; - day = Substr(InstallDate,1,2) ; - InstallDate = Century || year || mon# || day - End - - Call DateConvert ; - - /* Capture Content of Rules into Rexx Stem array format */ - Call AllocateandReadRules; - if TraceRc = 1 then Trace r - $rulHeading_Variable_count = Words($heading.SHIPRULE) - -/* Examine Package actions and */ -/* compare each against the Rules stem array data */ -/* make an entry into the ImmediateTrigger stem array */ -/* Do one of these: - Call APIALSUM_For_Package_Target_Info ; - -- or --- - Call CSV_to_List_Package_Actions - **Note CSV_to_List_Package_Actions has a timing problem - on the 18.0.12 release. The package shows it is not yet - Executed. Use APIALSUM_For_Package_Target_Info -*/ - Call CSV_to_List_Package_Actions - - sa = ElmEnvironment ElmStage - - If Words(Shipment_List) > 0 then, - Do - Call FreeTriggerFile ; - Say 'BILDTGGR: Found these destinations -' Shipment_List - Exit(1) - End -/* */ -/* All Done */ -/* */ - Exit(0) - -/* */ -/* Allocate the Rules member for Read only */ -/* */ - -AllocateandReadRules: - - If TraceRc = 1 then Say 'AllocateandReadRules+ ' - /* Call utility to get SHIPRULE details */ - /* Save ShipRule in stem array data */ - Call TBLUNLOD ShipRules "ALL" - - LastRecord.T#SYSTMS = 0 - /* Capture results from utility */ - qtotal = QUEUED() - Trace Off - - /* Capture contents of ShipRule table */ - Value.SHIPRULE = ' ' - Do q# = 1 to qtotal - Parse Pull something - If TraceRc = 1 then Say "Rules+" something - interpret something - End; - - Return ; - -/* */ -/* Convert Date formats */ -/* */ - -AllocateTriggerForMod: - - STRING = "ALLOC DD(TRIGGER)", - " DA('"TriggerFileName"') MOD REUSE" - seconds = '000005' /* Number of Seconds to wait if needed */ - - Do Forever /* or at least until the file is available */ - CALL BPXWDYN STRING; - MyResult = RESULT ; - If MyResult = 0 then Leave - Say 'BILDTGGR is waiting for' TriggerFileName - Call WaitAwhile - End /* Do Forever */ - - Return ; - -CreateNewTriggerEntry: - - If TraceRc = 1 then Say 'CreateNewTriggerEntry+ ' - If TraceRc = 1 then Trace r - Jobnumber = ' '; -/* Time = TIME() - Time = Substr(Time,1,2) || Substr(Time,4,2) */ - Time = rulTime ; - - Say 'My_BILDTGGR Creating new Trigger file Entry' - rulAdjustDate = Strip(rulAdjustDate,'L','+') ; - rulAdjustDate = Strip(rulAdjustDate) - #days = DATE('B') - #days = DATE('B',InstallDate,'S') ; - if rulAdjustDate < '0' then rulAdjustDate = '0' - #days = #days + rulAdjustDate ; - TriggerDate = DATE('S',#days,'B') ; - Date = DATE('S',#days,'B') ; - - Trigger = Copies(' ',400) ; - - $Heading_TriggerVar_count = WORDS($trigger_variables) ; - Do $pos = 1 to $Heading_TriggerVar_count - $HeadingVariable = Word($trigger_variables,$pos) ; - /* Build ...pos variables and values */ - - tmp = "Trigger = Overlay(", - $HeadingVariable",Trigger,"$HeadingVariable"pos)" - - Sa= tmp - Interpret tmp - end; /* DO $pos = 1 to $Heading_TriggerVar_count */ - - Sa= Trigger - - Push Trigger - - "EXECIO 1 DISKW TRIGGER (FINIS" - - Trace Off - Return ; - - -FreeTriggerFile: - - STRING = "FREE DD(TRIGGER)" - CALL BPXWDYN STRING; - - Return ; - -/* */ -/* Convert Date formats */ -/* */ - -DateConvert: - - /* Date may be in this format 6/15/2013 */ - tmpdate = Translate(InstallDate,' ','/') ; - If Wordlength(tmpdate,1) < '4' then do - InstallDatenumeric = Word(tmpdate,3) ||, - Right(Word(tmpdate,1),2,'0') ||, - Word(tmpdate,2) ; - end - else do - InstallDatenumeric = Word(tmpdate,1) || , - Word(tmpdate,2) ||, - Word(tmpdate,3) ; - end - Return - - if Substr(InstallDate,1,1) = '0' then - InstallDate = Substr(InstallDate,2) - MONTHSLISTUPPER = 'JAN FEB MAR APR MAY JUN JUL AUG SEP NOV DEC' - monthslistlower = 'Jan Feb Mar Apr May Jun Jul Aub Sep Nov Dec' - MONTHUPPER = Word(InstallDate,2) ; - pos = Wordpos(MONTHUPPER,MONTHSLISTUPPER) - monthlower = Word(monthslistlower,pos) ; - InstallDate = Word(InstallDate,1) monthlower Word(InstallDate,3) - - InstallDatenumeric = DATE(S,InstallDate) - Sa= InstallDate InstallDatenumeric - - Return - -WaitAwhile: - /* */ - /* A resource is unavailable. Wait awhile and try */ - /* accessing the resource again. */ - /* */ - /* The length of the wait is designated in the parameter */ - /* value which specifies a number of seconds. */ - /* A parameter value of '000003' causes a wait for 3 seconds. */ - /* */ - - seconds = Abs(seconds) - seconds = Trunc(seconds,0) - Say "Waiting for" seconds "seconds at " DATE(S) TIME() - - /* AOPBATCH and BPXWDYN are IBM programs */ - CALL BPXWDYN "ALLOC DD(STDOUT) DUMMY SHR REUSE" - CALL BPXWDYN "ALLOC DD(STDERR) DUMMY SHR REUSE" - CALL BPXWDYN "ALLOC DD(STDIN) DUMMY SHR REUSE" - - /* AOPBATCH and BPXWDYN are IBM programs */ - parm = "sleep "seconds - Address LINKMVS "AOPBATCH parm" - - Return - -InitializeValuesFromRules: - Sa= InitializeValuesFromRules - Do $pos = 1 to $rulHeading_Variable_count - $rulHeadingVariable = Word(Rul$table_variables,$pos) ; - $start = $rulStarting_$position.$rulHeadingVariable - $stop = $rulEnding_$position.$rulHeadingVariable - $len = $stop - $start + 1; - /* Assign values from the rules record */ - tmp = $rulHeadingVariable" =", - "Strip(Substr(rules.rul#,"$start","$len"))" - Sa= tmp - Sa= Value($rulHeadingVariable) - Interpret tmp - - end; /* DO $pos = 1 to $rulHeading_Variable_count */ - - Return ; - -Process_Trigger_Heading : - - "EXECIO 1 DISKR TRIGGER (Stem $tablerec. FINIS" -/* Get layout of TRIGGER file from heading */ - -/* The subroutine below is modified from the TBL#TOOL */ - - $tbl = 1 ; - $TableHeadingChar = '*' - - $LastWord = Word($tablerec.$tbl,Words($tablerec.$tbl)); - If DATATYPE($LastWord) = 'NUM' then, - Do - Say 'Please remove sequence numbers from the Table' - Exit(12) - End - - $tmprec = Substr($tablerec.$tbl,2) ; - $PositionSpclChar = POS('-',$tmprec) ; - If $PositionSpclChar = 0 then, - $PositionSpclChar = POS('*',$tmprec) ; - $tmpreplaces = '-,.'$TableHeadingChar ; - $tmprec = TRANSLATE($tmprec,' ',$tmpreplaces); - $table_variables = strip($tmprec); - $Heading_Variable_count = WORDS($table_variables) ; - If $Heading_Variable_count /=, - Words(Substr($tablerec.$tbl,2)) then, - Do - Say 'Invalid table Heading:' $tablerec.$tbl - exit(12) - End - - $heading = Overlay(' ',$tablerec.$tbl,1); /* Space leading * */ - Do $pos = 1 to $Heading_Variable_count - $HeadingVariable = Word($table_variables,$pos) ; - $tmp = Wordindex($Heading,$pos) ; - $Starting_$position.$HeadingVariable = $tmp - $tmp = $tmp + Length(Word($Heading,$pos)) -1 ; - $Ending_$position.$HeadingVariable = $tmp - - /* Build ...pos variables and values */ - tmp = ""$HeadingVariable"pos =", - $Starting_$position.$HeadingVariable - Sa= tmp - Interpret tmp - - end; /* DO $pos = 1 to $Heading_Variable_count */ - - $Heading = Translate($Heading,' ','-*') - $trigger_variables = $Heading - - Return ; - -APIALSUM_For_Package_Target_Info: - - SA= "GETTING CURRENT LOCATIONS FROM ENDEVOR" ; - - STRING = "ALLOC DD(BSTAPI) SYSOUT(A) " - CALL BPXWDYN STRING; - STRING = "ALLOC DD(BSTERR) SYSOUT(A) " - CALL BPXWDYN STRING; - STRING = "ALLOC DD(C1MSGS1) SYSOUT(A) " - CALL BPXWDYN STRING; - STRING = "ALLOC DD(C1MSGS2) SYSOUT(A) " - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(APILIST) LRECL(2048) BLKSIZE(22800) ", - " DSORG(PS) ", - " SPACE(5,5) RECFM(V,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(APIMSGS) LRECL(133) BLKSIZE(13300) ", - " DSORG(PS) ", - " SPACE(1,1) RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - -/*parm = 'DDN:STEPLIB,APIALSUM,'Package */ -/* */ -/*ADDRESS LINKMVS 'CONCALL' "parm" */ - - ADDRESS LINKMVS 'APIALSUM' Package - - "EXECIO * DISKR APILIST (STEM pkglst. finis" - IF pkglst.0 = 0 then, - Do - Say 'Package' Package ' is not-found or not-CAST ' - Exit(8) - End; - - STRING = "FREE DD(BSTAPI)" - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTERR) " - CALL BPXWDYN STRING; - STRING = "FREE DD(C1MSGS1) " - CALL BPXWDYN STRING; - STRING = "FREE DD(C1MSGS2) " - CALL BPXWDYN STRING; - - sa= pkglst.1 - /* Get Target Endevor info */ - - ALSUM_RS_TENV = Substr(pkglst.1,304,008) - ElmEnvironment = ALSUM_RS_TENV - If ElmEnvironment = ' ' then - Do - ALSUM_RS_SENV = Substr(pkglst.1,191,008) - ALSUM_RS_SSTGI= Substr(pkglst.1,234,001) - ALSUM_RS_SSYS = Substr(pkglst.1,199,008) - ALSUM_RS_SSBS = Substr(pkglst.1,207,008) - Sa= 'Messages from BILDTGGR:' - ElmEnvironment = ALSUM_RS_SENV - ElmStage = ALSUM_RS_SSTGI - ElmSystem = ALSUM_RS_SSYS - ElmSubsys = ALSUM_RS_SSBS - End - Else, - Do - ALSUM_RS_TSTGI= Substr(pkglst.1,347,001) - ALSUM_RS_TSYS = Substr(pkglst.1,312,008) - ALSUM_RS_TSBS = Substr(pkglst.1,320,008) - Sa= 'Messages from BILDTGGR:' - ElmEnvironment = ALSUM_RS_TENV - ElmStage = ALSUM_RS_TSTGI - ElmSystem = ALSUM_RS_TSYS - ElmSubsys = ALSUM_RS_TSBS - End - - If Substr(Description,1,12) = 'Deployed to ' |, - Substr(Description,1,12) = 'DEPLOYED TO ' then, - ElmSystem = ALSUM_RS_TSBS - ALSUM_RS_TTYP = Substr(pkglst.1,330,008) - - sa= pkglst.2 - sa= pkglst.3 - sa= pkglst.4 - - STRING = "FREE DD(APIMSGS)" - CALL BPXWDYN STRING; - STRING = "FREE DD(APILIST)" - CALL BPXWDYN STRING; - - Return ; - -CSV_to_List_Package_Actions: - - /* To Search the package shipping table, we need the Entry */ - /* Environment information as a search criteria. */ - /* Get it from the USER-DATA field on the 1st element. */ - - STRING = "ALLOC DD(C1MSGS1) DUMMY " - CALL BPXWDYN STRING; - STRING = "ALLOC DD(BSTERR) DUMMY " - CALL BPXWDYN STRING; - STRING = "ALLOC DD(BSTAPI) DUMMY " - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(EXTRACTM) LRECL(4000) BLKSIZE(32000) ", - " DSORG(PS) ", - " SPACE(1,5) RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(BSTIPT01) LRECL(80) BLKSIZE(800) ", - " DSORG(PS) ", - " SPACE(1,5) RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - QUEUE "LIST PACKAGE ACTION FROM PACKAGE '"Package"'" - QUEUE " TO DDNAME 'EXTRACTM' " - QUEUE " ." - - "EXECIO" QUEUED() "DISKW BSTIPT01 (FINIS "; - - ADDRESS LINK 'BC1PCSV0' ; /* load from authlib */ - -/* ADDRESS TSO 'ISRDDN' */ - call_rc = rc ; - - "EXECIO * DISKR EXTRACTM (STEM CSV. finis" - - STRING = "FREE DD(EXTRACTM)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTIPT01)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(C1MSGS1)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTERR)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTAPI)" ; - CALL BPXWDYN STRING; - /* To Search the package action data in CSV format. */ - /* Identify matches with Rules file, determining Ship Dests */ - - IF CSV.0 < 2 THEN RETURN; - - /* CSV data heading - showing CSV variables */ - $table_variables= Strip(CSV.1,'T') - - $table_variables = translate($table_variables,"_"," ") ; - $table_variables = translate($table_variables," ",',"') ; - $table_variables = translate($table_variables,"@","/") ; - $table_variables = translate($table_variables,"@",")") ; - $table_variables = translate($table_variables,"@","(") ; - - Do rec# = 2 to CSV.0 - $detail = CSV.rec# - Drop SBS_NAME_@T@ - - Trace Off - /* Parse the Detail record until done */ - Do $column = 1 to Words($table_variables) - Call ParseDetailCSVline - End - - If TraceRc = 1 then Trace r - IF Substr(ENV_NAME_@T@,1,1) = ' ' then, - Do - ENV_NAME_@T@ = ENV_NAME_@S@ ; - STG_#_@T@ = STG_#_@S@ ; - STG_NAME_@T@ = STG_NAME_@S@ ; - STG_ID_@T@ = STG_ID_@S@ ; - SYS_NAME_@T@ = SYS_NAME_@S@ ; - SBS_NAME_@T@ = SBS_NAME_@S@ ; - TYPE_NAME_@T@ = TYPE_NAME_@S@ - End - IF Substr(SBS_NAME_@T@,1,1) = ' ' then, - SBS_NAME_@T@ = SBS_NAME_@S@ ; - Say 'ELM='ELM_@S@, - 'ENV_NAME='ENV_NAME_@T@, - 'pkgStage='STG_#_@T@, - 'SYS_NAME='SYS_NAME_@T@, - 'SBS_NAME='SBS_NAME_@T@, - 'TYPE_NAME='TYPE_NAME_@S@, - 'ELM_ACT='ELM_ACT - pkgStage = STG_ID_@T@ - - If TraceRc = 1 then Trace r - Sa= 'Messages from BILDTGGR:' - pkgElement = ELM_@S@ - pkgEnvironment = ENV_NAME_@T@ - pkgStage = STG_ID_@T@ - pkgSystem = SYS_NAME_@T@ - pkgSubsys = SBS_NAME_@T@ - pkgType = TYPE_NAME_@T@ - Trace Off - RuleMatch = 'N' - Call DoesCSVMatchRule; -/* If Length(pkgStage) = 1 then leave; */ - End; /* Do rec# = 1 to CSV.0 */ - - RETURN ; - -DoesCSVMatchRule: - - If TraceRc = 1 then Say 'DoesCSVMatchRule+ ' - - Do rul# = 2 to LastRecord.SHIPRULE - - If TraceRc = 1 then TRACE R - Say 'BILDTGGR: Comparing pkg with rul#' rul# pkgElement, - pkgEnvironment pkgStage pkgSystem - - Drop Environment ; - rulEnvironment = Value.SHIPRULE.Environment.rul# - If TestMatch(pkgEnvironment,rulEnvironment) /= 1 then Iterate; - Environment = pkgEnvironment - - Drop Stage - rulStage = Value.SHIPRULE.Stage.rul# - If TestMatch(pkgStage,rulStage) /= 1 then Iterate; - Stage = pkgStage - - Drop System - rulSystem= Value.SHIPRULE.System.rul# - If TestMatch(pkgSystem,rulSystem) /= 1 then Iterate; - System = pkgSystem - - Drop Subsys - rulSubsys= Value.SHIPRULE.Subsys.rul# - If TestMatch(pkgSubsys,rulSubsys) /= 1 then Iterate; - Subsys = pkgSubsys - -/* - Drop Type - rulType = Value.SHIPRULE.Type.rul# - If TestMatch(pkgType,rulType) /= 1 then Iterate; - Type = pkgType - - Drop Element ElmPrefx - rulElmPrefx= Value.SHIPRULE.ElmPrefx.rul# - If TestMatch(pkgElement,rulElmPrefx) /= 1 then Iterate; - Element = pkgElement -*/ - - Drop Destination - newDestination= Value.SHIPRULE.Destination.rul# - If TraceRc = 1 then, - Say 'found newDestination=' newDestination - - if Length(newDestination) > 7 |, - Pos('.',newDestination) > 0 |, - Wordpos(newDestination,Shipment_List) > 0 then, - Iterate ; - - Shipment_List = newDestination Shipment_List - If TraceRc = 1 then, - Say 'Shipment_List =' Shipment_List - - /* If finding first destination for shipping */ - /* then, allocate Trigger file for DISP=MOD */ - If Words(Shipment_List) = 1 then, - Do - Call AllocateTriggerForMod - Call Process_Trigger_Heading - End - - Destination = newDestination - - Drop Date - rulAdjustDate = Value.SHIPRULE.Date.rul# - If TraceRc = 1 then, - Say 'found rulAdjustDate =' rulAdjustDate - Drop Time - rulTime = Value.SHIPRULE.Time.rul# - If TraceRc = 1 then, - Say 'found rulTime =' rulTime - - - /* Capture remaining values from Rules file .. */ - AlreadyAssigned =, - 'Environment Stage System Subsys ', - 'Type Destination Element Date Time ' - Do w# = 1 to Words($heading.SHIPRULE) - rulWord = Word($heading.SHIPRULE,w#) - If Wordpos(rulWord,AlreadyAssigned) > 0 then iterate; - tmp = "Drop" rulWord - interpret tmp - rulValue = Value(Value.SHIPRULE.rulWord.rul#) - If Substr(rulValue,1,15) = 'VALUE.SHIPRULE.' then, - rulValue = ' ' - tmp = rulWord "= '"rulValue"'" - If TraceRc = 1 then, - say 'From Rules+' tmp - interpret tmp - End - - /* Variables are now assigned values either from */ - /* the Endevor package or from the Rules File */ - Call CreateNewTriggerEntry - - If TraceRc = 1 then Trace r - /* If the package shipment can be done now.... */ - /* Set the return code to 1 .... */ - Drop Date - rulDate = Value.SHIPRULE.Date.rul# - if rulDate = ' ' | Length(rulDate) > 5 then, - rulDate = '+0' - if rulTime = ' ' | Length(rulTime) > 5 then, - rulTime = '0000' - If rulDate = '+0' & rulTime = '0000' then, - MyRC = 1 ; - - End; /* Do rul# = 2 to LastRecord.SHIPRULE */ - - RETURN ; - -TestMatch: - - Arg String,Mask ; - - If Mask = '*' then Return(1) - Mask = Strip(Mask,'T',"*") - lenMask = Length(Mask) - Return ABBREV(String,Mask) - -/* */ -/* Allocate the Trigger File for MOD update */ -/* */ - -CSV_to_List_Package_Actions: - - /* To Search the package shipping table, we need the Entry */ - /* Environment information as a search criteria. */ - /* Get it from the USER-DATA field on the 1st element. */ - - - STRING = "ALLOC DD(C1MSGS1) DUMMY " - CALL BPXWDYN STRING; - STRING = "ALLOC DD(BSTERR) DUMMY " - CALL BPXWDYN STRING; - STRING = "ALLOC DD(BSTAPI) DUMMY " - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(EXTRACTM) LRECL(4000) BLKSIZE(32000) ", - " DSORG(PS) ", - " SPACE(1,5) RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(BSTIPT01) LRECL(80) BLKSIZE(800) ", - " DSORG(PS) ", - " SPACE(1,5) RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - QUEUE "LIST PACKAGE ACTION FROM PACKAGE '"Package"'" - QUEUE " TO DDNAME 'EXTRACTM' " - QUEUE " ." - - "EXECIO" QUEUED() "DISKW BSTIPT01 (FINIS "; - - ADDRESS LINK 'BC1PCSV0' ; /* load from authlib */ - -/* ADDRESS TSO 'ISRDDN' */ - call_rc = rc ; - - "EXECIO * DISKR EXTRACTM (STEM API. finis" - - STRING = "FREE DD(EXTRACTM)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTIPT01)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(C1MSGS1)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTERR)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTAPI)" ; - CALL BPXWDYN STRING; - - IF API.0 < 2 THEN RETURN; - - $table_variables= Strip(API.1,'T') - - $table_variables = translate($table_variables,"_"," ") ; - $table_variables = translate($table_variables," ",',"') ; - $table_variables = translate($table_variables,"@","/") ; - $table_variables = translate($table_variables,"@",")") ; - $table_variables = translate($table_variables,"@","(") ; - - Do rec# = 2 to API.0 - $detail = API.rec# - - /* Parse the Detail record until done */ - Do $column = 1 to Words($table_variables) - Call ParseDetailCSVline - End - - IF Substr(ENV_NAME_@T@,1,1) = ' ' then, - Do - ENV_NAME_@T@ = ENV_NAME_@S@ ; - STG_#_@T@ = STG_#_@S@ ; - STG_NAME_@T@ = STG_NAME_@S@ ; - STG_ID_@T@ = STG_ID_@S@ ; - SYS_NAME_@T@ = SYS_NAME_@S@ ; - SBS_NAME_@T@ = SBS_NAME_@S@ ; - End - IF Substr(SBS_NAME_@T@,1,1) = ' ' then, - SBS_NAME_@T@ = SBS_NAME_@S@ ; - Say 'ELM='ELM_@S@, - 'ENV_NAME='ENV_NAME_@T@, - 'STAGE='STG_#_@T@, - 'SYS_NAME='SYS_NAME_@T@, - 'SBS_NAME='SBS_NAME_@T@, - 'TYPE_NAME='TYPE_NAME_@S@, - 'ELM_ACT='ELM_ACT - Stage = STG_ID_@T@ - - Trace r - Sa= 'Messages from BILDTGGR:' - ElmEnvironment = ENV_NAME_@T@ - ElmStage = STG_ID_@T@ - ElmSystem = SYS_NAME_@T@ - ElmSubsys = SBS_NAME_@T@ - Trace Off - If Length(Stage) = 1 then leave; - End; /* Do rec# = 1 to API.0 */ - - RETURN ; - -ParseDetailCSVline: - - /* Find the data for the current $column */ - - $dlmchar = Substr($detail,1,1); - - If $dlmchar = "'" then, - Do - SA= 'parsing with single quote ' - PARSE VAR $detail "'" $temp_value "'" $detail ; - If Substr($detail,1,1) = ',' then, - $detail = Strip(Substr($detail,2),'L') - End - Else, - If $dlmchar = '"' then, - Do - SA= 'parsing with double quote ' - PARSE VAR $detail '"' $temp_value '"' $detail ; - If Substr($detail,1,1) = ',' then, - $detail = Strip(Substr($detail,2),'L') - End - Else, - If $dlmchar = ',' then, - Do - SA= 'parsing with comma ' - PARSE VAR $detail ',' $temp_value ',' $detail ; - If Substr($detail,1,1)/= ',' then, - $detail = "," || $detail - $detail = Strip(Substr($detail,2),'L') */ - End - Else, - If Words($detail) = 0 then, - $temp_value = ' ' - Else, - Do - SA= 'parsing with comma ' - PARSE VAR $detail $temp_value ',' $detail ; - Sa= '$temp_value=>' $temp_value '<' - End - $temp_value = STRIP($temp_value) ; - $rslt = $temp_value - $rslt = Strip($rslt,'B','"') ; - $rslt = Strip($rslt,'B',"'") ; - if Length($rslt) < 1 then $rslt = ' ' - if Length($rslt) < 250 then, - $temp = WORD($table_variables,$column) '= "'$rslt'"'; - Else, - $temp = WORD($table_variables,$column) "=$rslt" - INTERPRET $temp; - If rec# < 3 then Say $temp - - RETURN ; - diff --git a/endevor/Shipments-for-Multiple-Destinations/IZUFNDVR.jcl b/endevor/Shipments-for-Multiple-Destinations/IZUFNDVR.jcl deleted file mode 100644 index 06859ca..0000000 --- a/endevor/Shipments-for-Multiple-Destinations/IZUFNDVR.jcl +++ /dev/null @@ -1,53 +0,0 @@ -//IZUFPROC PROC ROOT='/usr/lpp/zosmf' /* zOSMF INSTALL ROOT */ -// EXPORT SYMLIST=(XX) -// SET QT='''' -// SET XX=&QT.&ROOT.&QT. -//IZUFPROC EXEC PGM=IKJEFT01,DYNAMNBR=200,REGION=0M -//****************************************************************/ -//* TSO LOGON PROC FOR Z/OS DATA SET AND FILE REST INTERFACE */ -//* and Endevor access */ -//* */ -//* PROPRIETARY STATEMENT: */ -//* */ -//* LICENSED MATERIALS - PROPERTY OF IBM */ -//* 5650-ZOS */ -//* COPYRIGHT IBM CORP. 2014, 2016 */ -//* STATUS = HSMA220 */ -//****************************************************************/ -//* -//STEPLIB DD DISP=SHR,DSN=SHARE.NDVR.R181.CSIQAUTU **added** -// DD DISP=SHR,DSN=SHARE.NDVR.R181.CSIQAUTH **added** -// DD DISP=SHR,DSN=SHARE.NDVR.R181.CSIQLOAD **added** -//CONLIB DD DISP=SHR,DSN=SHARE.NDVR.R181.CSIQLOAD **added** -//* -//SYSEXEC DD DISP=SHR,DSN=PSP.ENDV.TEAM.REXX **added** -// DD DISP=SHR,DSN=ISP.SISPEXEC -// DD DISP=SHR,DSN=SYS1.SBPXEXEC -// DD DISP=SHR,DSN=ISF.SISFEXEC -//SYSHELP DD DISP=SHR,DSN=SYS1.HELP -// DD DISP=SHR,DSN=ISF.SISFHELP -//ISPLLIB DD DISP=SHR,DSN=SYS1.SIEALNKE -// DD DISP=SHR,DSN=ISP.SISPLOAD -//SYSPROC DD DISP=SHR,DSN=PSP.ENDV.TEAM.REXX **added** -// DD DISP=SHR,DSN=UKDEMO.MC66.COMMON.CLIST -// DD DISP=SHR,DSN=SHARE.NDVR.R181.CSIQCLS0 -// DD DISP=SHR,DSN=ISP.SISPCLIB -// DD DISP=SHR,DSN=SYS1.SBPXEXEC -//ISPPLIB DD DISP=SHR,DSN=ISP.SISPPENU -// DD DISP=SHR,DSN=ISF.SISFPLIB -//ISPTLIB DD RECFM=FB,LRECL=80,SPACE=(TRK,(1,0,1)) -// DD DISP=SHR,DSN=ISP.SISPTENU -// DD DISP=SHR,DSN=ISF.SISFTLIB -//ISPSLIB DD DISP=SHR,DSN=PSP.ENDV.TEAM.ISPSLIB -// DD DISP=SHR,DSN=ISP.SISPSENU -// DD DISP=SHR,DSN=ISF.SISFSLIB -//ISPMLIB DD DISP=SHR,DSN=ISP.SISPMENU -// DD DISP=SHR,DSN=ISF.SISFMLIB -//IZUSRVMP DD PATH='&ROOT./defaults/izurf.tsoservlet.mapping.json' -//SYSOUT DD SYSOUT=* -//SYSPRINT DD SYSOUT=* **added** -//SYSTSPRT DD SYSOUT=* **added** -//CEEDUMP DD SYSOUT=H -//SYSUDUMP DD SYSOUT=H -//ISPPROF DD DISP=NEW,UNIT=SYSDA,SPACE=(TRK,(15,15,5)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120) diff --git a/endevor/Shipments-for-Multiple-Destinations/PKGESHIP.rex b/endevor/Shipments-for-Multiple-Destinations/PKGESHIP.rex deleted file mode 100644 index 87eaf9a..0000000 --- a/endevor/Shipments-for-Multiple-Destinations/PKGESHIP.rex +++ /dev/null @@ -1,540 +0,0 @@ -/* REXX */ -/* THESE ROUTINES ARE DISTRIBUTED BY THE CA TECHNOLOGIES STAFF - "AS IS". NO WARRANTY, EITHER EXPRESSED OR IMPLIED, IS MADE - FOR THEM. CA TECHNOLOGIES CANNOT GUARANTEE THAT THE ROUTINES - ARE ERROR FREE, OR THAT IF ERRORS ARE FOUND, THEY WILL BE - CORRECTED. -*/ -/* - This REXX submits automatically 0 or more package shipping - jobs. -*/ -/* WRITTEN BY DAN WALTHER */ - -/* Runs only 4 userid = IBMUSER (if uncommented) */ -/* - If USERID() /= 'IBMUSER' then Exit -*/ - /* <---- Variable settings for each site */ - - STRING = "ALLOC DD(SYSTSPRT) SYSOUT(A) " - CALL BPXWDYN STRING; - Trace Off - - /* If a DDNAME of PKGESHIP is allocated, then Trace */ - WhatDDName = 'PKGESHIP' - CALL BPXWDYN "INFO FI("WhatDDName")", - "INRTDSN(DSNVAR) INRDSNT(myDSNT)" - if Substr(DSNVAR,1,1) /= ' ' then TraceRc = 1; - IF TraceRc = 1 then Trace R - - STRING = "ALLOC DD(SYSPRINT) SYSOUT(A) " - CALL BPXWDYN STRING; - -/* Variable settings for each site ---> */ - WhereIam = WHERE@M1() - RunUnderAltid = 'N' ; /* Y/N */ - - /* The site determines whether to engage Endevor hooks */ - EndevorHooks = 'N' - - /* If just shipping to one destination, then use */ - /* ShipSchedulingMethod = 'One ' */ - /* if there only a few destinations (in notes), then use */ - /* ShipSchedulingMethod = 'Notes' */ - /* if using a RULES file and Trigger, then use */ - /* ShipSchedulingMethod = 'Rules' */ - interpret 'Call' WhereIam "'ShipSchedulingMethod'" - ShipSchedulingMethod = Result - - If ShipSchedulingMethod = 'One' then, - Do - interpret 'Call' WhereIam "'Destination'" - Destination = Result - interpret 'Call' WhereIam "'Destination'" - Destination = Result - interpret 'Call' WhereIam "'Hostprefix'" - Hostprefix = Result - interpret 'Call' WhereIam "'Rmteprefix'" - Rmteprefix = Result - interpret 'Call' WhereIam "'ModelMember'" - ModelMember = Result - End - interpret 'Call' WhereIam "'SHLQ'" - SHLQ = Result - - interpret 'Call' WhereIam "'MyAUTHLibrary'" - MyAUTHLibrary = Result - interpret 'Call' WhereIam "'MyAUTULibrary'" - MyAUTULibrary = Result - interpret 'Call' WhereIam "'MyLOADLibrary'" - MyLOADLibrary = Result - - interpret 'Call' WhereIam "'MySEN2Library'" - MySEN2Library = Result - - interpret 'Call' WhereIam "'MySENULibrary'" - MySENULibrary = Result - - interpret 'Call' WhereIam "'MyOPT2Library'" - MyOPT2Library = Result - - interpret 'Call' WhereIam "'MyOPTNLibrary'" - MyOPTNLibrary = Result - - interpret 'Call' WhereIam "'MyCLS0Library'" - HSYSEXEC = Result - MyCLS0Library = HSYSEXEC - - interpret 'Call' WhereIam "'MyCLS2Library'" - HSYSEXEC = Result - MyCLS2Library = HSYSEXEC - Say 'Running PKGESHIP in' MyCLS2Library - - interpret 'Call' WhereIam "'AltIDAcctCode'" - AltIDAcctCode= Result - - interpret 'Call' WhereIam "'AltIDJobClass'" - AltIDJobClass= Result - - interpret 'Call' WhereIam "'AltIDMsgClass'" - AltIDMsgClass= Result - - interpret 'Call' WhereIam "'TransmissionModels'" - TransmissionModels = Result - - interpret 'Call' WhereIam "'MyHomeAddress'" - MyHomeAddress = Result - - ARG Parms ; - -/* if called by zowe, then this is the Argument .... */ - If Length(Parms) < 18 then, - Do - Package = Translate(Parms,' ',"'") - Package = Strip(Package) - Say Length(Package) Package - PkgExecJobname = USERID() || 'S' /*Userid + S */ - End /* If Length(Parms) < 18 */ - Else - Do - /* if called by exit, then these are the Arguments.... */ - Notes.7 = Substr(PARMS,414,60) ; - If Substr(Notes.7,1,5) = 'TRACE' then Trace r - Package = Substr(PARMS,1,16) ; - - Environ = Substr(PARMS,18,08) ; - Stage = Substr(PARMS,27,01) ; - CREATE_USER = Substr(PARMS,29,08) ; - UPDATE_USER = Substr(PARMS,37,08) ; - CAST_USER = Substr(PARMS,45,08) ; - Notes.1 = Substr(PARMS,054,60) ; - Notes.2 = Substr(PARMS,114,60) ; - Notes.3 = Substr(PARMS,174,60) ; - Notes.4 = Substr(PARMS,234,60) ; - Notes.5 = Substr(PARMS,294,60) ; - Notes.6 = Substr(PARMS,354,60) ; - Notes.7 = Substr(PARMS,414,60) ; - Notes.8 = Substr(PARMS,474,60) ; - ShipOutput = Substr(PARMS,584,03) ; - PkgExecJobname = MVSVAR('SYMDEF',JOBNAME ) /*Returns JOBNAME */ - End /* Else */ - -/* If ShipOutput /= 'BAC' THEN ShipOutput = 'OUT' */ - TYPRUN = ' ' - -/* IF you want to use the package prefix to select packages */ -/* for shipments, then tailor and uncomment the next line: */ -/* If Substr(Package,1,2) /= 'PR' then exit */ - -/* If ShipOutput /= 'BAC' THEN ShipOutput = 'OUT' */ - TYPRUN = ' ' -/* */ -/* This Rexx participates in the submission of Endevor Package */ -/* Shipment jobs. It is called by the Endevor exit program C1UEXT07 */ -/* */ -/* First. See if the package has any package backouts ... */ -/* */ - Call CSV_to_List_Package_Id - If BACKOUT_RCD_EXIST = 'N' then Exit -/* Allocate and prepare files for updating the shipment transaction */ -/* file, and submitting package shipments for those scheduled for */ -/* immediate submission. */ -/* */ - - Userid = USERID() - Date8 = DATE('S') - Date6 = substr(Date8,3); - Temp = TIME('L') - - Time8 = Substr(Temp,1,2) ||, - Substr(Temp,4,2) ||, - Substr(Temp,7,2) ||, - Substr(Temp,10,2) ; - Time6 = Substr(Temp,1,2) ||, - Substr(Temp,4,2) ||, - Substr(Temp,7,2) ; - - TodaysDate = DATE('S') ; - NOW = TIME(L); - HOUR = SUBSTR(NOW,1,2) ; - IF HOUR = '00' THEN HOUR = '0' - MINUTE = SUBSTR(NOW,4,2) ; - CurrentTime= HOUR || MINUTE ; - SENDNODE = MVSVAR(SYSNAME) - ShipOutput = 'OUT' - VDDRSPFX = 'PSP.ENDV' - - $All_VARIABLES = "Jobname Destination Userid ", - "PkgExecJobname MyOPTNLibrary MyAUTULibrary ", - "MyAUTHLibrary MyLOADLibrary MyCLS0Library ", - "MyHomeAddress ", - "Package Date8 Date6 Time8 Time6 Notify ", - "Typrun SENDNODE $delimiter ShipOutput ", - "SHLQ MySEN2Library MySENULibrary MyOPT2Library ", - "MyCLS2Library AltIDAcctCode AltIDJobClass ", - "AltIDMsgClass VDDRSPFX HSYSEXEC OUT" - - Trace R - sa= 'Back to PKGESHIP' - /* If Scheduling Package Shipments, then BILDTGGR */ - /* determines sites and updates the Trigger file . */ - /* If any Sites can receive Shipments immediately, then */ - /* BILDTGGR indicates so in its Return code. */ - If ShipSchedulingMethod = 'Rules' then, - Do - BildRC = BILDTGGR(Parms) - /* The immediate shipments are queued by BILDTGGR in a Table */ - If BildRC = 1 then, - Do - Userid = USERID() ; - PULLTGGRParms = Userid'.PULLTGGR' MySEN2Library - Call PULLTGGR PULLTGGRParms ; - End - End /* SchedulingPackageShipBundle */ - Else, - If ShipSchedulingMethod = 'Notes' then, - Do n# = 8 to 1 by -1 - /* Pulling shipment data from package notes */ - /* Examine Package notes to find Destination and schedule info */ - /* - Submit Package Shipments for those that can be submitted */ - /* immeditely. */ - /* (future submissions are not supported ) */ - tmp = NOTES.n# ; - if Substr(tmp,1,3) /= "TO " then leave ; - if Substr(tmp,12,2) /= ": " then leave ; - tmp = Substr(OVERLAY(" ",tmp,12),3) ; - Destination = Word(tmp,1) ; - /* Default to first model */ - ModelMember = Word(TransmissionModels,1) - /* Get info for Destination */ - Call GetDestinationInfo; - Hostprefix = Strip(Substr(apiDestinations.1,079,14)) - Rmteprefix = Strip(Substr(apiDestinations.1,113,14)) - /* - */ - Date = Word(tmp,2) ; - Time = Word(tmp,3) ; - Jobname = Word(tmp,4) ; - If Words(tmp) > 4 then, - If Word(tmp,5) = "HOLD" then, - Notify = Notify",TYPRUN=HOLD" - If Date <= TodaysDate &, - Time <= CurrentTime then, - Do - Call AllocateModel; - Call SubmitPackageShipmentFromNotes; - End ; - tmp = Substr(OVERLAY(" ",tmp,12),3) ; - End; /* Do n# = 8 to 1 by -1 */ - Else, /* Is there only one Destination etc */ - If ShipSchedulingMethod = 'One' then, - Do - JobName = PkgExecJobname - Call AllocateModel; - Call SubmitPackageShipmentFromNotes; - End; /* .. Else... */ - -/* */ -/* All Done */ -/* */ - - Exit - -AllocateModel: -/* */ -/* Submit immediate package shipment jobs */ -/* */ -/* Allocate files */ -/* */ -/* A Model is used for building Package Shipment JCL */ -/* */ - STRING = 'ALLOC DD(MODEL) ', - "DA('"MySEN2Library"("ModelMember")') SHR REUSE " - CALL BPXWDYN STRING; - - Return; - -SubmitPackageShipmentFromNotes: -/* */ -/* This subroutine is modified from the TBL#TOOL */ -/* */ - - "EXECIO * DISKR "MODEL "(STEM $Model. FINIS" ; - $delimiter = "�" ; - - DO $LINE = 1 TO $Model.0 - $PLACE_VARIABLE = 1; - CALL EVALUATE_SYMBOLICS ; - END; /* DO $LINE = 1 TO $Model.0 */ - - STRING = "ALLOC DD(SHIPJCL) LRECL(80) BLKSIZE(27920) ", - " DSORG(PS) ", - " SPACE(2,2) RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - "EXECIO * DISKW SHIPJCL (STEM $Model. FINIS" ; - - If RunUnderAltid = 'Y' then CALL SWAP2ALT - Call Submit_Job ; - If RunUnderAltid = 'Y' then CALL SWAP2USR - - Drop $Model. ; - - STRING = "FREE DD(SHIPJCL) DELETE" - CALL BPXWDYN STRING; - - RETURN; - -/* */ -/* The subroutine below is borrowed from the TBL#TOOL */ -/* */ -EVALUATE_SYMBOLICS: - - DO FOREVER; - $PLACE_VARIABLE = POS('&',$Model.$LINE,$PLACE_VARIABLE) - IF $PLACE_VARIABLE = 0 THEN LEAVE; - $temp_$LINE = TRANSLATE($Model.$LINE,' ',',.()"/\+-*|'); - $temp_$LINE = TRANSLATE($temp_$LINE,' ',"'"$delimiter); - $table_word = WORD(SUBSTR($temp_$LINE,($PLACE_VARIABLE+1)),1); - $table_word = TRANSLATE($table_word,'_','-') ; - $varlen = LENGTH($table_word) + 1 ; - - if WORDPOS($table_word,$All_VARIABLES) = 0 then, - do - $PLACE_VARIABLE = $PLACE_VARIABLE + 1 ; - iterate; - end; - - $temp_word = VALUE($table_word) ; - IF DATATYPE($temp_word,S) = 9 THEN, - $temp = 'SYMBVALUE = ' $temp_word ; - ELSE, - $temp = "SYMBVALUE = '"$temp_word"'" ; - INTERPRET $temp; - SA= 'SYMBVALUE = ' SYMBVALUE ; - - $tail = SUBSTR($Model.$LINE,($PLACE_VARIABLE+$varlen)) ; - if Substr($tail,1,1) = $delimiter then, - $tail = SUBSTR($tail,2) ; - IF $PLACE_VARIABLE > 1 THEN, - $Model.$LINE = , - SUBSTR($Model.$LINE,1,($PLACE_VARIABLE-1)) ||, - SYMBVALUE || $tail ; - else, - $Model.$LINE = , - SYMBVALUE || $tail ; - END; /* DO FOREVER */ - - RETURN; - -Submit_Job: - - "Execio * DISKR SHIPJCL ( Stem jcl. finis" - "Execio * DISKW SYSTSPRT ( Stem jcl. " - - STRING = "ALLOC DD(SUBMIT)", - "SYSOUT(A) WRITER(INTRDR) REUSE " ; - CALL BPXWDYN STRING; - "Execio * DISKW SUBMIT ( Stem jcl. finis" - - STRING = "FREE DD(SUBMIT)" - CALL BPXWDYN STRING; - - RETURN; - -GetDestinationInfo: - - /* Set values for Hostprefix and Rmteprefix */ - /* From the site definition */ - - /* Call API to Get Destination information */ - - - ADDRESS TSO - "ALLOC F(BSTAPI) DA(*) REUSE " - "ALLOC F(BSTERR) DA(*) REUSE " - STRING = "ALLOC DD(APIMSGS) LRECL(133) BLKSIZE(13300) ", - " DSORG(PS) ", - " SPACE(1,1) RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(APILIST) LRECL(2048) BLKSIZE(22800) ", - " DSORG(PS) ", - " SPACE(1,1) RECFM(V,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - /* Call API to Get Destination information */ - parm = Left(Destination'*',7) - - ADDRESS TSO "CALL *(APIALDST) '"||parm||"'" - RETURN_RC = RC ; - If RETURN_RC > 0 then, - DO - SA= 'CANNOT GET INFORMATION FROM ENDEVOR' ; - EXIT - END ; - "EXECIO * DISKR APILIST ( Stem apiDestinations. FINIS" - STRING = "FREE DD(APILIST)" - CALL BPXWDYN STRING; - STRING = "FREE DD(APIMSGS)" - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTAPI) " - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTERR) " - CALL BPXWDYN STRING; - - Return ; - -CSV_to_List_Package_Id: - - /* To Search the package shipping table, we need the Entry */ - /* Environment information as a search criteria. */ - /* Get it from the USER-DATA field on the 1st element. */ - - - STRING = "ALLOC DD(C1MSGS1) DUMMY " - CALL BPXWDYN STRING; - STRING = "ALLOC DD(BSTERR) DUMMY " - CALL BPXWDYN STRING; - STRING = "ALLOC DD(BSTAPI) DUMMY " - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(EXTRACTM) LRECL(4000) BLKSIZE(32000) ", - " DSORG(PS) ", - " SPACE(1,5) RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(BSTIPT01) LRECL(80) BLKSIZE(800) ", - " DSORG(PS) ", - " SPACE(1,5) RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - QUEUE "LIST PACKAGE ID '"Package"'" - QUEUE " TO DDNAME 'EXTRACTM' " - QUEUE " ." - - "EXECIO" QUEUED() "DISKW BSTIPT01 (FINIS "; - - ADDRESS LINK 'BC1PCSV0' ; /* load from authlib */ - -/* ADDRESS TSO 'ISRDDN' */ - call_rc = rc ; - - "EXECIO * DISKR EXTRACTM (STEM API. finis" - - STRING = "FREE DD(EXTRACTM)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTIPT01)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(C1MSGS1)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTERR)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTAPI)" ; - CALL BPXWDYN STRING; - - IF API.0 < 2 THEN RETURN; - - $table_variables= Strip(API.1,'T') - - $table_variables = translate($table_variables,"_"," ") ; - $table_variables = translate($table_variables," ",',"') ; - $table_variables = translate($table_variables,"@","/") ; - $table_variables = translate($table_variables,"@",")") ; - $table_variables = translate($table_variables,"@","(") ; - $table_variables = translate($table_variables,"_","-") ; - - Do rec# = 2 to API.0 - $detail = API.rec# - - Trace off - /* Parse the Detail record until done */ - Do $column = 1 to Words($table_variables) - Call ParseDetailCSVline - End - Trace r - End; /* Do rec# = 1 to API.0 */ - - RETURN ; - - -ParseDetailCSVline: - - /* Find the data for the current $column */ - - $dlmchar = Substr($detail,1,1); - - If $dlmchar = "'" then, - Do - SA= 'parsing with single quote ' - PARSE VAR $detail "'" $temp_value "'" $detail ; - If Substr($detail,1,1) = ',' then, - $detail = Strip(Substr($detail,2),'L') - End - Else, - If $dlmchar = '"' then, - Do - SA= 'parsing with double quote ' - PARSE VAR $detail '"' $temp_value '"' $detail ; - If Substr($detail,1,1) = ',' then, - $detail = Strip(Substr($detail,2),'L') - End - Else, - If $dlmchar = ',' then, - Do - SA= 'parsing with comma ' - PARSE VAR $detail ',' $temp_value ',' $detail ; - If Substr($detail,1,1)/= ',' then, - $detail = "," || $detail - $detail = Strip(Substr($detail,2),'L') */ - End - Else, - If Words($detail) = 0 then, - $temp_value = ' ' - Else, - Do - SA= 'parsing with comma ' - PARSE VAR $detail $temp_value ',' $detail ; - Sa= '$temp_value=>' $temp_value '<' - End - $temp_value = STRIP($temp_value) ; - $rslt = $temp_value - $rslt = Strip($rslt,'B','"') ; - $rslt = Strip($rslt,'B',"'") ; - if Length($rslt) < 1 then $rslt = ' ' - if Length($rslt) < 250 then, - $temp = WORD($table_variables,$column) '= "'$rslt'"'; - Else, - $temp = WORD($table_variables,$column) "=$rslt" - If rec# < 0 then Say $temp - Say $temp; - Interpret $temp; - - RETURN ; - diff --git a/endevor/Shipments-for-Multiple-Destinations/PULLTGGR.rex b/endevor/Shipments-for-Multiple-Destinations/PULLTGGR.rex deleted file mode 100644 index 93d0001..0000000 --- a/endevor/Shipments-for-Multiple-Destinations/PULLTGGR.rex +++ /dev/null @@ -1,623 +0,0 @@ -/* REXX */ -/* Submit package shipment jobs from entry(ies) on Trigger */ - - /* If a DDNAME of PULLTGGR is allocated, then Trace */ - WhatDDName = 'PULLTGGR' - CALL BPXWDYN "INFO FI("WhatDDName")", - "INRTDSN(DSNVAR) INRDSNT(myDSNT)" - if Substr(DSNVAR,1,1) /= ' ' then TraceRc = 1; - IF TraceRc = 1 then Trace R - -/* PkgExecJobname = MVSVAR('SYMDEF',JOBNAME ) Returns JOBNAME */ - -/* Variable settings for each site ---> */ - WhereIam = WHERE@M1() - - interpret 'Call' WhereIam "'MyCLS2Library'" - MyCLS2Library = Result - Say 'Running PULLTGGR in' MyCLS2Library - - interpret 'Call' WhereIam "'TriggerFileName'" - TriggerFileName = Result - - interpret 'Call' WhereIam "'MyAUTULibrary'" - MyAUTULibrary = Result - - interpret 'Call' WhereIam "'MyHomeAddress'" - MyHomeAddress = Result - - interpret 'Call' WhereIam "'MyAUTHLibrary'" - MyAUTHLibrary = Result - - interpret 'Call' WhereIam "'MyLOADLibrary'" - MyLOADLibrary = Result - - interpret 'Call' WhereIam "'MyDATALibrary'" - MyDATALibrary = Result - ShipRules = MyDATALibrary"(SHIPRULE)" - - interpret 'Call' WhereIam "'MyOPT2Library'" - MyOPT2Library = Result - - interpret 'Call' WhereIam "'MyOPTNLibrary'" - MyOPTNLibrary = Result - - interpret 'Call' WhereIam "'MySENULibrary'" - MySENULibrary = Result - - interpret 'Call' WhereIam "'MySEN2Library'" - MySEN2Library = Result - - interpret 'Call' WhereIam "'MyCLS0Library'" - MyCLS0Library = Result - - interpret 'Call' WhereIam "'MyCLS2Library'" - MyCLS2Library = Result - - interpret 'Call' WhereIam "'AltIDAcctCode'" - AltIDAcctCode = Result - - interpret 'Call' WhereIam "'AltIDJobClass'" - AltIDJobClass = Result - - interpret 'Call' WhereIam "'TransmissionMethods'" - TransmissionMethods = Result - - interpret 'Call' WhereIam "'TransmissionModels'" - TransmissionModels = Result - - interpret 'Call' WhereIam "'SHLQ'" - SHLQ = Result - - sa= 'TransmissionMethods =' TransmissionMethods - sa= 'TransmissionModels =' TransmissionModels - -/* <---- Variable settings for each site */ - - Arg DSN_Prefix ModelDSN . ; - DSN_Prefix = Strip(DSN_Prefix,'B',',') ; - ModelDSN = Strip(ModelDSN,'B',',') ; - ModelDSN = Strip(ModelDSN) - Sa= "DSN_Prefix =" DSN_Prefix - Sa= "ModelDSN =" ModelDSN - Jobnbr = ' ' - -/* */ -/* This Rexx participates in the submission of Endevor Package */ -/* Shipment jobs. It is called by the Endevor sweep job. */ -/* */ -/* */ -/* Allocate and prepare files for TBL#TOOL execution */ -/* */ -/* */ - Submit_RC = 0 ; - Last_Submit_RC = 0 ; - TodaysDate = DATE('S') ; - NOW = TIME(L); - HOUR = SUBSTR(NOW,1,2) ; - IF HOUR = '00' THEN HOUR = '0' - MINUTE = SUBSTR(NOW,4,2) ; - CurrentTime= HOUR || MINUTE ; - - SENDNODE = MVSVAR(SYSNAME) - HSYSEXEC = MyCLS2Library - Userid = USERID() - - Call AllocateTriggerForUpdate ; - - "EXECIO * DISKR TRIGGER (STEM $tablerec. FINIS" ; - /* Build all the ...pos variables from heading */ - Call ProcessTriggerFileHeading; - -/* */ - $All_VARIABLES = $table_variables, - " PkgExecJobname ParmVal", - " Jobname Userid Date8 Date6 Time8 Time6 Destination", - " MyCLS0Library MyCLS2Library MyHomeAddress", - " MyAUTULibrary MyAUTHLibrary MyLOADLibrary ", - " MyOPT2Library MyOPTNLibrary MySEN2Library MySENULibrary", - " HSYSEXEC DB2DSN MODE SHPHLQ STEPLIB", - " ShipOutput SHLQ ", - " AltIDAcctCode AltIDJobClass ", - " Hostprefix Rmteprefix Transmissn ", - " Destin VNBLSDST SENDNODE Typrun Notify TARGnode " - -/* */ - Do trg# = 1 to $tablerec.0 - status = Substr($tablerec.trg#,Stpos,1) ; - If status /= "_" & status /= " " &, - status /= "B" then iterate; - ShipOutput = 'OUT' - If status = "B" then ShipOutput = 'BAC' ; - Package = Substr($tablerec.trg#,Packagepos,16) ; - System = Strip(Substr($tablerec.trg#,Systempos,08)); - Destination = Strip(Substr($tablerec.trg#,Destinationpos,08)); - Date = Substr($tablerec.trg#,Datepos,08) ; - IF Date > TodaysDate then iterate ; - Time = Substr($tablerec.trg#,Timepos,04) ; - IF Date = TodaysDate &, - Time > CurrentTime then iterate ; - /* Get Endevor Destination Definition */ - /* for file names and transmission method */ - - /* - Do one of these: - Call GetDestinationInfoViaAPI; - -- or -- - Call GetDestinationInfoViaCSV; - */ - - Call GetDestinationInfoViaCSV; - - Jobname = Strip(Substr($tablerec.trg#,Jobnamepos,08)) ; - If Jobname = 'useridX' then Jobname = USERID() || 'X' - PkgExecJobname = Jobname ; -/* - OwnerMask = Strip(Substr($tablerec.trg#,OwnerMaskpos,08)) ; - QualifierMask =, - Strip(Substr($tablerec.trg#,QualifierMaskpos,08)) ; - BindPackageMask =, - Strip(Substr($tablerec.trg#,BindPackageMaskpos,08)) ; - PathMask =, - Strip(Substr($tablerec.trg#,PathMaskpos,08)) ; -*/ - TYPRUN = Strip(Substr($tablerec.trg#,TYPRUNpos,6)) ; - if Length(Typrun) > 0 then, - Typrun = ',TYPRUN='Typrun - - Notify = Strip(Substr($tablerec.trg#,Notifypos,8)) ; - if Length(Notify) < 2 then, - Notify = '&SYSUID' - - seconds = '000001' /* Wait 1 second before submitting next*/ - Call WaitAwhile ; - - Date8 = DATE('S') - Date6 = substr(Date8,3); - Temp = TIME('L') - - Time8 = Substr(Temp,1,2) ||, - Substr(Temp,4,2) ||, - Substr(Temp,7,2) ||, - Substr(Temp,10,2) ; - Time6 = Substr(Temp,1,2) ||, - Substr(Temp,4,2) ||, - Substr(Temp,7,2) ; - - ParmVal = Date8 Time8 - NewStatus = 's' ; - Call UPDATE_MODEL_FROM_VARIABLES ; /* Submits Shipment job */ - $headingVariable = 'St' - pos= $Starting_$position.$headingVariable - if Last_Submit_RC = 0 then, - Do - $tablerec.trg# = Overlay(NewStatus,$tablerec.trg#,Stpos) ; - $tablerec.trg# = , - Overlay(CurrentTime,$tablerec.trg#,Timepos) ; - pos= $Starting_$position.$headingVariable - If Substr(Jobnbr,1,1) > ' ' then, - $tablerec.trg# = , - Overlay(Jobnbr,$tablerec.trg#,Jobnumberpos); - End - Else, - $tablerec.trg# = Overlay("?",$tablerec.trg#,Stpos) ; - Last_Submit_RC = 0 ; - - End ; /* Do trg# = 1 to $tablerec.0 */ - - "EXECIO * DISKW TRIGGER (STEM $tablerec. FINIS" ; - - Call FreeTriggerFile ; - - Exit(Submit_RC) ; - -/* */ -/* The subroutine below is modified from the TBL#TOOL */ -/* */ -UPDATE_MODEL_FROM_VARIABLES: - - Method# = Wordpos(Transmissn,TransmissionMethods) ; - If Method# = 0 then, - Do - NewStatus = 'R' ; - Return ; - End; - ShipModel = Word(TransmissionModels,Method#); - - /* Determine Shipment JCL Model */ - STRING = "ALLOC DD(MODEL) ", - " DA('"ModelDSN"("ShipModel")')", - " SHR REUSE "; - sa= 'Destination' Destination 'is' ShipModel - CALL BPXWDYN STRING; - MyResult = RESULT ; - If MyResult > 0 then, - Do - Say 'Cannot find Shipment Model' ShipModel - Return ; - End; - - "EXECIO * DISKR "MODEL "(STEM $Model. FINIS" ; - $delimiter = "µ" ; - STRING = "FREE DD(MODEL) " - CALL BPXWDYN STRING; - - Trace off - DO $LINE = 1 TO $Model.0 - $PLACE_VARIABLE = 1; - CALL EVALUATE_SYMBOLICS ; - END; /* DO $LINE = 1 TO $Model.0 */ - IF TraceRc = 1 then Trace R - - CALL BPXWDYN , - "ALLOC DD(SYSUT1) LRECL(80) BLKSIZE(27920) SPACE(5,5) ", - " RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - - "EXECIO * DISKW SYSUT1 (STEM $Model. FINIS" ; - - Call Submit_Job ; - - Drop $Model. ; - - RETURN; - -/* */ -/* The subroutine below is borrowed from the TBL#TOOL */ -/* */ -EVALUATE_SYMBOLICS: - - DO FOREVER; - $PLACE_VARIABLE = POS('&',$Model.$LINE,$PLACE_VARIABLE) - IF $PLACE_VARIABLE = 0 THEN LEAVE; - $temp_$LINE = TRANSLATE($Model.$LINE,' ',',.()"/\+-*|'); - $temp_$LINE = TRANSLATE($temp_$LINE,' ',"'"$delimiter); - $table_word = WORD(SUBSTR($temp_$LINE,($PLACE_VARIABLE+1)),1); - $table_word = TRANSLATE($table_word,'_','-') ; - $varlen = LENGTH($table_word) + 1 ; - - if WORDPOS($table_word,$All_VARIABLES) = 0 then, - do - $PLACE_VARIABLE = $PLACE_VARIABLE + 1 ; - iterate; - end; - - $temp_word = VALUE($table_word) ; - IF DATATYPE($temp_word,S) = 9 THEN, - $temp = 'SYMBVALUE = ' $temp_word ; - ELSE, - $temp = "SYMBVALUE = '"$temp_word"'" ; - IF TraceRc = 1 then say $temp - INTERPRET $temp; - SA= 'SYMBVALUE = ' SYMBVALUE ; - - $tail = SUBSTR($Model.$LINE,($PLACE_VARIABLE+$varlen)) ; - if Substr($tail,1,1) = $delimiter then, - $tail = SUBSTR($tail,2) ; - IF $PLACE_VARIABLE > 1 THEN, - $Model.$LINE = , - SUBSTR($Model.$LINE,1,($PLACE_VARIABLE-1)) ||, - SYMBVALUE || $tail ; - else, - $Model.$LINE = , - SYMBVALUE || $tail ; - END; /* DO FOREVER */ - - RETURN; - -Submit_Job: - - STRING = "ALLOC DD(SYSIN) DUMMY" - CALL BPXWDYN STRING; -/* - STRING = "ALLOC DD(SYSPRINT) DUMMY" - CALL BPXWDYN STRING; -*/ - - STRING = "ALLOC DD(SYSUT2)", - "SYSOUT(A) WRITER(INTRDR) REUSE " ; - CALL BPXWDYN STRING; - - ADDRESS LINK 'IEBGENER' - - "EXECIO * DISKR SYSUT1 (STEM $SUBS. FINIS" ; - "EXECIO * DISKW SYSPRINT (STEM $SUBS. FINIS" ; - - STRING = "FREE DD(SYSUT1)" - CALL BPXWDYN STRING; - - STRING = "FREE DD(SYSUT2)" - CALL BPXWDYN STRING; - - return; - -AllocateTriggerForUpdate: - - STRING = "ALLOC DD(TRIGGER)", - " DA('"TriggerFileName"') OLD REUSE" - seconds = '000007' /* Number of Seconds to wait if needed */ - - Do Forever /* or at least until the file is available */ - CALL BPXWDYN STRING; - MyRC = RC - MyResult = RESULT ; - If MyResult = 0 then Leave - Call WaitAwhile - End /* Do Forever */ - - Return ; - -FreeTriggerFile: - - STRING = "FREE DD(TRIGGER)" - CALL BPXWDYN STRING ; - - Return ; - -/* */ -/* Convert Date formats */ -/* */ - -WaitAwhile: - /* */ - /* A resource is unavailable. Wait awhile and try */ - /* accessing the resource again. */ - /* */ - /* The length of the wait is designated in the parameter */ - /* value which specifies a number of seconds. */ - /* A parameter value of '000003' causes a wait for 3 seconds. */ - /* */ - - seconds = Abs(seconds) - seconds = Trunc(seconds,0) - Say "Waiting for" seconds "seconds at " DATE(S) TIME() - - /* AOPBATCH and BPXWDYN are IBM programs */ - CALL BPXWDYN "ALLOC DD(STDOUT) DUMMY SHR REUSE" - CALL BPXWDYN "ALLOC DD(STDERR) DUMMY SHR REUSE" - CALL BPXWDYN "ALLOC DD(STDIN) DUMMY SHR REUSE" - - /* AOPBATCH and BPXWDYN are IBM programs */ - parm = "sleep "seconds - Address LINKMVS "AOPBATCH parm" - - Return - -ProcessTriggerFileHeading : -/* The subroutine below is modified from the TBL#TOOL */ - - $tbl = 1 ; - $TableHeadingChar = '*' - - $LastWord = Word($tablerec.$tbl,Words($tablerec.$tbl)); - If DATATYPE($LastWord) = 'NUM' then, - Do - Say 'Please remove sequence numbers from the Table' - Exit(12) - End - - $tmprec = Substr($tablerec.$tbl,2) ; - $PositionSpclChar = POS('-',$tmprec) ; - If $PositionSpclChar = 0 then, - $PositionSpclChar = POS('*',$tmprec) ; - $tmpreplaces = '-,.'$TableHeadingChar ; - $tmprec = TRANSLATE($tmprec,' ',$tmpreplaces); - $table_variables = strip($tmprec); - $Heading_Variable_count = WORDS($table_variables) ; - If $Heading_Variable_count /=, - Words(Substr($tablerec.$tbl,2)) then, - Do - Say 'Invalid table Heading:' $tablerec.$tbl - exit(12) - End - - $heading = Overlay(' ',$tablerec.$tbl,1); /* Space leading * */ - Do $pos = 1 to $Heading_Variable_count - $HeadingVariable = Word($table_variables,$pos) ; - $tmp = Wordindex($Heading,$pos) ; - $Starting_$position.$HeadingVariable = $tmp - $tmp = $tmp + Length(Word($Heading,$pos)) -1 ; - $Ending_$position.$HeadingVariable = $tmp - - /* Build ...pos variables and values */ - tmp = ""$HeadingVariable"pos =", - $Starting_$position.$HeadingVariable - Sa= tmp - Interpret tmp - - end; /* DO $pos = 1 to $Heading_Variable_count */ - - $Heading = Translate($Heading,' ','-*') - - Return ; - -GetDestinationInfoViaAPI: - - /* Set values for Hostprefix and Rmteprefix */ - /* From the site definition */ - - /* Call API to Get Destination information */ - - - STRING = "ALLOC DD(BSTAPI) SYSOUT(J) " - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(BSTERR) SYSOUT(J) " - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(APIMSGS) LRECL(133) BLKSIZE(13300) ", - " DSORG(PS) ", - " SPACE(1,1) RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(APILIST) LRECL(2048) BLKSIZE(22800) ", - " DSORG(PS) ", - " SPACE(1,1) RECFM(V,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - /* Call API to Get Destination information */ - parm = Left(Destination'*',7) - -/* - ADDRESS TSO "CALL *(APIALDST) '"||parm||"'" -*/ - - ADDRESS LINKMVS "APIALDST parm" - RETURN_RC = RC ; - If RETURN_RC > 0 then, - DO - SA= 'CANNOT GET INFORMATION FROM ENDEVOR' ; - EXIT - END ; - "EXECIO * DISKR APILIST ( Stem apiDestinations. FINIS" - Sa= 'Messages from PULLTGGR:' - Hostprefix = Strip(Substr(apiDestinations.1,079,14)) - Rmteprefix = Strip(Substr(apiDestinations.1,113,14)) - Transmissn = Strip(Substr(apiDestinations.1,051,11)) - TARGnode = Strip(Substr(apiDestinations.1,062,08)) - - STRING = "FREE DD(APILIST)" - CALL BPXWDYN STRING; - STRING = "FREE DD(APIMSGS)" - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTAPI) " - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTERR) " - CALL BPXWDYN STRING; - - Return ; - -GetDestinationInfoViaCSV: - - /* Set values for Hostprefix and Rmteprefix */ - /* From the site definition */ - - /* Call CSV to Get Destination information */ - - STRING = "ALLOC DD(C1MSGS1) DUMMY " - CALL BPXWDYN STRING; - STRING = "ALLOC DD(BSTERR) DUMMY " - CALL BPXWDYN STRING; - STRING = "ALLOC DD(BSTAPI) DUMMY " - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(CSVDEST) LRECL(4000) BLKSIZE(32000) ", - " DSORG(PS) ", - " SPACE(1,5) RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(BSTIPT01) LRECL(80) BLKSIZE(800) ", - " DSORG(PS) ", - " SPACE(1,5) RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - Push "LIST DESTINATION '"Destination"'", - " TO FILE CSVDEST OPTIONS ." - - "EXECIO 1 DISKW BSTIPT01 (FINIS "; - - ADDRESS LINK 'BC1PCSV0' ; /* load from authlib */ - call_rc = rc ; -/* ADDRESS TSO 'ISRDDN' */ - - "EXECIO * DISKR CSVDEST (STEM API. finis" - - STRING = "FREE DD(CSVDEST)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTIPT01)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(C1MSGS1)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTERR)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTAPI)" ; - CALL BPXWDYN STRING; - - IF API.0 < 2 THEN, - Do - Say 'Cannot find Definition for Destination' Destination - EXIT(12) - End - - $table_variables= Strip(API.1,'T') - - $table_variables = translate($table_variables,"_"," ") ; - $table_variables = translate($table_variables," ",',"') ; - $table_variables = translate($table_variables,"@","/") ; - $table_variables = translate($table_variables,"@",")") ; - $table_variables = translate($table_variables,"@","(") ; - - Do rec# = 2 to API.0 - $detail = API.rec# - - /* Parse the Detail record until done */ - Do $column = 1 to Words($table_variables) - Call ParseDetailCSVline - End - - Sa= 'Messages from PULLTGGR:' - Hostprefix = HOST_DSN_PREFIX - Rmteprefix = REMOTE_DSN_PREFIX - Transmissn = TRANS_DESC - TARGnode = TRANS_NODE - End; /* Do rec# = 1 to API.0 */ - - RETURN ; - -ParseDetailCSVline: - - /* Find the data for the current $column */ - - $dlmchar = Substr($detail,1,1); - - If $dlmchar = "'" then, - Do - SA= 'parsing with single quote ' - PARSE VAR $detail "'" $temp_value "'" $detail ; - If Substr($detail,1,1) = ',' then, - $detail = Strip(Substr($detail,2),'L') - End - Else, - If $dlmchar = '"' then, - Do - SA= 'parsing with double quote ' - PARSE VAR $detail '"' $temp_value '"' $detail ; - If Substr($detail,1,1) = ',' then, - $detail = Strip(Substr($detail,2),'L') - End - Else, - If $dlmchar = ',' then, - Do - SA= 'parsing with comma ' - PARSE VAR $detail ',' $temp_value ',' $detail ; - If Substr($detail,1,1)/= ',' then, - $detail = "," || $detail - $detail = Strip(Substr($detail,2),'L') */ - End - Else, - If Words($detail) = 0 then, - $temp_value = ' ' - Else, - Do - SA= 'parsing with comma ' - PARSE VAR $detail $temp_value ',' $detail ; - Sa= '$temp_value=>' $temp_value '<' - End - $temp_value = STRIP($temp_value) ; - $rslt = $temp_value - $rslt = Strip($rslt,'B','"') ; - $rslt = Strip($rslt,'B',"'") ; - if Length($rslt) < 1 then $rslt = ' ' - if Length($rslt) < 250 then, - $temp = WORD($table_variables,$column) '= "'$rslt'"'; - Else, - $temp = WORD($table_variables,$column) "=$rslt" - INTERPRET $temp; - If rec# < 3 then Say $temp - - RETURN ; - diff --git a/endevor/Shipments-for-Multiple-Destinations/SHIP#FTP.skl b/endevor/Shipments-for-Multiple-Destinations/SHIP#FTP.skl deleted file mode 100644 index a31d6a4..0000000 --- a/endevor/Shipments-for-Multiple-Destinations/SHIP#FTP.skl +++ /dev/null @@ -1,471 +0,0 @@ -//&PkgExecJobname JOB (&AltIDAcctCode),'SHIP &Destination', -// MSGLEVEL=(1,1),CLASS=&AltIDJobClass,REGION=0M,MSGCLASS=A, -// NOTIFY=&Notify^&Typrun -//***==============================================================* * -//***=====Remote Package Shipment via FTP==========================* * -// JCLLIB ORDER=(PSP.ENDV.TEAM.JCL) -//* ISPSLIB(SHIP#FTP) -//*----------------------------------------------------- -//*--------------------------------------------------------SHIP#FTP -//* MY DESTNAME = &Destination -//* MY FROMNODE = &SENDNODE -//* MY PACKAGE = &Package -//* MY VNBCPARM = C1BMX000,&Date8,&Time8 -//*--------------------------------------------------------SHIP#FTP -//*----------------------------------------------------- -//***==============================================================* * -//NDVRSHIP EXEC PGM=NDVRC1,DYNAMNBR=1500,REGION=4096K, SHIP#FTP -// PARM='C1BMX000,&Date8,&Time8 SHIP &Userid ' -//* -//*C1BMXTRC DD DISP=SHR, -//* DSN=CAPRD.ENDV.TRACE.LOCAL -//* -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -// INCLUDE MEMBER=STEPLIB -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* -//* *--------------------------------------------* SHIP#FTP (CONT.) * -//* -//C1BMXDET DD SYSOUT=* ** SHIPMENT DETAIL REPORT **************** -//C1BMXSUM DD SYSOUT=* ** SHIPMENT SUMMARY REPORT **************** -//C1BMXSYN DD SYSOUT=* ** INPUT LISTING AND SYNTAX ERROR REPORT ** -//* -//* ****************************************************************** -//* * LOCAL TRANSFER COPY/RUN COMMAND DATASETS -//* * LOCAL MODEL CONTROL CARD DATASET -//* ****************************************************************** -//* -//C1BMXLCC DD DSN=&&XLCC,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* -//C1BMXLCM DD DISP=SHR,DSN=&MyOPT2Library -// DD DISP=SHR,DSN=&MyOPTNLibrary -//* -//* ****************************************************************** -//* * NETVIEW FTP "ADD TO TRANSMISSION QUEUE" DATASET AND INTERNAL RDR -//* * NETVIEW FTP MODEL CONTROL CARD DATASET //* -****************************************************************** -//* -//C1BMXFTC DD DSN=&&XFTC,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//C1BMXFTM DD DISP=SHR,DSN=&MyOPT2Library -// DD DISP=SHR,DSN=&MyOPTNLibrary -//* * NETWORK DATA MOVER COPY/RUN COMMAND DATASETS -//* * NETWORK DATA MOVER MODEL CONTROL CARD DATASET -//* ****************************************************************** -//C1BMXNWC DD DSN=&&XNWC,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//C1BMXNWM DD DISP=SHR,DSN=&MyOPT2Library -// DD DISP=SHR,DSN=&MyOPTNLibrary -//* -//C1BMXNWM DD DISP=SHR,DSN=&MyOPT2Library -// DD DISP=SHR,DSN=&MyOPTNLibrary -//C1BMXRJC DD DISP=SHR,DSN=&MySEN2Library -// DD DISP=SHR,DSN=&MySENULibrary -//* -//* ****************************************************************** -//* * SHIPMENT DATE/TIME READ BY INLINE HOST CONFIRMATION STEP -//* ****************************************************************** -//* -//C1BMXDTM DD DSN=&&XDTM,DISP=(NEW,PASS),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* -//* ****************************************************************** -//* * HOST STAGING DATASET DELETION STATEMENTS (IDCAMS) -//* ****************************************************************** -//* -//C1BMXDEL DD DSN=&&HDEL,DISP=(NEW,PASS),SPACE=(TRK,(10,10)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* -//* ****************************************************************** -//* * REMOTE JCL MODEL MEMBERS -//* ****************************************************************** -//* -//C1BMXMDL DD DISP=SHR,DSN=&MyOPT2Library -// DD DISP=SHR,DSN=&MyOPTNLibrary -//* -//* ****************************************************************** -//* * JCL SEGMENTS TO CREATE GROUP SYMBOLICS FOR MODELLING -//* ****************************************************************** -//* -//C1BMXHJC DD DATA,DLM=## -//&Jobname JOB (55800000),'SHIP &Destination', -// MSGLEVEL=(1,1),CLASS=B,REGION=0M,MSGCLASS=A, -// NOTIFY=&SYSUID TYPRUN=HOLD -//*-------------------------------------------------------------------* -// JCLLIB ORDER=(PSP.ENDV.TEAM.JCL) -//*-------------------------------------------------------------------* -//* ISPSLIB(SHIP#FTP) -//*--------------------------------------------------------SHIP#FTP -//* MY DESTNAME = &Destination -//* MY FROMNODE = &SENDNODE -//* MY PACKAGE = &Package -//* MY VNBCPARM = C1BMX000,&Date8,&Time8 -//*--------------------------------------------------------SHIP#FTP -## -//* -//* *--------------------------------------------* SHIP#FTP (CONT.) * -//* -//C1BMXHCN DD DATA,DLM=## -//* *--------------------------------------------------------------* * -//* *--------------------------------------------------------------* * -//* SHIP#FTP -//CONFGE12 EXEC PGM=NDVRC1,REGION=4096K,COND=(12,GT,$XM_STEP), -// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,GE,0012,$DEST_ID' -//* SHIP#FTP -//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* SHIP#FTP -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -// INCLUDE MEMBER=STEPLIB -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* *--------------------------------------------* SHIP#FTP(CONT -//* SHIP#FTP -//CONFGE08 EXEC PGM=NDVRC1,REGION=4096K,COND=(08,NE,$XM_STEP), -// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,GE,0008,$DEST_ID' -//* SHIP#FTP -//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -// INCLUDE MEMBER=STEPLIB -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* SHIP#FTP -//* SHIP#FTP -//CONFGE04 EXEC PGM=NDVRC1,REGION=4096K,COND=(04,NE,$XM_STEP), -// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,EQ,0004,$DEST_ID' -//* SHIP#FTP -//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* SHIP#FTP -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -// INCLUDE MEMBER=STEPLIB -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* SHIP#FTP -//* SHIP#FTP -//CONFGE00 EXEC PGM=NDVRC1,REGION=4096K,COND=(00,NE,$XM_STEP), -// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,EQ,0000,$DEST_ID' -//* SHIP#FTP -//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* SHIP#FTP -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -// INCLUDE MEMBER=STEPLIB -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* SHIP#FTP -//* SHIP#FTP -//CONFABND EXEC PGM=NDVRC1,REGION=4096K,COND=ONLY, SHIP#FTP -// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,AB,****,********' -//* SHIP#FTP -//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* SHIP#FTP -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -// INCLUDE MEMBER=STEPLIB -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* SHIP#FTP -//* *--------------------------------------------* ISPSLIB(SHIP#FTP) * -## -//* -//* *--------------------------------------------* C1BMXJOB (CONT.) * -//* -//C1BMXRCN DD DATA,DLM=## -//*----PACKAGE SHIPMENT JOB #4 -------------------------- SHIP#FTP -//* *--Package Shipment Confirmation/Notification* ISPSLIB(SHIP#FTP) * -//* -//* *================================================================* -//* * INSTREAM DATASET CONTAINING REMOTE CONFIRMATION JCL -//* *================================================================* -//WHATNTFY IF (RC > 7) THEN -//* -//CONFGT12 EXEC PGM=IEBGENER SHIP#FTP -//SYSUT1 DD DATA,DLM=$$ JOB SHIPPED BACK TO HOST -//&Jobname JOB (55800000),'SHIP &Destination', -// MSGLEVEL=(1,1),CLASS=B,REGION=0M,MSGCLASS=A, -// NOTIFY=&SYSUID TYPRUN=HOLD -// JCLLIB ORDER=(PSP.ENDV.TEAM.JCL) -//* ISPSLIB(SHIP#FTP) -//*--------------------------------------------------------SHIP#FTP -//* MY DESTNAME = &Destination -//* MY FROMNODE = &SENDNODE -//* MY PACKAGE = &Package -//* MY VNBCPARM = C1BMX000,&Date8,&Time8 -//*--------------------------------------------------------SHIP#FTP -//CONFCOPY EXEC PGM=NDVRC1, SHIP#FTP -// PARM='C1BMX000,&Date8,&Time8,CONF,RCPY,EQ,0012,$DEST_ID' -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -// INCLUDE MEMBER=STEPLIB -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//*--------------------------------------------------------SHIP#FTP -//NTFYTGGR EXEC PGM=IEFBR14, SHIP#FTP -// PARM='UPDTTGGR &Destination 12 &VPHPKGID' -//STEPLIB DD DISP=SHR,DSN=&MyAUTULibrary -// DD DISP=SHR,DSN=&MyAUTHLibrary -//* DD DISP=SHR,DSN=&MyLOADLibrary -//CONLIB DD DISP=SHR,DSN=&MyLOADLibrary -//SYSEXEC DD DSN=&MyCLS0Library,DISP=SHR -// DD DSN=&MyCLS2Library,DISP=SHR -//SYSTSPRT DD SYSOUT=* -//*------------------------------------------------------- SHIP#FTP -//DELETES EXEC PGM=IEFBR14 <- Dont delete SHIP#FTP -//SYSPRINT DD SYSOUT=* -//AMSDUMP DD SYSOUT=* -//SYSIN DD * - DELETE '&HSTPFX.*' NONVSAM -//*------------------------------------------------------- SHIP#FTP -//* *--------------------------------------------* SHIP#FTP (CONT.) * -$$ -//SYSUT2 DD DSN=IBMUSER.REMOTE.D&Date6.T&Time6.NOTIFY, -// DISP=(NEW,CATLG,KEEP),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//SYSPRINT DD SYSOUT=* -//SYSIN DD DUMMY -//* *--------------------------------------------* SHIP#FTP (CONT.) * -//WHATNTFY ELSE -//* -//CONFGT00 EXEC PGM=IEBGENER SHIP#FTP -//SYSUT1 DD DATA,DLM=$$ JOB SHIPPED BACK TO HOST -//&Jobname JOB (55800000),'SHIP &Destination', -// MSGLEVEL=(1,1),CLASS=B,REGION=0M,MSGCLASS=A, -// NOTIFY=&SYSUID TYPRUN=HOLD -// JCLLIB ORDER=(PSP.ENDV.TEAM.JCL) -//* ISPSLIB(SHIP#FTP) -//*--------------------------------------------------------SHIP#FTP -//* MY DESTNAME = &Destination -//* MY FROMNODE = &SENDNODE -//* MY PACKAGE = &Package -//* MY VNBCPARM = C1BMX000,&Date8,&Time8 -//*--------------------------------------------------------SHIP#FTP -//CONFCOPY EXEC PGM=NDVRC1, SHIP#FTP -// PARM='C1BMX000,&Date8,&Time8,CONF,RCPY,EQ,0000,$DEST_ID' -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -// INCLUDE MEMBER=STEPLIB -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//*--------------------------------------------------------SHIP#FTP -//NTFYTGGR EXEC PGM=IRXJCL, SHIP#FTP -// PARM='UPDTTGGR &Destination / &VPHPKGID' -//STEPLIB DD DISP=SHR,DSN=&MyAUTULibrary -// DD DISP=SHR,DSN=&MyAUTHLibrary -//* DD DISP=SHR,DSN=&MyLOADLibrary -//CONLIB DD DISP=SHR,DSN=&MyLOADLibrary -//SYSEXEC DD DSN=&MyCLS0Library,DISP=SHR -// DD DSN=&MyCLS2Library,DISP=SHR -//SYSTSPRT DD SYSOUT=* -//*------------------------------------------------------- SHIP#FTP -//DELETES EXEC PGM=IEFBR14 <- Dont delete SHIP#FTP -//SYSPRINT DD SYSOUT=* -//AMSDUMP DD SYSOUT=* -//SYSIN DD * - DELETE '&HSTPFX.*' NONVSAM -//*------------------------------------------------------- SHIP#FTP -$$ -//SYSUT2 DD DSN=IBMUSER.REMOTE.D&Date6.T&Time6.NOTIFY, -// DISP=(NEW,CATLG,KEEP),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//SYSPRINT DD SYSOUT=* -//SYSIN DD DUMMY -//WHATNTFY ENDIF -//* *--------------------------------------------* SHIP#FTP (CONT.) * -//FTPSUBMT EXEC PGM=FTP,REGION=2048K,TIME=800 SHIP#FTP -//NETRC DD DISP=SHR,DSN=&SYSUID..ENDEVOR.NETRC(SHIPPING) -//SYSTSPRT DD SYSOUT=* -//SYSPRINT DD SYSOUT=* -//SYSUDUMP DD SYSOUT=Q -//OUTPUT DD SYSOUT=* SHIP#FTP -//SYSIN DD * - &MyHomeAddress -MODE B -EBCDIC -SITE FILETYPE=JES -PUT 'IBMUSER.REMOTE.D&Date6.T&Time6.NOTIFY' -QUIT -//* *--------------------------------------------* C1BMXJOB (CONT.) * -//REMODELT EXEC PGM=IDCAMS,COND=(4,LT) <-Remote Delete SHIP#FTP -//SYSPRINT DD SYSOUT=* -//AMSDUMP DD SYSOUT=* -//DELETEME DD DSN=IBMUSER.REMOTE.D&Date6.T&Time6.NOTIFY, -// DISP=(SHR,DELETE) -//* DELETE '&&Rmteprefix.D&Date6.T&Time6.&Destination.*' NONVSAM -//SYSIN DD * -## -//* -//* *--------------------------------------------* C1BMXJOB (CONT.) * -//* -//C1BMXLIB DD DATA,DLM=## -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -//STEPLIB DD DISP=SHR,DSN=&MyAUTULibrary -// DD DISP=SHR,DSN=&MyAUTHLibrary -//* DD DISP=SHR,DSN=&MyLOADLibrary -//CONLIB DD DISP=SHR,DSN=&MyLOADLibrary -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -## -//* -//* *--------------------------------------------* C1BMXJOB (CONT.) * -//* -//* ****************************************************************** -//* * SHIP PACKAGE PKG-ID TO DESTINATION DEST-ID ( OPTION BACKOUT ) . -//* ****************************************************************** -//* -//* THE FOLLOWING DD STATEMENT MUST BE THE *LAST* CARD IN THIS MEMBER. -//* ISPSLIB MEMBER C1BMXIN IS INCLUDED AFTER IT AS THE INSTREAM DATA. -//* -//C1BMXIN DD * *-------------------------------* ISPSLIB(SHIP#FTP) * -SHIP PAC '&Package' TO DEST &Destination OPT &ShipOutput . -//* *============================================* ISPSLIB(SHIP#FTP) * -//* *==============================================================* * -//* *==============================================================* * -//* *==============================================================* * -//* *==============================================================* * -//*================================================================ -//* Apply DB2 Masking (if necessary) -//*================================================================ -//DB2MASK EXEC PGM=IKJEFT1B,PARM='DB2MASK &Destination', -// COND=(0,LE) SHIP#FTP -//MASKING DD * - OwnerMask = '&OwnerMask' - QualifierMask = '&QualifierMask' - BindPackageMask = '&BindPackageMask' - PathMask = '&PathMask' -//SHIPREFS DD * - AHREFDSN IBMUSER.HOST.D&Date6.T&Time6.&Destination.AHREF -//SYSTSIN DD DUMMY -//SYSEXEC DD DSN=&MyCLS0Library,DISP=SHR -// DD DSN=&MyCLS2Library,DISP=SHR -//SYSTSPRT DD SYSOUT=* -//*================================================================ -//* Tailor JCL for JOB #2 to be submitted next -//*================================================================ -//TAILOR EXEC PGM=IRXJCL,PARM='ENBPIU00 A ',COND=(10,LE) SHIP#FTP -//MODEL DD DSN=&&XFTC,DISP=(SHR,PASS) -//TABLE DD * -* DO-- - Once -//SYSTSIN DD DUMMY -//OPTIONS DD * - $delimiter ='�' - VNBSQDSP='SHIP PAC '&Package' TO DEST &Destination OPT &ShipOutput .' - VPHPKGID = '&Package' - VNBLSDST = '&Destination' - HSYSEXEC = PSP.ENDV.TEAM.REXX - Userid ='&Userid' - SENDNODE = '&SENDNODE' - VNBCPARM = 'C1BMX000,&Date8,&Time8' - MyCLS0Library = '&MyCLS0Library' - MyCLS2Library = '&MyCLS2Library' -//SYSEXEC DD DSN=&MyCLS0Library,DISP=SHR -// DD DSN=&MyCLS2Library,DISP=SHR -//SYSTSPRT DD SYSOUT=* -//*BLOUT DD SYSOUT=* -//TBLOUT DD SYSOUT=(A,INTRDR) -//SYSPRINT DD SYSOUT=* -//SYSIN DD DUMMY -//*------------------------------------------------------- SHIP#FTP diff --git a/endevor/Shipments-for-Multiple-Destinations/TBLUNLOD.rex b/endevor/Shipments-for-Multiple-Destinations/TBLUNLOD.rex deleted file mode 100644 index 069b81c..0000000 --- a/endevor/Shipments-for-Multiple-Destinations/TBLUNLOD.rex +++ /dev/null @@ -1,130 +0,0 @@ -/* REXX */ 03840000 -/* Examine a 'Table Tool' table and extract its content */03850000 -/* into a REXX stem array format. This allows validation */03850000 -/* of Tables to consider content of multiple tables. */03850000 -/* */03850000 - /* WRITTEN BY DAN WALTHER */ 03870000 - - Arg DSN Request HeadingChar ; - tmp = Translate(DSN,' ','()') - MEMBER = Word(tmp,Words(tmp)) - Sa= 'Request='REQUEST - - STRING = "ALLOC DD(TABLE) DA('"DSN"') SHR REUSE" - CALL BPXWDYN STRING; - "EXECIO * DISKR TABLE (STEM $tablerec. FINIS" - - $TableCommentPrefix = "**"; /* For TABLE comments */ - - $TableHeadingChar = "*" ; /* For TABLE heading */ - If Substr(HeadingChar,1,1) /= ' ' then, - $TableHeadingChar = HeadingChar ; - - /* Find Heading for Table */ - DO $tbl = 1 TO $tablerec.0 /* Look for header or CSV format*/ - /* If not finding a heading, just get out */ - If Substr($tablerec.$tbl,1,2) = $TableCommentPrefix then Iterate ; - If Substr($tablerec.$tbl,1,1) /= $TableHeadingChar then Iterate ; - Leave - End - - If Substr($tablerec.$tbl,1,1) /= $TableHeadingChar then Exit(8) ; - - /* A Heading was found, get column info for Table */ - Call Process_Heading - Call CaptureVariablePositions - If REQUEST = 'ALL' then, - Call CaptureTableContent - - Exit - -/* This routine copied from ENBPUI00 */ -Process_Heading : - - $LastWord = Word($tablerec.$tbl,Words($tablerec.$tbl)); - If DATATYPE($LastWord) = 'NUM' then, - Do - Say 'Please remove sequence numbers from the Table' - Exit(12) - End - - $tmprec = Substr($tablerec.$tbl,2) ; - $PositionSpclChar = POS('-',$tmprec) ; - If $PositionSpclChar = 0 then, - $PositionSpclChar = POS('*',$tmprec) ; - $tmpreplaces = '-,.'$TableHeadingChar ; - $tmprec = TRANSLATE($tmprec,' ',$tmpreplaces); - $table_variables = strip($tmprec); - $Heading_Variable_count = WORDS($table_variables) ; - If $PositionSpclChar = 0 then, - return ; - If $Heading_Variable_count /=, - Words(Substr($tablerec.$tbl,2)) then, - Do - Say 'Invalid table Heading:' $tablerec.$tbl - exit(12) - End - - $heading = Overlay(' ',$tablerec.$tbl,1); /* Space leading * */ - Do $pos = 1 to $Heading_Variable_count - $headingVariable = Word($table_variables,$pos) ; - If $headingVariable = "$my_rc" then, - $headingVariable = "$Temp_RC" - $tmp = Wordindex($heading,$pos) ; - $Starting_$position.$headingVariable = $tmp - $tmp = $tmp + Length(Word($heading,$pos)) -1 ; - $Ending_$position.$headingVariable = $tmp - end; /* DO $pos = 1 to $Heading_Variable_count */ - - $Table_Type = "positions" ; - Return ; - -CaptureVariablePositions: - - $headingvariables = Translate($heading,' ','-*') - Queue "$heading."MEMBER, - "='"Space($headingvariables)"'" - - Do $pos = 1 to $Heading_Variable_count - $headingVariable = Word($table_variables,$pos) ; - Starts=$Starting_$position.$headingVariable - Ends =$Ending_$position.$headingVariable - Queue "Start."MEMBER"."$headingVariable"="Starts - Queue "End."MEMBER"."$headingVariable"="Ends - If REQUEST = 'ALL' then, - Do - Start.MEMBER.$headingVariable=Starts - Ends.MEMBER.$headingVariable=Ends - End - end; /* DO $pos = 1 to $Heading_Variable_count */ - - Return ; - -CaptureTableContent: - - DO $tbl = 1 TO $tablerec.0 /* Capture content of deail recs*/ - Queue "Char@1."MEMBER"."$tbl"= '"Substr($tablerec.$tbl,1,1)"'" - If Substr($tablerec.$tbl,1,2) = $TableCommentPrefix then Iterate ; - If Substr($tablerec.$tbl,1,1) = $TableHeadingChar then Iterate ; - Do $pos = 1 to $Heading_Variable_count - $headingVariable = Word($table_variables,$pos) ; - Starts=$Starting_$position.$headingVariable - Ends =$Ending_$position.$headingVariable - len = Ends - Starts +1 - value = Strip(Substr($tablerec.$tbl,Starts,len)) - $delim = "'" - If Pos("'",value) > 0 then, - Do - $delim = '"' - value = Translate(value,"'",'"') - End - Queue "Value."MEMBER"."$headingVariable"."$tbl"=", - $delim || value ||$delim - end; /* DO $pos = 1 to $Heading_Variable_count */ - - End /* Do Forever */ - - Queue "LastRecord."MEMBER"="$tablerec.0 - - Return ; - diff --git a/endevor/Shipments-for-Multiple-Destinations/UPDTTGGR.rex b/endevor/Shipments-for-Multiple-Destinations/UPDTTGGR.rex deleted file mode 100644 index 41a0b5b..0000000 --- a/endevor/Shipments-for-Multiple-Destinations/UPDTTGGR.rex +++ /dev/null @@ -1,241 +0,0 @@ -/* REXX */ -/* Update the Trigger file at the completion of package shipment */ - - trace o - -/* Variable settings for each site ---> */ - WhereIam = WHERE@M1() - - interpret 'Call' WhereIam "'MyCLS2Library'" - MyCLS2Library = Result - Say 'Running UPDTTGGR in' MyCLS2Library - - interpret 'Call' WhereIam "'TriggerFileName'" - TriggerFileName = Result - - interpret 'Call' WhereIam "'MyDATALibrary'" - MyDATALibrary = Result - ShipRules = MyDATALibrary"(SHIPRULE)" - - interpret 'Call' WhereIam "'MySEN2Library'" - MySEN2Library = Result -/* <---- Variable settings for each site */ - -/* */ -/* This Rexx updates Trigger entries for a package just submitted */ -/* for package shipment. */ -/* It also checks for 'Transfer completed successfully' text */ -/* It is executed by a step in the #PSNFTPE shipment member . */ - - ARG Destination Calltype Package ; - - Jobnumber = '' ; /* replace if one is found */ - If Calltype = '#PSNFTPE' then, - Do - /* Read the FTP output */ - MyRC= 0 ; - Call ScanFTPOutput ; - If MyRC > 0 then Exit(MyRC) ; - - If Jobnumber = '' then Exit(MyRC) ; - End /* If Calltype = '#PSNFTPE' */ - - Call AllocateTriggerForUpdate ; - Call UpdateTriggerEntry ; - Call FreeTriggerFile ; - -/* */ -/* All Done */ -/* */ - - Exit - -/* */ -/* Allocate the Rules member for Read only */ -/* */ - -ScanFTPOutput: - - "Execio * DISKR FTPOUT (Stem ftp. finis " - IF RC > 0 then EXIT(8) - If ftp.0 < 1 then EXIT(8) - - "Execio * DISKW OUTPUT (Stem ftp. finis " - - MyRC= 8 ; - Do f# = 1 to ftp.0 - ftp@ = Substr(ftp.f#,2) - w1 = Word(ftp@,1) - w2 = Word(ftp@,2) - w3 = Word(ftp@,3) - w4 = Word(ftp@,4) - if w2='Transfer' & w3='completed' & w4='Successfully' then, - Do - MyRC= 0 ; - Leave ; - End - w5 = Word(ftp@,5) - w6 = Word(ftp@,6) - w7 = Word(ftp@,7) - /* 250-It is known to JES as JOB32058 */ - if w3='known' & w4='to' & w5='JES' & w6='as' then, - Do - Jobnumber = w7; - MyRC= 0 ; - Leave ; - End - End ; /* Do f# = 1 to ftp.0 */ - - Return ; - -AllocateTriggerForUpdate: - - STRING = "ALLOC DD(TRIGGER)", - " DA('"TriggerFileName"') OLD REUSE" - seconds = '000005' /* Number of Seconds to wait if needed */ - - Do Forever /* or at least until the file is available */ - CALL BPXWDYN STRING; - MyRC = RC - MyResult = RESULT ; - If MyResult = 0 then Leave - Call WaitAwhile - End /* Do Forever */ - - Return ; - -UpdateTriggerEntry: - - - "Execio * DISKR TRIGGER (Stem $tablerec. finis " - - $tbl = 1 ; - $TableHeadingChar = '*' - /* Build all the ...pos variables from heading */ - Call Process_Trigger_Heading ; - - WeHaveAnUpdate = 'N' - Do t# = $tablerec.0 to 1 by -1 - Say 'Examining Trigger entry for ', - Substr($tablerec.t#,Packagepos,16), - Substr($tablerec.t#,Destinationpos,08) - Say ' for match with... ', - Left(Package,16) Left(Destination,08) - If (Calltype = '#PSNFTPE' & , - Substr($tablerec.t#,Stpos,01) /= 's') then iterate ; - If Substr($tablerec.t#,Packagepos,16) /=, - Left(Package,16) then iterate ; - If Substr($tablerec.t#,Destinationpos,08) /= , - Left(Destination,08) then iterate ; - /* We have a match */ - If Calltype = '#PSNFTPE' then, - Do - /* Update Job number */ - $tablerec.t# = Overlay(Jobnumber' ',$tablerec.t#,Jobnumberpos) - /* Update status */ - $tablerec.t# = Overlay('S',$tablerec.t#,Stpos) - End; - Else, - $tablerec.t# = Overlay(Calltype,$tablerec.t#,Stpos) ; - WeHaveAnUpdate = 'Y' - msg='Updating ... ', - Left(Package,16) Left(Destination,08) - If Jobnumber /= '' then msg = msg, - ' Submitted job' Jobnumber - Say msg ; - Leave ; - End /* Do t# = 1 to $tablerec. */ - - If WeHaveAnUpdate = 'Y' then, - "Execio * DISKW TRIGGER (Stem $tablerec. finis " - - Return ; - -/* */ -/* Free the Trigger File */ -/* */ - -FreeTriggerFile: - - STRING = "FREE DD(TRIGGER)" - CALL BPXWDYN STRING ; - - Return ; - -/* */ -/* Convert Date formats */ -/* */ - -WaitAwhile: - /* */ - /* A resource is unavailable. Wait awhile and try */ - /* accessing the resource again. */ - /* */ - /* The length of the wait is designated in the parameter */ - /* value which specifies a number of seconds. */ - /* A parameter value of '000003' causes a wait for 3 seconds. */ - /* */ - - seconds = Abs(seconds) - seconds = Trunc(seconds,0) - Say "Waiting for" seconds "seconds at " DATE(S) TIME() - - /* AOPBATCH and BPXWDYN are IBM programs */ - CALL BPXWDYN "ALLOC DD(STDOUT) DUMMY SHR REUSE" - CALL BPXWDYN "ALLOC DD(STDERR) DUMMY SHR REUSE" - CALL BPXWDYN "ALLOC DD(STDIN) DUMMY SHR REUSE" - - /* AOPBATCH and BPXWDYN are IBM programs */ - parm = "sleep "seconds - Address LINKMVS "AOPBATCH parm" - - Return - -Process_Trigger_Heading : -/* The subroutine below is modified from the TBL#TOOL */ - - $tbl = 1 ; - $TableHeadingChar = '*' - - $LastWord = Word($tablerec.$tbl,Words($tablerec.$tbl)); - If DATATYPE($LastWord) = 'NUM' then, - Do - Say 'Please remove sequence numbers from the Table' - Exit(12) - End - - $tmprec = Substr($tablerec.$tbl,2) ; - $PositionSpclChar = POS('-',$tmprec) ; - If $PositionSpclChar = 0 then, - $PositionSpclChar = POS('*',$tmprec) ; - $tmpreplaces = '-,.'$TableHeadingChar ; - $tmprec = TRANSLATE($tmprec,' ',$tmpreplaces); - $table_variables = strip($tmprec); - $Heading_Variable_count = WORDS($table_variables) ; - If $Heading_Variable_count /=, - Words(Substr($tablerec.$tbl,2)) then, - Do - Say 'Invalid table Heading:' $tablerec.$tbl - exit(12) - End - - $heading = Overlay(' ',$tablerec.$tbl,1); /* Space leading * */ - Do $pos = 1 to $Heading_Variable_count - $HeadingVariable = Word($table_variables,$pos) ; - $tmp = Wordindex($Heading,$pos) ; - $Starting_$position.$HeadingVariable = $tmp - $tmp = $tmp + Length(Word($Heading,$pos)) -1 ; - $Ending_$position.$HeadingVariable = $tmp - - /* Build ...pos variables and values */ - tmp = ""$HeadingVariable"pos =", - $Starting_$position.$HeadingVariable - Sa= tmp - Interpret tmp - - end; /* DO $pos = 1 to $Heading_Variable_count */ - - $Heading = Translate($Heading,' ','-*') - - Return ; - diff --git a/endevor/Shipments-for-Multiple-Destinations/WHERE@M1.rex b/endevor/Shipments-for-Multiple-Destinations/WHERE@M1.rex deleted file mode 100644 index e056d96..0000000 --- a/endevor/Shipments-for-Multiple-Destinations/WHERE@M1.rex +++ /dev/null @@ -1,5 +0,0 @@ -/* REXX */ -/* Names the member that contains your site-specific settings. */ -/* Override to another value if you prefer ---> */ -WhereIam = Strip(Left("@"MVSVAR(SYSNAME),8)) ; -Return (WhereIam) diff --git a/endevor/Shipments-for-Multiple-Destinations/WHEREAMI.rex b/endevor/Shipments-for-Multiple-Destinations/WHEREAMI.rex deleted file mode 100644 index 731fa62..0000000 --- a/endevor/Shipments-for-Multiple-Destinations/WHEREAMI.rex +++ /dev/null @@ -1,5 +0,0 @@ -/* REXX */ -/* Names the member that contains your site-specific settings. */ -WhereIam = Strip(Left("@"MVSVAR(SYSNAME),8)) ; -Say 'WhereIam =' WhereIam -EXIT diff --git a/endevor/Shipments-for-a-Single-Destination/@site.rex b/endevor/Shipments-for-a-Single-Destination (zowe)/@site.rex similarity index 100% rename from endevor/Shipments-for-a-Single-Destination/@site.rex rename to endevor/Shipments-for-a-Single-Destination (zowe)/@site.rex diff --git a/endevor/Shipments-for-a-Single-Destination (zowe)/IZUFNDVR.jcl b/endevor/Shipments-for-a-Single-Destination (zowe)/IZUFNDVR.jcl new file mode 100644 index 0000000..de32acf --- /dev/null +++ b/endevor/Shipments-for-a-Single-Destination (zowe)/IZUFNDVR.jcl @@ -0,0 +1,46 @@ +//IZUFPROC PROC ROOT='/usr/lpp/zosmf' /* zOSMF INSTALL ROOT */ +// EXPORT SYMLIST=(XX) +// SET QT='''' +// SET XX=&QT.&ROOT.&QT. +//IZUFPROC EXEC PGM=IKJEFT01,DYNAMNBR=200,REGION=0M +//****************************************************************/ +//* TSO LOGON PROC FOR Z/OS DATA SET AND FILE REST INTERFACE */ +//* and Endevor access */ +//****************************************************************/ +//* +//STEPLIB DD DISP=SHR,DSN=YOURSITE.NDVR.CSIQAUTU +// DD DISP=SHR,DSN=YOURSITE.NDVR.CSIQAUTH +// DD DISP=SHR,DSN=YOURSITE.NDVR.CSIQLOAD +//CONLIB DD DISP=SHR,DSN=YOURSITE.NDVR.CSIQLOAD +//* +//SYSEXEC DD DISP=SHR,DSN=YOUR.NDVR.TEAM.REXX +// DD DISP=SHR,DSN=YOUR.SISPEXEC +// DD DISP=SHR,DSN=SYS1.SBPXEXEC +// DD DISP=SHR,DSN=YOUR.SISFEXEC +//SYSHELP DD DISP=SHR,DSN=SYS1.HELP +// DD DISP=SHR,DSN=YOUR.SISFHELP +//ISPLLIB DD DISP=SHR,DSN=SYS1.SIEALNKE +// DD DISP=SHR,DSN=YOUR.SISPLOAD +//SYSPROC DD DISP=SHR,DSN=YOUR.NDVR.TEAM.REXX +// DD DISP=SHR,DSN=OTHER.COMMON.CLIST +// DD DISP=SHR,DSN=YOURSITE.NDVR.CSIQCLS0 +// DD DISP=SHR,DSN=YOUR.SISPCLIB +// DD DISP=SHR,DSN=SYS1.SBPXEXEC +//ISPPLIB DD DISP=SHR,DSN=YOUR.SISPPENU +// DD DISP=SHR,DSN=YOUR.SISFPLIB +//ISPTLIB DD RECFM=FB,LRECL=80,SPACE=(TRK,(1,0,1)) +// DD DISP=SHR,DSN=YOUR.SISPTENU +// DD DISP=SHR,DSN=YOUR.SISFTLIB +//ISPSLIB DD DISP=SHR,DSN=YOUR.NDVR.TEAM.ISPSLIB +// DD DISP=SHR,DSN=YOUR.SISPSENU +// DD DISP=SHR,DSN=YOUR.SISFSLIB +//ISPMLIB DD DISP=SHR,DSN=YOUR.SISPMENU +// DD DISP=SHR,DSN=YOUR.SISFMLIB +//IZUSRVMP DD PATH='&ROOT./defaults/izurf.tsoservlet.mapping.json' +//SYSOUT DD SYSOUT=* +//SYSPRINT DD SYSOUT=* +//SYSTSPRT DD SYSOUT=* +//CEEDUMP DD SYSOUT=H +//SYSUDUMP DD SYSOUT=H +//ISPPROF DD DISP=NEW,UNIT=SYSDA,SPACE=(TRK,(15,15,5)), +// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120) diff --git a/endevor/Shipments-for-a-Single-Destination (zowe)/PKGESHIP.rex b/endevor/Shipments-for-a-Single-Destination (zowe)/PKGESHIP.rex new file mode 100644 index 0000000..7087528 --- /dev/null +++ b/endevor/Shipments-for-a-Single-Destination (zowe)/PKGESHIP.rex @@ -0,0 +1,541 @@ +/* REXX */ +/* THESE ROUTINES ARE DISTRIBUTED BY THE CA TECHNOLOGIES STAFF + "AS IS". NO WARRANTY, EITHER EXPRESSED OR IMPLIED, IS MADE + FOR THEM. CA TECHNOLOGIES CANNOT GUARANTEE THAT THE ROUTINES + ARE ERROR FREE, OR THAT IF ERRORS ARE FOUND, THEY WILL BE + CORRECTED. +*/ +/* + This REXX submits automatically 0 or more package shipping + jobs. +*/ +/* WRITTEN BY DAN WALTHER */ + +/* Runs only 4 userid = IBMUSER (if uncommented) */ +/* + If USERID() /= 'IBMUSER' then Exit +*/ + /* <---- Variable settings for each site */ + + STRING = "ALLOC DD(SYSTSPRT) SYSOUT(A) " + CALL BPXWDYN STRING; + Trace Off + + /* If a DDNAME of PKGESHIP is allocated, then Trace */ + WhatDDName = 'PKGESHIP' + CALL BPXWDYN "INFO FI("WhatDDName")", + "INRTDSN(DSNVAR) INRDSNT(myDSNT)" + if Substr(DSNVAR,1,1) /= ' ' then TraceRc = 1; + IF TraceRc = 1 then Trace R + + STRING = "ALLOC DD(SYSPRINT) SYSOUT(A) " + CALL BPXWDYN STRING; + +/* Variable settings for each site ---> */ + WhereIam = WHERE@M1() + RunUnderAltid = 'N' ; /* Y/N */ + + /* The site determines whether to engage Endevor hooks */ + EndevorHooks = 'N' + + /* If just shipping to one destination, then use */ + /* ShipSchedulingMethod = 'One ' */ + /* if there only a few destinations (in notes), then use */ + /* ShipSchedulingMethod = 'Notes' */ + /* if using a RULES file and Trigger, then use */ + /* ShipSchedulingMethod = 'Rules' */ + interpret 'Call' WhereIam "'ShipSchedulingMethod'" + ShipSchedulingMethod = Result + + If ShipSchedulingMethod = 'One' then, + Do + interpret 'Call' WhereIam "'Destination'" + Destination = Result + interpret 'Call' WhereIam "'Destination'" + Destination = Result + interpret 'Call' WhereIam "'Hostprefix'" + Hostprefix = Result + interpret 'Call' WhereIam "'Rmteprefix'" + Rmteprefix = Result + interpret 'Call' WhereIam "'ModelMember'" + ModelMember = Result + End + interpret 'Call' WhereIam "'SHLQ'" + SHLQ = Result + + interpret 'Call' WhereIam "'MyAUTHLibrary'" + MyAUTHLibrary = Result + interpret 'Call' WhereIam "'MyAUTULibrary'" + MyAUTULibrary = Result + interpret 'Call' WhereIam "'MyLOADLibrary'" + MyLOADLibrary = Result + + interpret 'Call' WhereIam "'MySEN2Library'" + MySEN2Library = Result + + interpret 'Call' WhereIam "'MySENULibrary'" + MySENULibrary = Result + + interpret 'Call' WhereIam "'MyOPT2Library'" + MyOPT2Library = Result + + interpret 'Call' WhereIam "'MyOPTNLibrary'" + MyOPTNLibrary = Result + + interpret 'Call' WhereIam "'MyCLS0Library'" + HSYSEXEC = Result + MyCLS0Library = HSYSEXEC + + interpret 'Call' WhereIam "'MyCLS2Library'" + HSYSEXEC = Result + MyCLS2Library = HSYSEXEC + Say 'Running PKGESHIP in' MyCLS2Library + + interpret 'Call' WhereIam "'AltIDAcctCode'" + AltIDAcctCode= Result + + interpret 'Call' WhereIam "'AltIDJobClass'" + AltIDJobClass= Result + + interpret 'Call' WhereIam "'AltIDMsgClass'" + AltIDMsgClass= Result + + interpret 'Call' WhereIam "'TransmissionModels'" + TransmissionModels = Result + + interpret 'Call' WhereIam "'MyHomeAddress'" + MyHomeAddress = Result + + ARG Parms ; + +/* if called by zowe, then this is the Argument .... */ + If Length(Parms) < 18 then, + Do + Package = Translate(Parms,' ',"'") + Package = Strip(Package) + Say Length(Package) Package + PkgExecJobname = USERID() || 'S' /*Userid + S */ + End /* If Length(Parms) < 18 */ + Else + Do + /* if called by exit, then these are the Arguments.... */ + Notes.7 = Substr(PARMS,414,60) ; + If Substr(Notes.7,1,5) = 'TRACE' then Trace r + Package = Substr(PARMS,1,16) ; + + Environ = Substr(PARMS,18,08) ; + Stage = Substr(PARMS,27,01) ; + CREATE_USER = Substr(PARMS,29,08) ; + UPDATE_USER = Substr(PARMS,37,08) ; + CAST_USER = Substr(PARMS,45,08) ; + Notes.1 = Substr(PARMS,054,60) ; + Notes.2 = Substr(PARMS,114,60) ; + Notes.3 = Substr(PARMS,174,60) ; + Notes.4 = Substr(PARMS,234,60) ; + Notes.5 = Substr(PARMS,294,60) ; + Notes.6 = Substr(PARMS,354,60) ; + Notes.7 = Substr(PARMS,414,60) ; + Notes.8 = Substr(PARMS,474,60) ; + ShipOutput = Substr(PARMS,584,03) ; + PkgExecJobname = MVSVAR('SYMDEF',JOBNAME ) /*Returns JOBNAME */ + End /* Else */ + +/* If ShipOutput /= 'BAC' THEN ShipOutput = 'OUT' */ + TYPRUN = ' ' + +/* IF you want to use the package prefix to select packages */ +/* for shipments, then tailor and uncomment the next line: */ +/* If Substr(Package,1,2) /= 'PR' then exit */ + +/* If ShipOutput /= 'BAC' THEN ShipOutput = 'OUT' */ + TYPRUN = ' ' +/* */ +/* This Rexx participates in the submission of Endevor Package */ +/* Shipment jobs. It is called by the Endevor exit program C1UEXT07 */ +/* */ +/* First. See if the package has any package backouts ... */ +/* */ + Call CSV_to_List_Package_Id + If BACKOUT_RCD_EXIST = 'N' then Exit +/* Allocate and prepare files for updating the shipment transaction */ +/* file, and submitting package shipments for those scheduled for */ +/* immediate submission. */ +/* */ + + Userid = USERID() + Date8 = DATE('S') + Date6 = substr(Date8,3); + Temp = TIME('L') + + Time8 = Substr(Temp,1,2) ||, + Substr(Temp,4,2) ||, + Substr(Temp,7,2) ||, + Substr(Temp,10,2) ; + Time6 = Substr(Temp,1,2) ||, + Substr(Temp,4,2) ||, + Substr(Temp,7,2) ; + + TodaysDate = DATE('S') ; + NOW = TIME(L); + HOUR = SUBSTR(NOW,1,2) ; + IF HOUR = '00' THEN HOUR = '0' + MINUTE = SUBSTR(NOW,4,2) ; + CurrentTime= HOUR || MINUTE ; + SENDNODE = MVSVAR(SYSNAME) + ShipOutput = 'OUT' + VDDRSPFX = 'PSP.ENDV' + + $All_VARIABLES = "Jobname Destination Userid ", + "PkgExecJobname MyOPTNLibrary MyAUTULibrary ", + "MyAUTHLibrary MyLOADLibrary MyCLS0Library ", + "MyHomeAddress ", + "Package Date8 Date6 Time8 Time6 Notify ", + "Typrun SENDNODE $delimiter ShipOutput ", + "SHLQ MySEN2Library MySENULibrary MyOPT2Library ", + "MyCLS2Library AltIDAcctCode AltIDJobClass ", + "AltIDMsgClass VDDRSPFX HSYSEXEC OUT" + + Trace R + sa= 'Back to PKGESHIP' + /* If Scheduling Package Shipments, then BILDTGGR */ + /* determines sites and updates the Trigger file . */ + /* If any Sites can receive Shipments immediately, then */ + /* BILDTGGR indicates so in its Return code. */ + If ShipSchedulingMethod = 'Rules' then, + Do + BildRC = BILDTGGR(Parms) + /* The immediate shipments are queued by BILDTGGR in a Table */ + If BildRC = 1 then, + Do + Userid = USERID() ; + PULLTGGRParms = Userid'.PULLTGGR' MySEN2Library + Call PULLTGGR PULLTGGRParms ; + End + End /* SchedulingPackageShipBundle */ + Else, + If ShipSchedulingMethod = 'Notes' then, + Do n# = 8 to 1 by -1 + /* Pulling shipment data from package notes */ + /* Examine Package notes to find Destination and schedule info */ + /* - Submit Package Shipments for those that can be submitted */ + /* immeditely. */ + /* (future submissions are not supported ) */ + tmp = NOTES.n# ; + if Substr(tmp,1,3) /= "TO " then leave ; + if Substr(tmp,12,2) /= ": " then leave ; + tmp = Substr(OVERLAY(" ",tmp,12),3) ; + Destination = Word(tmp,1) ; + /* Default to first model */ + ModelMember = Word(TransmissionModels,1) + /* Get info for Destination */ + Call GetDestinationInfo; + Hostprefix = Strip(Substr(apiDestinations.1,079,14)) + Rmteprefix = Strip(Substr(apiDestinations.1,113,14)) + /* + */ + Date = Word(tmp,2) ; + Time = Word(tmp,3) ; + Jobname = Word(tmp,4) ; + If Words(tmp) > 4 then, + If Word(tmp,5) = "HOLD" then, + Notify = Notify",TYPRUN=HOLD" + If Date <= TodaysDate &, + Time <= CurrentTime then, + Do + Call AllocateModel; + Call SubmitPackageShipmentFromNotes; + End ; + tmp = Substr(OVERLAY(" ",tmp,12),3) ; + End; /* Do n# = 8 to 1 by -1 */ + Else, /* Is there only one Destination etc */ + If ShipSchedulingMethod = 'One' then, + Do + JobName = PkgExecJobname + Call AllocateModel; + Call SubmitPackageShipmentFromNotes; + End; /* .. Else... */ + +/* */ +/* All Done */ +/* */ + + Exit + +AllocateModel: +/* */ +/* Submit immediate package shipment jobs */ +/* */ +/* Allocate files */ +/* */ +/* A Model is used for building Package Shipment JCL */ +/* */ + STRING = 'ALLOC DD(MODEL) ', + "DA('"MySEN2Library"("ModelMember")') SHR REUSE " + CALL BPXWDYN STRING; + + Return; + +SubmitPackageShipmentFromNotes: +/* */ +/* This subroutine is modified from the TBL#TOOL */ +/* */ + + "EXECIO * DISKR "MODEL "(STEM $Model. FINIS" ; + $delimiter = "|" ; + + + DO $LINE = 1 TO $Model.0 + $PLACE_VARIABLE = 1; + CALL EVALUATE_SYMBOLICS ; + END; /* DO $LINE = 1 TO $Model.0 */ + + STRING = "ALLOC DD(SHIPJCL) LRECL(80) BLKSIZE(27920) ", + " DSORG(PS) ", + " SPACE(2,2) RECFM(F,B) TRACKS ", + " NEW UNCATALOG REUSE "; + CALL BPXWDYN STRING; + + "EXECIO * DISKW SHIPJCL (STEM $Model. FINIS" ; + + If RunUnderAltid = 'Y' then CALL SWAP2ALT + Call Submit_Job ; + If RunUnderAltid = 'Y' then CALL SWAP2USR + + Drop $Model. ; + + STRING = "FREE DD(SHIPJCL) DELETE" + CALL BPXWDYN STRING; + + RETURN; + +/* */ +/* The subroutine below is borrowed from the TBL#TOOL */ +/* */ +EVALUATE_SYMBOLICS: + + DO FOREVER; + $PLACE_VARIABLE = POS('&',$Model.$LINE,$PLACE_VARIABLE) + IF $PLACE_VARIABLE = 0 THEN LEAVE; + $temp_$LINE = TRANSLATE($Model.$LINE,' ',',.()"/\+-*|'); + $temp_$LINE = TRANSLATE($temp_$LINE,' ',"'"$delimiter); + $table_word = WORD(SUBSTR($temp_$LINE,($PLACE_VARIABLE+1)),1); + $table_word = TRANSLATE($table_word,'_','-') ; + $varlen = LENGTH($table_word) + 1 ; + + if WORDPOS($table_word,$All_VARIABLES) = 0 then, + do + $PLACE_VARIABLE = $PLACE_VARIABLE + 1 ; + iterate; + end; + + $temp_word = VALUE($table_word) ; + IF DATATYPE($temp_word,S) = 9 THEN, + $temp = 'SYMBVALUE = ' $temp_word ; + ELSE, + $temp = "SYMBVALUE = '"$temp_word"'" ; + INTERPRET $temp; + SA= 'SYMBVALUE = ' SYMBVALUE ; + + $tail = SUBSTR($Model.$LINE,($PLACE_VARIABLE+$varlen)) ; + if Substr($tail,1,1) = $delimiter then, + $tail = SUBSTR($tail,2) ; + IF $PLACE_VARIABLE > 1 THEN, + $Model.$LINE = , + SUBSTR($Model.$LINE,1,($PLACE_VARIABLE-1)) ||, + SYMBVALUE || $tail ; + else, + $Model.$LINE = , + SYMBVALUE || $tail ; + END; /* DO FOREVER */ + + RETURN; + +Submit_Job: + + "Execio * DISKR SHIPJCL ( Stem jcl. finis" + "Execio * DISKW SYSTSPRT ( Stem jcl. " + + STRING = "ALLOC DD(SUBMIT)", + "SYSOUT(A) WRITER(INTRDR) REUSE " ; + CALL BPXWDYN STRING; + "Execio * DISKW SUBMIT ( Stem jcl. finis" + + STRING = "FREE DD(SUBMIT)" + CALL BPXWDYN STRING; + + RETURN; + +GetDestinationInfo: + + /* Set values for Hostprefix and Rmteprefix */ + /* From the site definition */ + + /* Call API to Get Destination information */ + + + ADDRESS TSO + "ALLOC F(BSTAPI) DA(*) REUSE " + "ALLOC F(BSTERR) DA(*) REUSE " + STRING = "ALLOC DD(APIMSGS) LRECL(133) BLKSIZE(13300) ", + " DSORG(PS) ", + " SPACE(1,1) RECFM(F,B) TRACKS ", + " NEW UNCATALOG REUSE "; + CALL BPXWDYN STRING; + + STRING = "ALLOC DD(APILIST) LRECL(2048) BLKSIZE(22800) ", + " DSORG(PS) ", + " SPACE(1,1) RECFM(V,B) TRACKS ", + " NEW UNCATALOG REUSE "; + CALL BPXWDYN STRING; + + /* Call API to Get Destination information */ + parm = Left(Destination'*',7) + + ADDRESS TSO "CALL *(APIALDST) '"||parm||"'" + RETURN_RC = RC ; + If RETURN_RC > 0 then, + DO + SA= 'CANNOT GET INFORMATION FROM ENDEVOR' ; + EXIT + END ; + "EXECIO * DISKR APILIST ( Stem apiDestinations. FINIS" + STRING = "FREE DD(APILIST)" + CALL BPXWDYN STRING; + STRING = "FREE DD(APIMSGS)" + CALL BPXWDYN STRING; + STRING = "FREE DD(BSTAPI) " + CALL BPXWDYN STRING; + STRING = "FREE DD(BSTERR) " + CALL BPXWDYN STRING; + + Return ; + +CSV_to_List_Package_Id: + + /* To Search the package shipping table, we need the Entry */ + /* Environment information as a search criteria. */ + /* Get it from the USER-DATA field on the 1st element. */ + + + STRING = "ALLOC DD(C1MSGS1) DUMMY " + CALL BPXWDYN STRING; + STRING = "ALLOC DD(BSTERR) DUMMY " + CALL BPXWDYN STRING; + STRING = "ALLOC DD(BSTAPI) DUMMY " + CALL BPXWDYN STRING; + + STRING = "ALLOC DD(EXTRACTM) LRECL(4000) BLKSIZE(32000) ", + " DSORG(PS) ", + " SPACE(1,5) RECFM(F,B) TRACKS ", + " NEW UNCATALOG REUSE "; + CALL BPXWDYN STRING; + + STRING = "ALLOC DD(BSTIPT01) LRECL(80) BLKSIZE(800) ", + " DSORG(PS) ", + " SPACE(1,5) RECFM(F,B) TRACKS ", + " NEW UNCATALOG REUSE "; + CALL BPXWDYN STRING; + + QUEUE "LIST PACKAGE ID '"Package"'" + QUEUE " TO DDNAME 'EXTRACTM' " + QUEUE " ." + + "EXECIO" QUEUED() "DISKW BSTIPT01 (FINIS "; + + ADDRESS LINK 'BC1PCSV0' ; /* load from authlib */ + +/* ADDRESS TSO 'ISRDDN' */ + call_rc = rc ; + + "EXECIO * DISKR EXTRACTM (STEM API. finis" + + STRING = "FREE DD(EXTRACTM)" ; + CALL BPXWDYN STRING; + STRING = "FREE DD(BSTIPT01)" ; + CALL BPXWDYN STRING; + STRING = "FREE DD(C1MSGS1)" ; + CALL BPXWDYN STRING; + STRING = "FREE DD(BSTERR)" ; + CALL BPXWDYN STRING; + STRING = "FREE DD(BSTAPI)" ; + CALL BPXWDYN STRING; + + IF API.0 < 2 THEN RETURN; + + $table_variables= Strip(API.1,'T') + + $table_variables = translate($table_variables,"_"," ") ; + $table_variables = translate($table_variables," ",',"') ; + $table_variables = translate($table_variables,"@","/") ; + $table_variables = translate($table_variables,"@",")") ; + $table_variables = translate($table_variables,"@","(") ; + $table_variables = translate($table_variables,"_","-") ; + + Do rec# = 2 to API.0 + $detail = API.rec# + + Trace off + /* Parse the Detail record until done */ + Do $column = 1 to Words($table_variables) + Call ParseDetailCSVline + End + Trace r + End; /* Do rec# = 1 to API.0 */ + + RETURN ; + + +ParseDetailCSVline: + + /* Find the data for the current $column */ + + $dlmchar = Substr($detail,1,1); + + If $dlmchar = "'" then, + Do + SA= 'parsing with single quote ' + PARSE VAR $detail "'" $temp_value "'" $detail ; + If Substr($detail,1,1) = ',' then, + $detail = Strip(Substr($detail,2),'L') + End + Else, + If $dlmchar = '"' then, + Do + SA= 'parsing with double quote ' + PARSE VAR $detail '"' $temp_value '"' $detail ; + If Substr($detail,1,1) = ',' then, + $detail = Strip(Substr($detail,2),'L') + End + Else, + If $dlmchar = ',' then, + Do + SA= 'parsing with comma ' + PARSE VAR $detail ',' $temp_value ',' $detail ; + If Substr($detail,1,1)/= ',' then, + $detail = "," || $detail + $detail = Strip(Substr($detail,2),'L') */ + End + Else, + If Words($detail) = 0 then, + $temp_value = ' ' + Else, + Do + SA= 'parsing with comma ' + PARSE VAR $detail $temp_value ',' $detail ; + Sa= '$temp_value=>' $temp_value '<' + End + $temp_value = STRIP($temp_value) ; + $rslt = $temp_value + $rslt = Strip($rslt,'B','"') ; + $rslt = Strip($rslt,'B',"'") ; + if Length($rslt) < 1 then $rslt = ' ' + if Length($rslt) < 250 then, + $temp = WORD($table_variables,$column) '= "'$rslt'"'; + Else, + $temp = WORD($table_variables,$column) "=$rslt" + If rec# < 0 then Say $temp + Say $temp; + Interpret $temp; + + RETURN ; + diff --git a/endevor/Shipments-for-a-Single-Destination/README.md b/endevor/Shipments-for-a-Single-Destination (zowe)/README.md similarity index 74% rename from endevor/Shipments-for-a-Single-Destination/README.md rename to endevor/Shipments-for-a-Single-Destination (zowe)/README.md index 10a178a..da0bb63 100644 --- a/endevor/Shipments-for-a-Single-Destination/README.md +++ b/endevor/Shipments-for-a-Single-Destination (zowe)/README.md @@ -40,4 +40,37 @@ Setup steps for the REXX-based objects for zowe package shipment automation: - Enter the dataset name of the tailored JCL into the `Lpar-named-REXX` as the `MySEN2Library`. - Enter the member name of the tailored JCL into the `Lpar-named-REXX` as the `ModelMember`. - f) Execute your zowe command, for example: `zowe zos-tso issue command "PKGESHIP 'name-of-package'"` + f) Execute your zowe command, for example: `zowe zo-tso issue command "PKGESHIP 'name-of-package'"` + + +## Find items at the these locations: + +**item** Location + +**@site.rex** - endevor\Shipments-for-Single-Destinations + +**BILDTGGR.rex** - endevor\Field-Developed-Programs\Package-Automation + +**IZUFNDVR.jcl** - endevor\Shipments-for-a-Single-Destination + +**PKGESHIP.rex** - endevor\Shipments-for-a-Single-Destination + +**PULLTGGR.rex** - endevor\Field-Developed-Programs\Package-Automation + +**SHIP#FTP.skl** - endevor\Field-Developed-Programs\Package-Automation + +**other models** - endevor\Field-Developed-Programs\Package-Automation + +**SHIPRULE** - endevor\Shipments-for-Multiple-Destinations + endevor\Field-Developed-Programs\Package-Automation + +**TBLUNLOD.rex** - endevor\Field-Developed-Programs\Package-Automation + +**Trigger** - endevor\Shipments-for-Multiple-Destinations + endevor\Field-Developed-Programs\Package-Automation + +**UPDTTGGR.rex** - endevor\Field-Developed-Programs\Package-Automation + +**WHERE@M1.rex** - endevor\Field-Developed-Programs\Package-Automation + +**WHEREAMI.rex** - endevor\Field-Developed-Programs\Package-Automation + +**JCLCOMMT.rex** - endevor\Field-Developed-Programs\ISPF-tools-for-Quick-Edit-and-Endevor diff --git a/endevor/Shipments-for-a-Single-Destination/IZUFNDVR.jcl b/endevor/Shipments-for-a-Single-Destination/IZUFNDVR.jcl deleted file mode 100644 index 06859ca..0000000 --- a/endevor/Shipments-for-a-Single-Destination/IZUFNDVR.jcl +++ /dev/null @@ -1,53 +0,0 @@ -//IZUFPROC PROC ROOT='/usr/lpp/zosmf' /* zOSMF INSTALL ROOT */ -// EXPORT SYMLIST=(XX) -// SET QT='''' -// SET XX=&QT.&ROOT.&QT. -//IZUFPROC EXEC PGM=IKJEFT01,DYNAMNBR=200,REGION=0M -//****************************************************************/ -//* TSO LOGON PROC FOR Z/OS DATA SET AND FILE REST INTERFACE */ -//* and Endevor access */ -//* */ -//* PROPRIETARY STATEMENT: */ -//* */ -//* LICENSED MATERIALS - PROPERTY OF IBM */ -//* 5650-ZOS */ -//* COPYRIGHT IBM CORP. 2014, 2016 */ -//* STATUS = HSMA220 */ -//****************************************************************/ -//* -//STEPLIB DD DISP=SHR,DSN=SHARE.NDVR.R181.CSIQAUTU **added** -// DD DISP=SHR,DSN=SHARE.NDVR.R181.CSIQAUTH **added** -// DD DISP=SHR,DSN=SHARE.NDVR.R181.CSIQLOAD **added** -//CONLIB DD DISP=SHR,DSN=SHARE.NDVR.R181.CSIQLOAD **added** -//* -//SYSEXEC DD DISP=SHR,DSN=PSP.ENDV.TEAM.REXX **added** -// DD DISP=SHR,DSN=ISP.SISPEXEC -// DD DISP=SHR,DSN=SYS1.SBPXEXEC -// DD DISP=SHR,DSN=ISF.SISFEXEC -//SYSHELP DD DISP=SHR,DSN=SYS1.HELP -// DD DISP=SHR,DSN=ISF.SISFHELP -//ISPLLIB DD DISP=SHR,DSN=SYS1.SIEALNKE -// DD DISP=SHR,DSN=ISP.SISPLOAD -//SYSPROC DD DISP=SHR,DSN=PSP.ENDV.TEAM.REXX **added** -// DD DISP=SHR,DSN=UKDEMO.MC66.COMMON.CLIST -// DD DISP=SHR,DSN=SHARE.NDVR.R181.CSIQCLS0 -// DD DISP=SHR,DSN=ISP.SISPCLIB -// DD DISP=SHR,DSN=SYS1.SBPXEXEC -//ISPPLIB DD DISP=SHR,DSN=ISP.SISPPENU -// DD DISP=SHR,DSN=ISF.SISFPLIB -//ISPTLIB DD RECFM=FB,LRECL=80,SPACE=(TRK,(1,0,1)) -// DD DISP=SHR,DSN=ISP.SISPTENU -// DD DISP=SHR,DSN=ISF.SISFTLIB -//ISPSLIB DD DISP=SHR,DSN=PSP.ENDV.TEAM.ISPSLIB -// DD DISP=SHR,DSN=ISP.SISPSENU -// DD DISP=SHR,DSN=ISF.SISFSLIB -//ISPMLIB DD DISP=SHR,DSN=ISP.SISPMENU -// DD DISP=SHR,DSN=ISF.SISFMLIB -//IZUSRVMP DD PATH='&ROOT./defaults/izurf.tsoservlet.mapping.json' -//SYSOUT DD SYSOUT=* -//SYSPRINT DD SYSOUT=* **added** -//SYSTSPRT DD SYSOUT=* **added** -//CEEDUMP DD SYSOUT=H -//SYSUDUMP DD SYSOUT=H -//ISPPROF DD DISP=NEW,UNIT=SYSDA,SPACE=(TRK,(15,15,5)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120) diff --git a/endevor/Shipments-for-a-Single-Destination/PKGESHIP.rex b/endevor/Shipments-for-a-Single-Destination/PKGESHIP.rex deleted file mode 100644 index 87eaf9a..0000000 --- a/endevor/Shipments-for-a-Single-Destination/PKGESHIP.rex +++ /dev/null @@ -1,540 +0,0 @@ -/* REXX */ -/* THESE ROUTINES ARE DISTRIBUTED BY THE CA TECHNOLOGIES STAFF - "AS IS". NO WARRANTY, EITHER EXPRESSED OR IMPLIED, IS MADE - FOR THEM. CA TECHNOLOGIES CANNOT GUARANTEE THAT THE ROUTINES - ARE ERROR FREE, OR THAT IF ERRORS ARE FOUND, THEY WILL BE - CORRECTED. -*/ -/* - This REXX submits automatically 0 or more package shipping - jobs. -*/ -/* WRITTEN BY DAN WALTHER */ - -/* Runs only 4 userid = IBMUSER (if uncommented) */ -/* - If USERID() /= 'IBMUSER' then Exit -*/ - /* <---- Variable settings for each site */ - - STRING = "ALLOC DD(SYSTSPRT) SYSOUT(A) " - CALL BPXWDYN STRING; - Trace Off - - /* If a DDNAME of PKGESHIP is allocated, then Trace */ - WhatDDName = 'PKGESHIP' - CALL BPXWDYN "INFO FI("WhatDDName")", - "INRTDSN(DSNVAR) INRDSNT(myDSNT)" - if Substr(DSNVAR,1,1) /= ' ' then TraceRc = 1; - IF TraceRc = 1 then Trace R - - STRING = "ALLOC DD(SYSPRINT) SYSOUT(A) " - CALL BPXWDYN STRING; - -/* Variable settings for each site ---> */ - WhereIam = WHERE@M1() - RunUnderAltid = 'N' ; /* Y/N */ - - /* The site determines whether to engage Endevor hooks */ - EndevorHooks = 'N' - - /* If just shipping to one destination, then use */ - /* ShipSchedulingMethod = 'One ' */ - /* if there only a few destinations (in notes), then use */ - /* ShipSchedulingMethod = 'Notes' */ - /* if using a RULES file and Trigger, then use */ - /* ShipSchedulingMethod = 'Rules' */ - interpret 'Call' WhereIam "'ShipSchedulingMethod'" - ShipSchedulingMethod = Result - - If ShipSchedulingMethod = 'One' then, - Do - interpret 'Call' WhereIam "'Destination'" - Destination = Result - interpret 'Call' WhereIam "'Destination'" - Destination = Result - interpret 'Call' WhereIam "'Hostprefix'" - Hostprefix = Result - interpret 'Call' WhereIam "'Rmteprefix'" - Rmteprefix = Result - interpret 'Call' WhereIam "'ModelMember'" - ModelMember = Result - End - interpret 'Call' WhereIam "'SHLQ'" - SHLQ = Result - - interpret 'Call' WhereIam "'MyAUTHLibrary'" - MyAUTHLibrary = Result - interpret 'Call' WhereIam "'MyAUTULibrary'" - MyAUTULibrary = Result - interpret 'Call' WhereIam "'MyLOADLibrary'" - MyLOADLibrary = Result - - interpret 'Call' WhereIam "'MySEN2Library'" - MySEN2Library = Result - - interpret 'Call' WhereIam "'MySENULibrary'" - MySENULibrary = Result - - interpret 'Call' WhereIam "'MyOPT2Library'" - MyOPT2Library = Result - - interpret 'Call' WhereIam "'MyOPTNLibrary'" - MyOPTNLibrary = Result - - interpret 'Call' WhereIam "'MyCLS0Library'" - HSYSEXEC = Result - MyCLS0Library = HSYSEXEC - - interpret 'Call' WhereIam "'MyCLS2Library'" - HSYSEXEC = Result - MyCLS2Library = HSYSEXEC - Say 'Running PKGESHIP in' MyCLS2Library - - interpret 'Call' WhereIam "'AltIDAcctCode'" - AltIDAcctCode= Result - - interpret 'Call' WhereIam "'AltIDJobClass'" - AltIDJobClass= Result - - interpret 'Call' WhereIam "'AltIDMsgClass'" - AltIDMsgClass= Result - - interpret 'Call' WhereIam "'TransmissionModels'" - TransmissionModels = Result - - interpret 'Call' WhereIam "'MyHomeAddress'" - MyHomeAddress = Result - - ARG Parms ; - -/* if called by zowe, then this is the Argument .... */ - If Length(Parms) < 18 then, - Do - Package = Translate(Parms,' ',"'") - Package = Strip(Package) - Say Length(Package) Package - PkgExecJobname = USERID() || 'S' /*Userid + S */ - End /* If Length(Parms) < 18 */ - Else - Do - /* if called by exit, then these are the Arguments.... */ - Notes.7 = Substr(PARMS,414,60) ; - If Substr(Notes.7,1,5) = 'TRACE' then Trace r - Package = Substr(PARMS,1,16) ; - - Environ = Substr(PARMS,18,08) ; - Stage = Substr(PARMS,27,01) ; - CREATE_USER = Substr(PARMS,29,08) ; - UPDATE_USER = Substr(PARMS,37,08) ; - CAST_USER = Substr(PARMS,45,08) ; - Notes.1 = Substr(PARMS,054,60) ; - Notes.2 = Substr(PARMS,114,60) ; - Notes.3 = Substr(PARMS,174,60) ; - Notes.4 = Substr(PARMS,234,60) ; - Notes.5 = Substr(PARMS,294,60) ; - Notes.6 = Substr(PARMS,354,60) ; - Notes.7 = Substr(PARMS,414,60) ; - Notes.8 = Substr(PARMS,474,60) ; - ShipOutput = Substr(PARMS,584,03) ; - PkgExecJobname = MVSVAR('SYMDEF',JOBNAME ) /*Returns JOBNAME */ - End /* Else */ - -/* If ShipOutput /= 'BAC' THEN ShipOutput = 'OUT' */ - TYPRUN = ' ' - -/* IF you want to use the package prefix to select packages */ -/* for shipments, then tailor and uncomment the next line: */ -/* If Substr(Package,1,2) /= 'PR' then exit */ - -/* If ShipOutput /= 'BAC' THEN ShipOutput = 'OUT' */ - TYPRUN = ' ' -/* */ -/* This Rexx participates in the submission of Endevor Package */ -/* Shipment jobs. It is called by the Endevor exit program C1UEXT07 */ -/* */ -/* First. See if the package has any package backouts ... */ -/* */ - Call CSV_to_List_Package_Id - If BACKOUT_RCD_EXIST = 'N' then Exit -/* Allocate and prepare files for updating the shipment transaction */ -/* file, and submitting package shipments for those scheduled for */ -/* immediate submission. */ -/* */ - - Userid = USERID() - Date8 = DATE('S') - Date6 = substr(Date8,3); - Temp = TIME('L') - - Time8 = Substr(Temp,1,2) ||, - Substr(Temp,4,2) ||, - Substr(Temp,7,2) ||, - Substr(Temp,10,2) ; - Time6 = Substr(Temp,1,2) ||, - Substr(Temp,4,2) ||, - Substr(Temp,7,2) ; - - TodaysDate = DATE('S') ; - NOW = TIME(L); - HOUR = SUBSTR(NOW,1,2) ; - IF HOUR = '00' THEN HOUR = '0' - MINUTE = SUBSTR(NOW,4,2) ; - CurrentTime= HOUR || MINUTE ; - SENDNODE = MVSVAR(SYSNAME) - ShipOutput = 'OUT' - VDDRSPFX = 'PSP.ENDV' - - $All_VARIABLES = "Jobname Destination Userid ", - "PkgExecJobname MyOPTNLibrary MyAUTULibrary ", - "MyAUTHLibrary MyLOADLibrary MyCLS0Library ", - "MyHomeAddress ", - "Package Date8 Date6 Time8 Time6 Notify ", - "Typrun SENDNODE $delimiter ShipOutput ", - "SHLQ MySEN2Library MySENULibrary MyOPT2Library ", - "MyCLS2Library AltIDAcctCode AltIDJobClass ", - "AltIDMsgClass VDDRSPFX HSYSEXEC OUT" - - Trace R - sa= 'Back to PKGESHIP' - /* If Scheduling Package Shipments, then BILDTGGR */ - /* determines sites and updates the Trigger file . */ - /* If any Sites can receive Shipments immediately, then */ - /* BILDTGGR indicates so in its Return code. */ - If ShipSchedulingMethod = 'Rules' then, - Do - BildRC = BILDTGGR(Parms) - /* The immediate shipments are queued by BILDTGGR in a Table */ - If BildRC = 1 then, - Do - Userid = USERID() ; - PULLTGGRParms = Userid'.PULLTGGR' MySEN2Library - Call PULLTGGR PULLTGGRParms ; - End - End /* SchedulingPackageShipBundle */ - Else, - If ShipSchedulingMethod = 'Notes' then, - Do n# = 8 to 1 by -1 - /* Pulling shipment data from package notes */ - /* Examine Package notes to find Destination and schedule info */ - /* - Submit Package Shipments for those that can be submitted */ - /* immeditely. */ - /* (future submissions are not supported ) */ - tmp = NOTES.n# ; - if Substr(tmp,1,3) /= "TO " then leave ; - if Substr(tmp,12,2) /= ": " then leave ; - tmp = Substr(OVERLAY(" ",tmp,12),3) ; - Destination = Word(tmp,1) ; - /* Default to first model */ - ModelMember = Word(TransmissionModels,1) - /* Get info for Destination */ - Call GetDestinationInfo; - Hostprefix = Strip(Substr(apiDestinations.1,079,14)) - Rmteprefix = Strip(Substr(apiDestinations.1,113,14)) - /* - */ - Date = Word(tmp,2) ; - Time = Word(tmp,3) ; - Jobname = Word(tmp,4) ; - If Words(tmp) > 4 then, - If Word(tmp,5) = "HOLD" then, - Notify = Notify",TYPRUN=HOLD" - If Date <= TodaysDate &, - Time <= CurrentTime then, - Do - Call AllocateModel; - Call SubmitPackageShipmentFromNotes; - End ; - tmp = Substr(OVERLAY(" ",tmp,12),3) ; - End; /* Do n# = 8 to 1 by -1 */ - Else, /* Is there only one Destination etc */ - If ShipSchedulingMethod = 'One' then, - Do - JobName = PkgExecJobname - Call AllocateModel; - Call SubmitPackageShipmentFromNotes; - End; /* .. Else... */ - -/* */ -/* All Done */ -/* */ - - Exit - -AllocateModel: -/* */ -/* Submit immediate package shipment jobs */ -/* */ -/* Allocate files */ -/* */ -/* A Model is used for building Package Shipment JCL */ -/* */ - STRING = 'ALLOC DD(MODEL) ', - "DA('"MySEN2Library"("ModelMember")') SHR REUSE " - CALL BPXWDYN STRING; - - Return; - -SubmitPackageShipmentFromNotes: -/* */ -/* This subroutine is modified from the TBL#TOOL */ -/* */ - - "EXECIO * DISKR "MODEL "(STEM $Model. FINIS" ; - $delimiter = "�" ; - - DO $LINE = 1 TO $Model.0 - $PLACE_VARIABLE = 1; - CALL EVALUATE_SYMBOLICS ; - END; /* DO $LINE = 1 TO $Model.0 */ - - STRING = "ALLOC DD(SHIPJCL) LRECL(80) BLKSIZE(27920) ", - " DSORG(PS) ", - " SPACE(2,2) RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - "EXECIO * DISKW SHIPJCL (STEM $Model. FINIS" ; - - If RunUnderAltid = 'Y' then CALL SWAP2ALT - Call Submit_Job ; - If RunUnderAltid = 'Y' then CALL SWAP2USR - - Drop $Model. ; - - STRING = "FREE DD(SHIPJCL) DELETE" - CALL BPXWDYN STRING; - - RETURN; - -/* */ -/* The subroutine below is borrowed from the TBL#TOOL */ -/* */ -EVALUATE_SYMBOLICS: - - DO FOREVER; - $PLACE_VARIABLE = POS('&',$Model.$LINE,$PLACE_VARIABLE) - IF $PLACE_VARIABLE = 0 THEN LEAVE; - $temp_$LINE = TRANSLATE($Model.$LINE,' ',',.()"/\+-*|'); - $temp_$LINE = TRANSLATE($temp_$LINE,' ',"'"$delimiter); - $table_word = WORD(SUBSTR($temp_$LINE,($PLACE_VARIABLE+1)),1); - $table_word = TRANSLATE($table_word,'_','-') ; - $varlen = LENGTH($table_word) + 1 ; - - if WORDPOS($table_word,$All_VARIABLES) = 0 then, - do - $PLACE_VARIABLE = $PLACE_VARIABLE + 1 ; - iterate; - end; - - $temp_word = VALUE($table_word) ; - IF DATATYPE($temp_word,S) = 9 THEN, - $temp = 'SYMBVALUE = ' $temp_word ; - ELSE, - $temp = "SYMBVALUE = '"$temp_word"'" ; - INTERPRET $temp; - SA= 'SYMBVALUE = ' SYMBVALUE ; - - $tail = SUBSTR($Model.$LINE,($PLACE_VARIABLE+$varlen)) ; - if Substr($tail,1,1) = $delimiter then, - $tail = SUBSTR($tail,2) ; - IF $PLACE_VARIABLE > 1 THEN, - $Model.$LINE = , - SUBSTR($Model.$LINE,1,($PLACE_VARIABLE-1)) ||, - SYMBVALUE || $tail ; - else, - $Model.$LINE = , - SYMBVALUE || $tail ; - END; /* DO FOREVER */ - - RETURN; - -Submit_Job: - - "Execio * DISKR SHIPJCL ( Stem jcl. finis" - "Execio * DISKW SYSTSPRT ( Stem jcl. " - - STRING = "ALLOC DD(SUBMIT)", - "SYSOUT(A) WRITER(INTRDR) REUSE " ; - CALL BPXWDYN STRING; - "Execio * DISKW SUBMIT ( Stem jcl. finis" - - STRING = "FREE DD(SUBMIT)" - CALL BPXWDYN STRING; - - RETURN; - -GetDestinationInfo: - - /* Set values for Hostprefix and Rmteprefix */ - /* From the site definition */ - - /* Call API to Get Destination information */ - - - ADDRESS TSO - "ALLOC F(BSTAPI) DA(*) REUSE " - "ALLOC F(BSTERR) DA(*) REUSE " - STRING = "ALLOC DD(APIMSGS) LRECL(133) BLKSIZE(13300) ", - " DSORG(PS) ", - " SPACE(1,1) RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(APILIST) LRECL(2048) BLKSIZE(22800) ", - " DSORG(PS) ", - " SPACE(1,1) RECFM(V,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - /* Call API to Get Destination information */ - parm = Left(Destination'*',7) - - ADDRESS TSO "CALL *(APIALDST) '"||parm||"'" - RETURN_RC = RC ; - If RETURN_RC > 0 then, - DO - SA= 'CANNOT GET INFORMATION FROM ENDEVOR' ; - EXIT - END ; - "EXECIO * DISKR APILIST ( Stem apiDestinations. FINIS" - STRING = "FREE DD(APILIST)" - CALL BPXWDYN STRING; - STRING = "FREE DD(APIMSGS)" - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTAPI) " - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTERR) " - CALL BPXWDYN STRING; - - Return ; - -CSV_to_List_Package_Id: - - /* To Search the package shipping table, we need the Entry */ - /* Environment information as a search criteria. */ - /* Get it from the USER-DATA field on the 1st element. */ - - - STRING = "ALLOC DD(C1MSGS1) DUMMY " - CALL BPXWDYN STRING; - STRING = "ALLOC DD(BSTERR) DUMMY " - CALL BPXWDYN STRING; - STRING = "ALLOC DD(BSTAPI) DUMMY " - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(EXTRACTM) LRECL(4000) BLKSIZE(32000) ", - " DSORG(PS) ", - " SPACE(1,5) RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - STRING = "ALLOC DD(BSTIPT01) LRECL(80) BLKSIZE(800) ", - " DSORG(PS) ", - " SPACE(1,5) RECFM(F,B) TRACKS ", - " NEW UNCATALOG REUSE "; - CALL BPXWDYN STRING; - - QUEUE "LIST PACKAGE ID '"Package"'" - QUEUE " TO DDNAME 'EXTRACTM' " - QUEUE " ." - - "EXECIO" QUEUED() "DISKW BSTIPT01 (FINIS "; - - ADDRESS LINK 'BC1PCSV0' ; /* load from authlib */ - -/* ADDRESS TSO 'ISRDDN' */ - call_rc = rc ; - - "EXECIO * DISKR EXTRACTM (STEM API. finis" - - STRING = "FREE DD(EXTRACTM)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTIPT01)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(C1MSGS1)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTERR)" ; - CALL BPXWDYN STRING; - STRING = "FREE DD(BSTAPI)" ; - CALL BPXWDYN STRING; - - IF API.0 < 2 THEN RETURN; - - $table_variables= Strip(API.1,'T') - - $table_variables = translate($table_variables,"_"," ") ; - $table_variables = translate($table_variables," ",',"') ; - $table_variables = translate($table_variables,"@","/") ; - $table_variables = translate($table_variables,"@",")") ; - $table_variables = translate($table_variables,"@","(") ; - $table_variables = translate($table_variables,"_","-") ; - - Do rec# = 2 to API.0 - $detail = API.rec# - - Trace off - /* Parse the Detail record until done */ - Do $column = 1 to Words($table_variables) - Call ParseDetailCSVline - End - Trace r - End; /* Do rec# = 1 to API.0 */ - - RETURN ; - - -ParseDetailCSVline: - - /* Find the data for the current $column */ - - $dlmchar = Substr($detail,1,1); - - If $dlmchar = "'" then, - Do - SA= 'parsing with single quote ' - PARSE VAR $detail "'" $temp_value "'" $detail ; - If Substr($detail,1,1) = ',' then, - $detail = Strip(Substr($detail,2),'L') - End - Else, - If $dlmchar = '"' then, - Do - SA= 'parsing with double quote ' - PARSE VAR $detail '"' $temp_value '"' $detail ; - If Substr($detail,1,1) = ',' then, - $detail = Strip(Substr($detail,2),'L') - End - Else, - If $dlmchar = ',' then, - Do - SA= 'parsing with comma ' - PARSE VAR $detail ',' $temp_value ',' $detail ; - If Substr($detail,1,1)/= ',' then, - $detail = "," || $detail - $detail = Strip(Substr($detail,2),'L') */ - End - Else, - If Words($detail) = 0 then, - $temp_value = ' ' - Else, - Do - SA= 'parsing with comma ' - PARSE VAR $detail $temp_value ',' $detail ; - Sa= '$temp_value=>' $temp_value '<' - End - $temp_value = STRIP($temp_value) ; - $rslt = $temp_value - $rslt = Strip($rslt,'B','"') ; - $rslt = Strip($rslt,'B',"'") ; - if Length($rslt) < 1 then $rslt = ' ' - if Length($rslt) < 250 then, - $temp = WORD($table_variables,$column) '= "'$rslt'"'; - Else, - $temp = WORD($table_variables,$column) "=$rslt" - If rec# < 0 then Say $temp - Say $temp; - Interpret $temp; - - RETURN ; - diff --git a/endevor/Shipments-for-a-Single-Destination/SHIP#FTP.skl b/endevor/Shipments-for-a-Single-Destination/SHIP#FTP.skl deleted file mode 100644 index a31d6a4..0000000 --- a/endevor/Shipments-for-a-Single-Destination/SHIP#FTP.skl +++ /dev/null @@ -1,471 +0,0 @@ -//&PkgExecJobname JOB (&AltIDAcctCode),'SHIP &Destination', -// MSGLEVEL=(1,1),CLASS=&AltIDJobClass,REGION=0M,MSGCLASS=A, -// NOTIFY=&Notify^&Typrun -//***==============================================================* * -//***=====Remote Package Shipment via FTP==========================* * -// JCLLIB ORDER=(PSP.ENDV.TEAM.JCL) -//* ISPSLIB(SHIP#FTP) -//*----------------------------------------------------- -//*--------------------------------------------------------SHIP#FTP -//* MY DESTNAME = &Destination -//* MY FROMNODE = &SENDNODE -//* MY PACKAGE = &Package -//* MY VNBCPARM = C1BMX000,&Date8,&Time8 -//*--------------------------------------------------------SHIP#FTP -//*----------------------------------------------------- -//***==============================================================* * -//NDVRSHIP EXEC PGM=NDVRC1,DYNAMNBR=1500,REGION=4096K, SHIP#FTP -// PARM='C1BMX000,&Date8,&Time8 SHIP &Userid ' -//* -//*C1BMXTRC DD DISP=SHR, -//* DSN=CAPRD.ENDV.TRACE.LOCAL -//* -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -// INCLUDE MEMBER=STEPLIB -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* -//* *--------------------------------------------* SHIP#FTP (CONT.) * -//* -//C1BMXDET DD SYSOUT=* ** SHIPMENT DETAIL REPORT **************** -//C1BMXSUM DD SYSOUT=* ** SHIPMENT SUMMARY REPORT **************** -//C1BMXSYN DD SYSOUT=* ** INPUT LISTING AND SYNTAX ERROR REPORT ** -//* -//* ****************************************************************** -//* * LOCAL TRANSFER COPY/RUN COMMAND DATASETS -//* * LOCAL MODEL CONTROL CARD DATASET -//* ****************************************************************** -//* -//C1BMXLCC DD DSN=&&XLCC,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* -//C1BMXLCM DD DISP=SHR,DSN=&MyOPT2Library -// DD DISP=SHR,DSN=&MyOPTNLibrary -//* -//* ****************************************************************** -//* * NETVIEW FTP "ADD TO TRANSMISSION QUEUE" DATASET AND INTERNAL RDR -//* * NETVIEW FTP MODEL CONTROL CARD DATASET //* -****************************************************************** -//* -//C1BMXFTC DD DSN=&&XFTC,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//C1BMXFTM DD DISP=SHR,DSN=&MyOPT2Library -// DD DISP=SHR,DSN=&MyOPTNLibrary -//* * NETWORK DATA MOVER COPY/RUN COMMAND DATASETS -//* * NETWORK DATA MOVER MODEL CONTROL CARD DATASET -//* ****************************************************************** -//C1BMXNWC DD DSN=&&XNWC,DISP=(NEW,PASS),SPACE=(TRK,(2,10)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//C1BMXNWM DD DISP=SHR,DSN=&MyOPT2Library -// DD DISP=SHR,DSN=&MyOPTNLibrary -//* -//C1BMXNWM DD DISP=SHR,DSN=&MyOPT2Library -// DD DISP=SHR,DSN=&MyOPTNLibrary -//C1BMXRJC DD DISP=SHR,DSN=&MySEN2Library -// DD DISP=SHR,DSN=&MySENULibrary -//* -//* ****************************************************************** -//* * SHIPMENT DATE/TIME READ BY INLINE HOST CONFIRMATION STEP -//* ****************************************************************** -//* -//C1BMXDTM DD DSN=&&XDTM,DISP=(NEW,PASS),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* -//* ****************************************************************** -//* * HOST STAGING DATASET DELETION STATEMENTS (IDCAMS) -//* ****************************************************************** -//* -//C1BMXDEL DD DSN=&&HDEL,DISP=(NEW,PASS),SPACE=(TRK,(10,10)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* -//* ****************************************************************** -//* * REMOTE JCL MODEL MEMBERS -//* ****************************************************************** -//* -//C1BMXMDL DD DISP=SHR,DSN=&MyOPT2Library -// DD DISP=SHR,DSN=&MyOPTNLibrary -//* -//* ****************************************************************** -//* * JCL SEGMENTS TO CREATE GROUP SYMBOLICS FOR MODELLING -//* ****************************************************************** -//* -//C1BMXHJC DD DATA,DLM=## -//&Jobname JOB (55800000),'SHIP &Destination', -// MSGLEVEL=(1,1),CLASS=B,REGION=0M,MSGCLASS=A, -// NOTIFY=&SYSUID TYPRUN=HOLD -//*-------------------------------------------------------------------* -// JCLLIB ORDER=(PSP.ENDV.TEAM.JCL) -//*-------------------------------------------------------------------* -//* ISPSLIB(SHIP#FTP) -//*--------------------------------------------------------SHIP#FTP -//* MY DESTNAME = &Destination -//* MY FROMNODE = &SENDNODE -//* MY PACKAGE = &Package -//* MY VNBCPARM = C1BMX000,&Date8,&Time8 -//*--------------------------------------------------------SHIP#FTP -## -//* -//* *--------------------------------------------* SHIP#FTP (CONT.) * -//* -//C1BMXHCN DD DATA,DLM=## -//* *--------------------------------------------------------------* * -//* *--------------------------------------------------------------* * -//* SHIP#FTP -//CONFGE12 EXEC PGM=NDVRC1,REGION=4096K,COND=(12,GT,$XM_STEP), -// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,GE,0012,$DEST_ID' -//* SHIP#FTP -//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* SHIP#FTP -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -// INCLUDE MEMBER=STEPLIB -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* *--------------------------------------------* SHIP#FTP(CONT -//* SHIP#FTP -//CONFGE08 EXEC PGM=NDVRC1,REGION=4096K,COND=(08,NE,$XM_STEP), -// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,GE,0008,$DEST_ID' -//* SHIP#FTP -//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -// INCLUDE MEMBER=STEPLIB -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* SHIP#FTP -//* SHIP#FTP -//CONFGE04 EXEC PGM=NDVRC1,REGION=4096K,COND=(04,NE,$XM_STEP), -// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,EQ,0004,$DEST_ID' -//* SHIP#FTP -//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* SHIP#FTP -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -// INCLUDE MEMBER=STEPLIB -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* SHIP#FTP -//* SHIP#FTP -//CONFGE00 EXEC PGM=NDVRC1,REGION=4096K,COND=(00,NE,$XM_STEP), -// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,EQ,0000,$DEST_ID' -//* SHIP#FTP -//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* SHIP#FTP -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -// INCLUDE MEMBER=STEPLIB -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* SHIP#FTP -//* SHIP#FTP -//CONFABND EXEC PGM=NDVRC1,REGION=4096K,COND=ONLY, SHIP#FTP -// PARM='C1BMX000,&Date8,&Time8,CONF,HXMT,AB,****,********' -//* SHIP#FTP -//C1BMXDTM DD DSN=&&XDTM,DISP=(MOD,PASS),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//* SHIP#FTP -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -// INCLUDE MEMBER=STEPLIB -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//* SHIP#FTP -//* *--------------------------------------------* ISPSLIB(SHIP#FTP) * -## -//* -//* *--------------------------------------------* C1BMXJOB (CONT.) * -//* -//C1BMXRCN DD DATA,DLM=## -//*----PACKAGE SHIPMENT JOB #4 -------------------------- SHIP#FTP -//* *--Package Shipment Confirmation/Notification* ISPSLIB(SHIP#FTP) * -//* -//* *================================================================* -//* * INSTREAM DATASET CONTAINING REMOTE CONFIRMATION JCL -//* *================================================================* -//WHATNTFY IF (RC > 7) THEN -//* -//CONFGT12 EXEC PGM=IEBGENER SHIP#FTP -//SYSUT1 DD DATA,DLM=$$ JOB SHIPPED BACK TO HOST -//&Jobname JOB (55800000),'SHIP &Destination', -// MSGLEVEL=(1,1),CLASS=B,REGION=0M,MSGCLASS=A, -// NOTIFY=&SYSUID TYPRUN=HOLD -// JCLLIB ORDER=(PSP.ENDV.TEAM.JCL) -//* ISPSLIB(SHIP#FTP) -//*--------------------------------------------------------SHIP#FTP -//* MY DESTNAME = &Destination -//* MY FROMNODE = &SENDNODE -//* MY PACKAGE = &Package -//* MY VNBCPARM = C1BMX000,&Date8,&Time8 -//*--------------------------------------------------------SHIP#FTP -//CONFCOPY EXEC PGM=NDVRC1, SHIP#FTP -// PARM='C1BMX000,&Date8,&Time8,CONF,RCPY,EQ,0012,$DEST_ID' -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -// INCLUDE MEMBER=STEPLIB -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//*--------------------------------------------------------SHIP#FTP -//NTFYTGGR EXEC PGM=IEFBR14, SHIP#FTP -// PARM='UPDTTGGR &Destination 12 &VPHPKGID' -//STEPLIB DD DISP=SHR,DSN=&MyAUTULibrary -// DD DISP=SHR,DSN=&MyAUTHLibrary -//* DD DISP=SHR,DSN=&MyLOADLibrary -//CONLIB DD DISP=SHR,DSN=&MyLOADLibrary -//SYSEXEC DD DSN=&MyCLS0Library,DISP=SHR -// DD DSN=&MyCLS2Library,DISP=SHR -//SYSTSPRT DD SYSOUT=* -//*------------------------------------------------------- SHIP#FTP -//DELETES EXEC PGM=IEFBR14 <- Dont delete SHIP#FTP -//SYSPRINT DD SYSOUT=* -//AMSDUMP DD SYSOUT=* -//SYSIN DD * - DELETE '&HSTPFX.*' NONVSAM -//*------------------------------------------------------- SHIP#FTP -//* *--------------------------------------------* SHIP#FTP (CONT.) * -$$ -//SYSUT2 DD DSN=IBMUSER.REMOTE.D&Date6.T&Time6.NOTIFY, -// DISP=(NEW,CATLG,KEEP),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//SYSPRINT DD SYSOUT=* -//SYSIN DD DUMMY -//* *--------------------------------------------* SHIP#FTP (CONT.) * -//WHATNTFY ELSE -//* -//CONFGT00 EXEC PGM=IEBGENER SHIP#FTP -//SYSUT1 DD DATA,DLM=$$ JOB SHIPPED BACK TO HOST -//&Jobname JOB (55800000),'SHIP &Destination', -// MSGLEVEL=(1,1),CLASS=B,REGION=0M,MSGCLASS=A, -// NOTIFY=&SYSUID TYPRUN=HOLD -// JCLLIB ORDER=(PSP.ENDV.TEAM.JCL) -//* ISPSLIB(SHIP#FTP) -//*--------------------------------------------------------SHIP#FTP -//* MY DESTNAME = &Destination -//* MY FROMNODE = &SENDNODE -//* MY PACKAGE = &Package -//* MY VNBCPARM = C1BMX000,&Date8,&Time8 -//*--------------------------------------------------------SHIP#FTP -//CONFCOPY EXEC PGM=NDVRC1, SHIP#FTP -// PARM='C1BMX000,&Date8,&Time8,CONF,RCPY,EQ,0000,$DEST_ID' -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -// INCLUDE MEMBER=STEPLIB -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -//*--------------------------------------------------------SHIP#FTP -//NTFYTGGR EXEC PGM=IRXJCL, SHIP#FTP -// PARM='UPDTTGGR &Destination / &VPHPKGID' -//STEPLIB DD DISP=SHR,DSN=&MyAUTULibrary -// DD DISP=SHR,DSN=&MyAUTHLibrary -//* DD DISP=SHR,DSN=&MyLOADLibrary -//CONLIB DD DISP=SHR,DSN=&MyLOADLibrary -//SYSEXEC DD DSN=&MyCLS0Library,DISP=SHR -// DD DSN=&MyCLS2Library,DISP=SHR -//SYSTSPRT DD SYSOUT=* -//*------------------------------------------------------- SHIP#FTP -//DELETES EXEC PGM=IEFBR14 <- Dont delete SHIP#FTP -//SYSPRINT DD SYSOUT=* -//AMSDUMP DD SYSOUT=* -//SYSIN DD * - DELETE '&HSTPFX.*' NONVSAM -//*------------------------------------------------------- SHIP#FTP -$$ -//SYSUT2 DD DSN=IBMUSER.REMOTE.D&Date6.T&Time6.NOTIFY, -// DISP=(NEW,CATLG,KEEP),SPACE=(TRK,(1,0)), -// DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120,DSORG=PS), -// UNIT=SYSALLDA -//SYSPRINT DD SYSOUT=* -//SYSIN DD DUMMY -//WHATNTFY ENDIF -//* *--------------------------------------------* SHIP#FTP (CONT.) * -//FTPSUBMT EXEC PGM=FTP,REGION=2048K,TIME=800 SHIP#FTP -//NETRC DD DISP=SHR,DSN=&SYSUID..ENDEVOR.NETRC(SHIPPING) -//SYSTSPRT DD SYSOUT=* -//SYSPRINT DD SYSOUT=* -//SYSUDUMP DD SYSOUT=Q -//OUTPUT DD SYSOUT=* SHIP#FTP -//SYSIN DD * - &MyHomeAddress -MODE B -EBCDIC -SITE FILETYPE=JES -PUT 'IBMUSER.REMOTE.D&Date6.T&Time6.NOTIFY' -QUIT -//* *--------------------------------------------* C1BMXJOB (CONT.) * -//REMODELT EXEC PGM=IDCAMS,COND=(4,LT) <-Remote Delete SHIP#FTP -//SYSPRINT DD SYSOUT=* -//AMSDUMP DD SYSOUT=* -//DELETEME DD DSN=IBMUSER.REMOTE.D&Date6.T&Time6.NOTIFY, -// DISP=(SHR,DELETE) -//* DELETE '&&Rmteprefix.D&Date6.T&Time6.&Destination.*' NONVSAM -//SYSIN DD * -## -//* -//* *--------------------------------------------* C1BMXJOB (CONT.) * -//* -//C1BMXLIB DD DATA,DLM=## -//* ****************************************************************** -//* * STEPLIB, CONLIB, MESSAGE LOG AND ABEND DATASETS -//* ****************************************************************** -//STEPLIB DD DISP=SHR,DSN=&MyAUTULibrary -// DD DISP=SHR,DSN=&MyAUTHLibrary -//* DD DISP=SHR,DSN=&MyLOADLibrary -//CONLIB DD DISP=SHR,DSN=&MyLOADLibrary -//* -//********************************************************************* -//* ESI TRACE IN BATCH MODE * -//********************************************************************* -//*EN$TRESI DD SYSOUT=* -//*EN$TRALC DD SYSOUT=* -//* -//SYSUDUMP DD SYSOUT=* *** DUMP TO SYSOUT ************************* -//SYMDUMP DD DUMMY -//C1BMXLOG DD SYSOUT=* *** MESSAGES, ERRORS, RETURN CODES ********* -## -//* -//* *--------------------------------------------* C1BMXJOB (CONT.) * -//* -//* ****************************************************************** -//* * SHIP PACKAGE PKG-ID TO DESTINATION DEST-ID ( OPTION BACKOUT ) . -//* ****************************************************************** -//* -//* THE FOLLOWING DD STATEMENT MUST BE THE *LAST* CARD IN THIS MEMBER. -//* ISPSLIB MEMBER C1BMXIN IS INCLUDED AFTER IT AS THE INSTREAM DATA. -//* -//C1BMXIN DD * *-------------------------------* ISPSLIB(SHIP#FTP) * -SHIP PAC '&Package' TO DEST &Destination OPT &ShipOutput . -//* *============================================* ISPSLIB(SHIP#FTP) * -//* *==============================================================* * -//* *==============================================================* * -//* *==============================================================* * -//* *==============================================================* * -//*================================================================ -//* Apply DB2 Masking (if necessary) -//*================================================================ -//DB2MASK EXEC PGM=IKJEFT1B,PARM='DB2MASK &Destination', -// COND=(0,LE) SHIP#FTP -//MASKING DD * - OwnerMask = '&OwnerMask' - QualifierMask = '&QualifierMask' - BindPackageMask = '&BindPackageMask' - PathMask = '&PathMask' -//SHIPREFS DD * - AHREFDSN IBMUSER.HOST.D&Date6.T&Time6.&Destination.AHREF -//SYSTSIN DD DUMMY -//SYSEXEC DD DSN=&MyCLS0Library,DISP=SHR -// DD DSN=&MyCLS2Library,DISP=SHR -//SYSTSPRT DD SYSOUT=* -//*================================================================ -//* Tailor JCL for JOB #2 to be submitted next -//*================================================================ -//TAILOR EXEC PGM=IRXJCL,PARM='ENBPIU00 A ',COND=(10,LE) SHIP#FTP -//MODEL DD DSN=&&XFTC,DISP=(SHR,PASS) -//TABLE DD * -* DO-- - Once -//SYSTSIN DD DUMMY -//OPTIONS DD * - $delimiter ='�' - VNBSQDSP='SHIP PAC '&Package' TO DEST &Destination OPT &ShipOutput .' - VPHPKGID = '&Package' - VNBLSDST = '&Destination' - HSYSEXEC = PSP.ENDV.TEAM.REXX - Userid ='&Userid' - SENDNODE = '&SENDNODE' - VNBCPARM = 'C1BMX000,&Date8,&Time8' - MyCLS0Library = '&MyCLS0Library' - MyCLS2Library = '&MyCLS2Library' -//SYSEXEC DD DSN=&MyCLS0Library,DISP=SHR -// DD DSN=&MyCLS2Library,DISP=SHR -//SYSTSPRT DD SYSOUT=* -//*BLOUT DD SYSOUT=* -//TBLOUT DD SYSOUT=(A,INTRDR) -//SYSPRINT DD SYSOUT=* -//SYSIN DD DUMMY -//*------------------------------------------------------- SHIP#FTP diff --git a/endevor/Shipments-for-a-Single-Destination/WHERE@M1.rex b/endevor/Shipments-for-a-Single-Destination/WHERE@M1.rex deleted file mode 100644 index e056d96..0000000 --- a/endevor/Shipments-for-a-Single-Destination/WHERE@M1.rex +++ /dev/null @@ -1,5 +0,0 @@ -/* REXX */ -/* Names the member that contains your site-specific settings. */ -/* Override to another value if you prefer ---> */ -WhereIam = Strip(Left("@"MVSVAR(SYSNAME),8)) ; -Return (WhereIam) diff --git a/endevor/Shipments-for-a-Single-Destination/WHEREAMI.rex b/endevor/Shipments-for-a-Single-Destination/WHEREAMI.rex deleted file mode 100644 index 731fa62..0000000 --- a/endevor/Shipments-for-a-Single-Destination/WHEREAMI.rex +++ /dev/null @@ -1,5 +0,0 @@ -/* REXX */ -/* Names the member that contains your site-specific settings. */ -WhereIam = Strip(Left("@"MVSVAR(SYSNAME),8)) ; -Say 'WhereIam =' WhereIam -EXIT