collinsm wrote:/* REXX */ 00010000
/* ! 01 SET COMMAND VARIABLES */ 00020000
/*TRACE ?R */ 00030002
QUOTE = "'" 00040000
COMMA = "," 00050000
OPEN_BAN = '(' 00060000
CLOSE_BAN = ')' 00070000
EXCEPTION = 'NO' 00080000
PERCENT = '%' 00090000
BLANK = '' 00100000
D_SIGN = $ 00110000
WTO_INDEX = 0 00120000
WTO_INDEX1 = 0 00130000
NEW_PLAN = 'PLAN(DSNTIA12)' /* A12 MATCHS CURRENT DB2 VERSION */ 00140000
PLN_IDX_LNE = 'RUN PROGRAM'||OPEN_BAN||'DSNTIAD'||CLOSE_BAN 00150000
/* ! 02 READ PARMS FROM PROCESSOR */ 00160000
'EXECIO * DISKR PARMS (FINIS STEM PARM.' 00170000
DO P = 1 TO PARM.0 /* ! P LOOP */ 00180000
INTERPRET PARM.P 00190000
/* CHECK FOR $ IN CASE MEMBER NAME IS < 8 CHARACTERS */ 00200000
ELMNAME_DOLLAR_INDEX = 0 00210000
DOLLAR_FOUND = 'NO' 00220000
ELMNAME_DOLLAR_INDEX = INDEX(ELMNAME,'$') 00230000
IF ELMNAME_DOLLAR_INDEX > 0 THEN 00240000
DOLLAR_FOUND = 'YES' 00250000
END /* ! P LOOP */ 00260000
00270000
CALL INITAL_VARIABLE_SET /* ++ 01 */ 00280000
CALL CHECK_PROD_BIND_EXISTS /* ++ 02 */ 00290000
00300000
/* ! 03 READ EACH LINE OF PRODUCTION BIND CARD */ 00310000
IF USE_EXCEP_DSN = 'YES' THEN 00320000
DO /* ! EXECPT EXECIO */ 00330000
"ALLOC F(BINDEXMP) DA("IN_BIND_DSN") MOD REUSE" 00340000
'EXECIO * DISKR BINDEXMP (FINIS STEM CUR_LINE.' 00350000
EXCEPTION = 'YES' 00360000
END /* ! EXECPT EXECIO */ 00370000
IF USE_EXCEP_DSN ^= 'YES' THEN 00380000
DO /* ! MODEL EXECIO */ 00390000
"ALLOC F(BINDIN) DA("IN_BIND_DSN") MOD REUSE" 00400000
'EXECIO * DISKR BINDIN (FINIS STEM CUR_LINE.' 00410000
END /* ! MODEL EXECIO */ 00420000
DO B = 1 TO CUR_LINE.0 /* ! B LOOP */ 00430000
SAY B CUR_LINE.B 00440000
WTO_INDEX1 = INDEX(CUR_LINE.B,'//ST10 ') 00450000
IF WTO_INDEX1 > 0 THEN 00460000
CUR_LINE.B = '// ' 00470000
IF EXIT130_INDEX > 0 | , 00480000
EXIT035_INDEX > 0 THEN ITERATE 00490000
CALL LOOP_SET /* ++ 03 */ 00500000
QUEUE_LINE = CUR_LINE.B /* USE QUEUE_LINE AS OUTPUT */ 00510000
QUEUE_LINE_LENGTH = LENGTH(QUEUE_LINE) 00520000
00530000
/* ! 04 STOP AFTER WTO LOGIC */ 00540000
IF WTO_INDEX > 0 THEN ITERATE 00550000
WTO_INDEX = INDEX(CUR_LINE.B,'//ST10 ') 00560000
IF WTO_INDEX > 0 THEN 00570000
QUEUE_LINE = '// ' 00580000
00590000
/* ! 05 REMOVE COMMENT LINES */ 00600000
COMMENT_INDEX = INDEX(QUEUE_LINE,'//*') 00610000
IF COMMENT_INDEX = 1 THEN ITERATE 00620000
00630000
/* ! 06 PREVENTS DEV EMAIL FROM BEING SENT */ 00640000
EXIT130_INDEX = INDEX(QUEUE_LINE,'//ST130') 00650000
EXIT035_INDEX = INDEX(QUEUE_LINE,'//ST35') 00660000
IF EXIT130_INDEX > 0 | , 00670000
EXIT035_INDEX > 0 THEN ITERATE 00680000
00690000
/* ! 07 ONLY WHEN NO PROD BIND CARD */ 00700000
IF USE_MODEL_DSN = 'YES' | USE_EXCEP_DSN = 'YES' THEN 00710000
DO /* ! MODEL OR EXEPCTION */ 00720000
CALL MOD_ELM_NAME /* ++ 04 */ 00730000
CALL MOD_USER_NAME /* ++ 05 */ 00740000
END /* ! MODEL OR EXEPCTION */ 00750000
00760000
/* ! 08 FIND USER NAME IN JOBCARD */ 00770000
JOB_CARD_INDEX = INDEX(QUEUE_LINE,"//DSCCHQ01") 00780000
IF JOB_CARD_INDEX > 0 THEN 00790000
DO /* ! JOB CARD */ 00800000
PARSE VAR QUEUE_LINE 1 JOB_NAME 18 19 USER_NAME 26 . 00810000
USER_LENGTH = LENGTH(USER_NAME) 00820000
IF USER_NAME ^= ' ' THEN 00830000
USER_NAME_INDEX = INDEX(QUEUE_LINE,USER_NAME) 00840000
USER_DOT_INDEX = INDEX(USER_NAME,'.') 00850000
IF USER_DOT_INDEX > 0 THEN 00860000
DO /* ! USER NAME */ 00870000
PARSE VAR USER_NAME U1 "." U2 . 00880000
USER_NAME = U1 00890000
END /* ! USER NAME */ 00900000
NEW_JOB_NAME = '//SCTTHQBN' 00910000
QUEUE_LINE = OVERLAY(NEW_JOB_NAME,QUEUE_LINE,JOB_CARD_INDEX,10) 00920000
END /* ! JOB CARD */ 00930000
00940000
/* ! 09 CHANGE NOTIFY VALUE */ 00950000
NOTIFY_CARD_INDEX = INDEX(QUEUE_LINE,"NOTIFY=") 00960000
IF NOTIFY_CARD_INDEX > 0 THEN 00970000
IF NOTIFY_CARD_INDEX < 40 THEN /* DO ONLY REAL JOB CARD */ 00980000
DO /* ! NOTIFY */ 00990000
NOTIFY_USER_POS = NOTIFY_CARD_INDEX + 7 01000000
IF USER_LENGTH = ZEEUSER_LENGTH THEN 01010000
QUEUE_LINE = , 01020000
OVERLAY(ZEEUSER,QUEUE_LINE,NOTIFY_USER_POS,ZEEUSER_LENGTH) 01030000
IF USER_LENGTH ^= ZEEUSER_LENGTH THEN 01040000
CALL CHANGE_USER_LENGTH /* ++ 05A */ 01050000
END /* ! NOTIFY */ 01060000
/* ! 10 CHANGE XEQ VALUE */ 01070000
XEQ_CARD_INDEX = INDEX(QUEUE_LINE,"/*XEQ") 01080000
IF XEQ_CARD_INDEX = 1 THEN 01090000
DO /* ! XEQ CARD */ 01100000
QUEUE_LINE = "/*XEQ N4" /* BINDS ONLY RUN ON CPUT */ 01110000
IF PAYROLL = 'YES' THEN 01120000
QUEUE_LINE = "/*XEQ N2" /* PAYROLL BINDS ON CPUC */ 01130000
IF NDVRSTG = 'A' & WALK_SUB_SYSTEM = 'YES' THEN 01140000
QUEUE_LINE = "/*XEQ N1" /* WALKER STAGE A CPUE */ 01150000
END /* ! XEQ CARD */ 01160000
01170000
/* ! 11 CHANGE ROUTE PRINT VALUE */ 01180000
ROUTE_PRINT1_INDEX = INDEX(QUEUE_LINE,"/*ROUTE ") 01190000
ROUTE_PRINT2_INDEX = INDEX(QUEUE_LINE,"PRINT ") 01200000
IF ROUTE_PRINT1_INDEX > 0 & , 01210000
ROUTE_PRINT2_INDEX > 0 THEN 01220000
QUEUE_LINE = "/*ROUTE PRINT N4" 01230000
01240000
/* ! 12 CHANGE MSGCLASS */ 01250000
MSG_CLASS_INDEX = INDEX(QUEUE_LINE,"MSGCLASS=4") 01260000
IF MSG_CLASS_INDEX > 0 THEN 01270000
QUEUE_LINE = , 01280000
OVERLAY("MSGCLASS=P",QUEUE_LINE,MSG_CLASS_INDEX,10) 01290000
01300000
/* ! 13 CHANGE DB2 OWNER FROM PROD READY TO DEV READY */ 01310000
SQL_WORD1 = "SET CURRENT SQLID='DB2BINDR';" 01320000
DB2_SQL_OWNER_INDEX = INDEX(QUEUE_LINE,"DB2BINDR") 01330000
/* IF EXCEPTION = 'NO' THEN */ 01340000
IF DB2_SQL_OWNER_INDEX > 0 THEN 01350000
CALL CHANGE_SQL_OWNER /* ++ 06 */ 01360000
01370000
/* ! 14 CHANGE TO CURRENT USER */ 01380000
IF USER_NAME_INDEX > 0 THEN 01390000
CALL CHANGE_USER_NAME /* ++ 07 */ 01400000
01410000
/* ! 15 CHANGE DN2 TABLE */ 01420000
IF EXCEPTION = 'NO' THEN 01430000
CALL CHANGE_DB2_TABLE /* ++ 08 */ 01440000
01450000
/* ! 16 CHANGE THE STEPLIB VALUE */ 01460000
STEPLIB_INDEX = INDEX(QUEUE_LINE,'//STEPLIB') 01470000
IF STEPLIB_INDEX > 0 THEN 01480000
QUEUE_LINE = '//STEPLIB DD DSN=DB2OO.DB2EXIT,DISP=SHR ' 01490000
01500000
/* ! 17 BROUTINE LOGIC */ 01510000
PKLIST_INDEX = INDEX(QUEUE_LINE,'PKLIST(') 01520000
IF PKLIST_INDEX > 0 THEN PACK_LIST_ACTIVE = 'YES' 01530000
IF PACK_LIST_ACTIVE = 'YES' THEN 01540000
CALL PACK_LIST_LOGIC /* ++ 09 */ 01550000
01560000
/* ! 18 CHANGE THE DBRMLIB */ 01570000
DBRMLIB_INDEX = INDEX(QUEUE_LINE,'DBRMLIB') 01580000
DBRMSLAS_INDEX = INDEX(QUEUE_LINE,'//DBRMLIB') 01590000
IF DBRMLIB_INDEX > 0 THEN 01600000
IF DBRMSLAS_INDEX > 0 THEN 01610000
CALL CHANGE_DBRMLIB /* ++ 10 */ 01620000
01630000
/* ! 19 CHANGE THE PLAN TO VERSION 11 */ 01640000
PLAN_INDEX = INDEX(QUEUE_LINE,PLN_IDX_LNE) 01650000
IF PLAN_INDEX > 0 THEN 01660000
CALL CHANGE_PLAN /* ++ 10A */ 01670000
01680000
/* ! 20 CHANGE JOB HLQ DUE TO LACK OF TSS CR8 AUTHO */ 01690000
TT_CHGN_INDEX = INDEX(QUEUE_LINE,'TT.CHGCNTL') 01700000
HQ_CHGN_INDEX = INDEX(QUEUE_LINE,'HQ.CHGCNTL') 01710000
TT_BIND_INDEX = INDEX(QUEUE_LINE,'TT.BIND') 01720000
HQ_BIND_INDEX = INDEX(QUEUE_LINE,'HQ.BIND') 01730000
IF TT_CHGN_INDEX > 0 | TT_BIND_INDEX > 0 THEN 01740000
DO /* ! TT_ DSNS */ 01750000
IF ZEEUSER_LENGTH = 2 THEN 01760000
DO /* ! ZEE = 2 */ 01770000
B_DSN = ZEEUSER||'.TTTTTTT' 01780000
C_DSN = ZEEUSER||'.TTTTTTT' 01790000
END /* ! ZEE = 2 */ 01800000
IF ZEEUSER_LENGTH = 3 THEN 01810000
DO /* ! ZEE = 3 */ 01820000
C_DSN = ZEEUSER||'.TTTTTT' 01830000
B_DSN = ZEEUSER||'.TTTTTT' 01840000
END /* ! ZEE = 3 */ 01850000
IF ZEEUSER_LENGTH = 4 THEN 01860000
DO /* ! ZEE = 4 */ 01870000
C_DSN = ZEEUSER||'.TTTTT' 01880000
B_DSN = ZEEUSER||'.TTTTT' 01890000
END /* ! ZEE = 4 */ 01900000
IF ZEEUSER_LENGTH = 5 THEN 01910000
DO /* ! ZEE = 5 */ 01920000
C_DSN = ZEEUSER||'.TTTT' 01930000
B_DSN = ZEEUSER||'.TTTT' 01940000
END /* ! ZEE = 5 */ 01950000
IF ZEEUSER_LENGTH = 6 THEN 01960000
DO /* ! ZEE = 6 */ 01970000
C_DSN = ZEEUSER||'.TTT' 01980000
B_DSN = ZEEUSER||'.TTT' 01990000
END /* ! ZEE = 6 */ 02000000
IF ZEEUSER_LENGTH = 7 THEN 02010000
DO /* ! ZEE = 7 */ 02020000
C_DSN = ZEEUSER||'.TT' 02030000
B_DSN = ZEEUSER||'.TT' 02040000
END /* ! ZEE = 7 */ 02050000
IF ZEEUSER_LENGTH = 8 THEN 02060000
DO /* ! ZEE = 8 */ 02070000
C_DSN = ZEEUSER||'.T' 02080000
B_DSN = ZEEUSER||'.T' 02090000
END /* ! ZEE = 8 */ 02100000
C_DSN_LENGTH = LENGTH(C_DSN) 02110000
B_DSN_LENGTH = LENGTH(B_DSN) 02120000
END /* ! TT_ DSNS */ 02130000
02140000
/* QUEUE TT OR HQ DSN */ 02150000
IF TT_CHGN_INDEX > 0 THEN 02160000
QUEUE_LINE = OVERLAY(C_DSN,QUEUE_LINE,TT_CHGN_INDEX,C_DSN_LENGTH) 02170000
IF TT_BIND_INDEX > 0 THEN 02180000
QUEUE_LINE = OVERLAY(B_DSN,QUEUE_LINE,TT_BIND_INDEX,B_DSN_LENGTH) 02190000
IF HQ_CHGN_INDEX > 0 THEN 02200000
QUEUE_LINE = OVERLAY(ZEEUSER,QUEUE_LINE,HQ_CHGN_INDEX,ZEEUSER_LENGTH) 02210000
IF HQ_BIND_INDEX > 0 THEN 02220000
QUEUE_LINE = OVERLAY(ZEEUSER,QUEUE_LINE,HQ_BIND_INDEX,ZEEUSER_LENGTH) 02230000
02240000
/* ! 21 REMOVE DUPLICATE DBRMLIB LINES BEFORE QUEUE */ 02250000
IF DBRMLIB_INDEX ^> 0 THEN 02260000
QUEUE QUEUE_LINE 02270000
SAY 'B IS ' B 02271004
SAY 'CUR LINE IS ' CUR_LINE.B 02272004
END /* ! B LOOP */ 02280000
02290000
/* ! 22 WRITE THE OUTPUT AND SUBMIT BIND */ 02300000
BIND_DSN = QUOTE||OUTBIND'('ELMNAME')'||QUOTE 02310000
CALL NO_DUP_DSN /* ++ 11 */ 02320000
"ALLOC F(BINDOUT) DA("BIND_DSN") MOD REUSE" 02330000
'EXECIO' QUEUED() 'DISKW' BINDOUT '(FINIS' 02340000
"FREE F(BINDOUT)" 02350000
ADDRESS TSO SUB BIND_DSN 02360000
SAY BIND_DSN 'WAS SUBMITED FOR BIND' 02370000
EXIT 02380000
02390000
/* ! 23 START CALLED SUBROUTINES */ 02400000
INITAL_VARIABLE_SET: /* ++ 01 INITAL_VARIABLE_SET */ 02410000
USE_MODEL_DSN = 'NO' 02420000
USE_EXCEP_DSN = 'NO' 02430000
DBRM_LIB = DBRMDSN /* SET IN PROCESSOR */ 02440000
ZEEUSER_LENGTH = LENGTH(ZEEUSER) 02450000
ELM_LENGTH = LENGTH(ELMNAME) 02460000
ELM_NAME_HLQ = SUBSTR(ELMNAME,1,2) 02470000
ELM_SUB_SYS = SUBSTR(NDVRSUB,1,2) 02480000
CALL CHK_FOR_WALK_RCMS_SYSTEMS /* ++ 1A */ 02490000
DDCARD = ' ' 02500000
DSN_NAME = ' ' 02510000
JOB_NAME = ' ' 02520000
PK_L1 = ' ' 02530000
PK_L2 = ' ' 02540000
PK_L3 = ' ' 02550000
PK_L4 = ' ' 02560000
PK_L5 = ' ' 02570000
SLASH = ' ' 02580000
USER_NAME = ' ' 02590000
U1 = ' ' 02600000
U2 = ' ' 02610000
VAR1 = ' ' 02620000
VAR2 = ' ' 02630000
RETURN /* ++ 01 INITAL_VARIABLE_SET */ 02640000
02650000
/* ! 24 BIND CARD EXIST */ 02660000
CHECK_PROD_BIND_EXISTS: /* ++ 02 CHECK_PROD_BIND_EXISTS */ 02670000
SAY 'CHECK_PROD_BIND_EXISTS' 02680000
IN_DSN = QUOTE||"HQ.CHGCNTL.BIND("||ELMNAME||")"||QUOTE 02690000
BIND_CARD_EXIST = SYSDSN(IN_DSN) 02700000
EX_DSN = QUOTE||"TT.AUTOBIND.CHGCNTL.EXEP("||ELMNAME||")"||QUOTE 02710000
EXCEP_CARD_EXIST = SYSDSN(EX_DSN) 02720000
IF BIND_CARD_EXIST ^= 'OK' THEN 02730000
IF EXCEP_CARD_EXIST ^= 'OK' THEN 02740000
USE_MODEL_DSN = "YES" 02750000
IF EXCEP_CARD_EXIST = 'OK' THEN 02760000
DO /* ! EXECPTION YES */ 02770000
USE_EXCEP_DSN = "YES" 02780000
USE_MODEL_DSN = "NO" 02790000
END /* ! EXECPTION YES */ 02800000
/* */ 02810000
IF USE_MODEL_DSN = "YES" THEN 02820000
CALL SET_MODEL /* ++ 12 */ 02830000
IF USE_EXCEP_DSN = "YES" THEN 02840000
CALL SET_EXCEP /* ++ 13 */ 02850000
IF USE_MODEL_DSN ^= "YES" & USE_EXCEP_DSN ^= "YES" THEN 02860000
IN_BIND_DSN = , 02870000
QUOTE||"HQ.CHGCNTL.BIND("ELMNAME")"||QUOTE 02880000
RETURN /* ++ 02 CHECK_PROD_BIND_EXISTS */ 02890000
02900000
LOOP_SET: /* ++ 03 LOOP_SET */ 02910000
/* ! EACH LOOP RESET COUNTERS AND INDEX TO ZERO */ 02920000
BIND_CARD_EXIST = 'YES' 02930000
NOTIFY_CARD_INDEX = 0 02940000
NOTIFY_USER_POS = 0 02950000
COMMENT_INDEX = 0 02960000
DBRMLIB_INDEX = 0 02970000
DBRMSLAS_INDEX = 0 02980000
DB2_SQL_OWNER_INDEX = 0 02990000
DB2_SYS_INDEX = 0 03000000
END_PACK_LIST_INDEX = 0 03010000
EXIT035_INDEX = 0 03020000
EXIT130_INDEX = 0 03030000
HQ_BIND_INDEX = 0 03040000
HQ_CHGN_INDEX = 0 03050000
JOB_CARD_INDEX = 0 03060000
MOD_ELM_INDEX = 0 03070000
MOD_USER_INDEX = 0 03080000
PKLIST_INDEX = 0 03090000
ROUTE_PRINT1_INDEX = 0 03100000
ROUTE_PRINT2_INDEX = 0 03110000
SQL_WORD1_INDEX = 0 03120000
SQL_WORD2_INDEX = 0 03130000
STEPLIB_INDEX = 0 03140000
TT_BIND_INDEX = 0 03150000
TT_CHGN_INDEX = 0 03160000
USER_DOT_INDEX = 0 03170000
USER_NAME_INDEX = 0 03180000
VAR1_INDEX = 0 03190000
XEQ_CARD_INDEX = 0 03200000
RETURN /* ++ 03 LOOP_SET */ 03210000
03220000
MOD_ELM_NAME: /* ++ 04 MOD_ELM_NAME */ 03230000
MOD_ELM_INDEX = INDEX(QUEUE_LINE,'Z$$$$') 03240000
IF MOD_ELM_INDEX > 0 THEN 03250000
QUEUE_LINE = OVERLAY(ELMNAME,QUEUE_LINE,MOD_ELM_INDEX,ELM_LENGTH) 03260000
/* IF NO $ IN MEMBER NAME THEN CHANGE ALL $ TO BLANK. THIS IS ONLY 03270000
AN ISSUE WHEN NEW BIND CARD MEMBER NAME IS LT 8 CHARACTERS */ 03280000
IF DOLLAR_FOUND = 'NO' THEN 03290000
QUEUE_LINE = TRANSLATE(QUEUE_LINE,BLANK,D_SIGN) 03300000
RETURN /* ++ 04 MOD_ELM_NAME */ 03310000
03320000
MOD_USER_NAME: /* ++ 05 MOD_USER_NAME */ 03330000
MOD_USER_INDEX = INDEX(QUEUE_LINE,'%%%%%%%') 03340000
IF MOD_USER_INDEX > 0 THEN 03350000
DO /* ! MOD_USER_INDEX */ 03360000
QUEUE_LINE = OVERLAY(ZEEUSER,QUEUE_LINE,MOD_USER_INDEX,ZEEUSER_LENGTH) 03370000
QUEUE_LINE = TRANSLATE(QUEUE_LINE,PERCENT,BLANK) 03380000
END /* ! MOD_USER_INDEX */ 03390000
RETURN /* ++ 05 MOD_USER_NAME */ 03400000
03410000
CHANGE_SQL_OWNER: /* ++ 06 CHANGE_SQL_OWNER */ 03420000
SQL_WORD1 = "SET CURRENT SQLID='DB2BINDR';" 03430000
SQL_WORD2 = "OWNER(DB2BINDR)" 03440000
SQL_WORD1_INDEX = INDEX(QUEUE_LINE,SQL_WORD1) 03450000
SQL_WORD2_INDEX = INDEX(QUEUE_LINE,SQL_WORD2) 03460000
IF SQL_WORD1_INDEX > 0 THEN 03470000
DO /* ! CURRENT SQLID */ 03480000
IF NDVRSYS ^= HUMAN THEN 03490000
QUEUE_LINE = " SET CURRENT SQLID='DB2ISD';" 03500000
IF NDVRSYS = HUMAN THEN 03510000
QUEUE_LINE = " SET CURRENT SQLID='DB2PAYRL';" 03520000
IF RCMS_SYSTEM = 'YES' THEN 03530000
QUEUE_LINE = " SET CURRENT SQLID='DB2RCMS';" 03540000
END /* ! CURRENT SQLID */ 03550000
IF SQL_WORD2_INDEX > 0 THEN 03560000
DO /* ! OWNER ID */ 03570000
IF NDVRSYS ^= HUMAN THEN 03580000
QUEUE_LINE = " OWNER(DB2ISD) -" 03590000
IF NDVRSYS = HUMAN THEN 03600000
QUEUE_LINE = " OWNER(DB2PAYRL) -" 03610000
IF RCMS_SYSTEM = 'YES' THEN 03620000
QUEUE_LINE = " OWNER(DB2RCMS) -" 03630000
END /* ! OWNER ID */ 03640000
03650000
RETURN /* ++ 06 CHANGE_SQL_OWNER */ 03660000
CHANGE_USER_NAME: /* ++ 07 CHANGE_USER_NAME */ 03670000
IF ZEEUSER_LENGTH ^= USER_LENGTH THEN 03680000
CALL TRANS_USER_NAME /* ++ 14 */ 03690000
IF ZEEUSER_LENGTH = USER_LENGTH THEN 03700000
QUEUE_LINE = , 03710000
OVERLAY(ZEEUSER,QUEUE_LINE,USER_NAME_INDEX,USER_LENGTH) 03720000
RETURN /* ++ 07 CHANGE_USER_NAME */ 03730000
03740000
CHANGE_DB2_TABLE: /* ++ 08 CHANGE_DB2_TABLE */ 03750000
DB2_STATMENT = 'DSN SYSTEM'||OPEN_BAN /* ONLY USING OPEN_BAN */ 03760000
DB2_SYS_INDEX = INDEX(QUEUE_LINE,DB2_STATMENT) 03770000
IF DB2_SYS_INDEX > 0 THEN 03780000
DO /* ! DB2_SYS */ 03790000
QUEUE_LINE = 'DSN SYSTEM(DB2O)' 03800000
IF NDVRSTG = 'A' & WALK_SUB_SYSTEM = 'YES' THEN DO 03810000
QUEUE_LINE = 'DSN SYSTEM(DB2T)' 03820000
/* NEW_PLAN = 'PLAN(DSNTIA11)' */ 03830000
END 03840000
IF PAYROLL = 'YES' THEN DO /* SET IN THE PROCESSOR */ 03850000
QUEUE_LINE = 'DSN SYSTEM(DB2A)' 03860000
/* NEW_PLAN = 'PLAN(DSNTIA11)' */ 03870000
END 03880000
END /* ! DB2_SYS */ 03890000
RETURN /* ++ 08 CHANGE_DB2_TABLE */ 03900000
03910000
PACK_LIST_LOGIC: /* ++ 09 PACK_LIST_LOGIC */ 03920000
PACK_LIST_WORDS = WORDS(QUEUE_LINE) 03930000
IF PACK_LIST_WORDS > 1 THEN 03940000
PARSE VAR QUEUE_LINE PK_L1 PK_L2 PK_L3 PK_L4 PK_L5 . 03950000
IF PK_L1 = '+' | PK_L1 = '-' THEN PK_L1 = ' ' 03960000
IF PKLIST_INDEX > 0 THEN 03970000
IF PK_L1 ^= 'PKLIST(' THEN 03980000
DO /* ! PK_L1 */ 03990000
CALL DB2_PACK_PROCESS PK_L1 /* ++ 15 */ 04000000
PK_L1 = VAR1 04010000
END /* ! PK_L1 */ 04020000
IF PK_L2 = '+' | PK_L2 = '-' THEN PK_L2 = ' ' 04030000
IF PK_L2 ^= ' ' THEN 04040000
DO /* ! PK_L2 */ 04050000
CALL DB2_PACK_PROCESS PK_L2 /* ++ 15 */ 04060000
PK_L2 = VAR1 04070000
END /* ! PK_L2 */ 04080000
IF PK_L3 = '+' | PK_L3 = '-' THEN PK_L3 = ' ' 04090000
IF PK_L3 ^= ' ' THEN 04100000
DO /* ! PK_L3 */ 04110000
CALL DB2_PACK_PROCESS PK_L3 /* ++ 15 */ 04120000
PK_L3 = VAR1 04130000
END /* ! PK_L3 */ 04140000
IF PK_L4 = '+' | PK_L4 = '-' THEN PK_L4 = ' ' 04150000
IF PK_L4 ^= ' ' THEN 04160000
DO /* ! PK_L4 */ 04170000
CALL DB2_PACK_PROCESS PK_L4 /* ++ 15 */ 04180000
PK_L4 = VAR1 04190000
END /* ! PK_L4 */ 04200000
IF PK_L5 ^= ' ' THEN 04210000
DO /* ! PK_L5 ERROR CHECK */ 04220000
SAY 'PACKAGE LIST LARGER THEN EXPECTED' 04230000
SAY 'CONTACT BIND POC ' 04240000
END /* ! PK_L5 ERROR CHECK */ 04250000
END_PACK_LIST_INDEX = INDEX(QUEUE_LINE,CLOSE_BAN) 04260000
IF END_PACK_LIST_INDEX > 0 THEN 04270000
PACK_LIST_ACTIVE = 'OVER' 04280000
QUEUE_LINE_TEMP = ' ' 04290000
QUEUE_LINE_TEMP = PK_L1 PK_L2 PK_L3 PK_L4 PK_L5 04300000
RETURN /* ++ 09 PACK_LIST_LOGIC */ 04310000
04320000
DB2_PACK_PROCESS: /* ++ 15 DB2_PACK_PROCESS */ 04330000
ARG ARG_NAME 04340000
ARG_NAME_R = REVERSE(ARG_NAME) 04350000
PARSE VAR ARG_NAME_R VAR1 '.' VAR2 . 04360000
VAR1 = REVERSE(VAR1) 04370000
VAR1_INDEX = INDEX(ARG_NAME,VAR1) 04380000
VAR1_LENGTH = LENGTH(VAR1) 04390000
VAR1 = , 04400000
OVERLAY('*',ARG_NAME,VAR1_INDEX,VAR1_LENGTH) 04410000
RETURN /* ++ 15 DB2_PACK_PROCESS */ 04420000
04430000
CHANGE_DBRMLIB: /* ++ 10 CHANGE_DBRMLIB */ 04440000
PARSE VAR QUEUE_LINE SLASH DDCARD DSN_NAME . 04450000
QUEUE_LINE = SLASH DDCARD "DSN="||DBRM_LIB||",DISP=SHR" 04460000
/* ! DBRM_LINE = 'DONE' */ 04470000
DBRMLIB_INDEX = 0 04480000
RETURN /* ++ 10 CHANGE_DBRMLIB */ 04490000
CHANGE_PLAN: /* ++ 10A CHANGE_PLAN */ 04500000
PARSE VAR QUEUE_LINE RUN PGM OLD_PLAN . 04510000
QUEUE_LINE = RUN PGM NEW_PLAN 04520000
PLAN_INDEX = 0 04530000
RETURN /* ++ 10A CHANGE_DBRMLIB */ 04540000
04550000
NO_DUP_DSN: /* ++ 11 NO_DUP_DSN */ 04560000
MEM_EXIST = SYSDSN(BIND_DSN) 04570000
IF MEM_EXIST = 'OK' THEN 04580000
DO /* ! DELETE MEMBER */ 04590000
CALL OUTTRAP "LINE.", "*" 04600000
"DELETE" BIND_DSN 04610000
CALL OUTTRAP "OFF" 04620000
END /* ! DELETE MEMBER */ 04630000
RETURN /* ++ 11 NO_DUP_DSN */ 04640000
04650000
CHK_FOR_WALK_RCMS_SYSTEMS: /* ++ 1A CHK_FOR_WALK_RCMS_SYSTEMS */ 04660000
/* WALKER SET */ 04670000
WALK_SUB_SYSTEM = 'NO' 04680000
IF ELM_SUB_SYS = 'OA' | , 04690000
ELM_SUB_SYS = 'WI' | , 04700000
ELM_SUB_SYS = 'WK' THEN 04710000
WALK_SUB_SYSTEM = 'YES' 04720000
04730000
/* RCMS SET */ 04740000
RCMS_SYSTEM = 'NO' 04750000
IF ELM_SUB_SYS = 'RA' & , 04760000
ELM_NAME_HLQ = 'RA' THEN 04770000
RCMS_SYSTEM = 'YES' 04780000
RETURN /* ++ 1A CHK_FOR_WALK_RCMS_SYSTEMS */ 04790000
04800000
SET_MODEL: /* ++ 12 SET MODEL */ 04810000
MOD_NAME = '#MODEL' 04820000
HUM_NAME = '#HUMAN' 04830000
RCMS_NAME = '#RCMS' 04840000
WALK_NAME = '#WALK' 04850000
IN_BIND_DSN = , 04860000
QUOTE||"TT.AUTOBIND.CHGCNTL.EXEP("MOD_NAME")"||QUOTE 04870000
IF NDVRSYS = HUMAN THEN 04880000
IN_BIND_DSN = , 04890000
QUOTE||"TT.AUTOBIND.CHGCNTL.EXEP("HUM_NAME")"||QUOTE 04900000
IF RCMS_SYSTEM = 'YES' THEN 04910000
IN_BIND_DSN = , 04920000
QUOTE||"TT.AUTOBIND.CHGCNTL.EXEP("RCMS_NAME")"||QUOTE 04930000
IF WALK_SUB_SYSTEM = 'YES' THEN 04940000
IN_BIND_DSN = , 04950000
QUOTE||"TT.AUTOBIND.CHGCNTL.EXEP("WALK_NAME")"||QUOTE 04960000
SAY '**************************************************************' 04970000
SAY '*** BIND CARD FOR ' ELMNAME ' NOT FOUND IN HQ.CHGCNTL.BIND ***' 04980000
SAY '*** MODEL BIND CARD USED FOR GENERATE AND MOVE STEPS ONLY ***' 04990000
SAY '*** PRODUCTION BIND CARD IS NOT UPDATED. ***' 05000000
SAY '*** USE BIND DIALOG FOR PERMENENT CHANGES ***' 05010000
SAY '**************************************************************' 05020000
RETURN /* ++ 12 SET MODEL */ 05030000
05040000
SET_EXCEP: /* ++ 13 SET EXCEP */ 05050000
FILE_DISP = 'MOD' 05060000
IF BIND_CARD_EXIST ^= 'OK' THEN EXP_NAME = '#MODEL' 05070000
IF BIND_CARD_EXIST = 'OK' THEN EXP_NAME = ELMNAME 05080000
IN_BIND_DSN = , 05090000
QUOTE||"TT.AUTOBIND.CHGCNTL.EXEP("EXP_NAME")"||QUOTE 05100000
SAY '**************************************************************' 05110000
SAY '*** BIND CARD FOR ' ELMNAME ' EXCEPTION BIND CARD FOUND ***' 05120000
SAY '*** IN TT.AUTOBIND.CHGCNTL.EXEP ***' 05130000
SAY '*** BIND CARD USED FOR GENERATE AND MOVE PROCESS ONLY ***' 05140000
SAY '*** PRODUCTION BIND CARD IS NOT UPDATED. ***' 05150000
SAY '*** USE BIND DIALOG FOR PERMENENT CHANGES ***' 05160000
SAY '**************************************************************' 05170000
RETURN /* ++ 13 SET EXCEP */ 05180000
05190000
TRANS_USER_NAME: /* ++ 14 TRANS_USER_NAME */ 05200000
USER_POS = USER_NAME_INDEX 05210000
USER_POS_MINUS = USER_NAME_INDEX - 1 05220000
USER_END = USER_LENGTH + USER_NAME_INDEX 05230000
USER_LAST = USER_END - 1 05240000
PARSE VAR QUEUE_LINE , 05250000
1 USER1 USER_POS_MINUS , 05260000
USER_NAME_INDEX USER2 USER_END , 05270000
USER_LAST USER3 QUEUE_LINE_LENGTH . 05280000
RETURN /* ++ 14 TRANS_USER_NAME */ 05290000
CHANGE_USER_LENGTH: /* ++ 05A CHANGE_USER_LENGTH */ 05300000
PARSE VAR QUEUE_LINE NOTIFY_PARM ',' MSG_PARM ',' REGION_PARM . 05310000
NEW_NOTIFY_PARM = 'NOTIFY='||ZEEUSER 05320000
QUEUE_LINE = , 05330000
'// ' NEW_NOTIFY_PARM||COMMA||MSG_PARM||COMMA||REGION_PARM 05340000
RETURN /* ++ 05A CHANGE_USER_LENGTH */ 05350000