Article

Philip Howells' code

Philip Howells

Run FTP Script Command (AUTOFTP)

 
Type choices, press Enter. 

Input Script File  . . . . . . . > $FTP_INPUT 	10 Chars 
  Library  . . . . . . . . . . . > $ADMIN 	10 Chars 
  Member . . . . . . . . . . . . > OVERNIGHT 	10 Chars 
Remote System Name . . . . . . . > CH1SRV08 
Remote USERNAME  . . . . . . . . > PHOWELLS 
Remote PASSWORD  . . . . . . . . > 
Domain (NT only) . . . . . . . . > SICPA 

Batch Mode (Y/N)?  . . . . . . . > Y 		Y, N 
Job Name . . . . . . . . . . . . > SICPAXFR 	Character value 
JOBD . . . . . . . . . . . . . . > IS_ADMIN 	Default *USRPRF 
  Library  . . . . . . . . . . . > $ADMIN 	Character value 
JOBQ . . . . . . . . . . . . . . > A064LBCH2 	Default *JOBD 
  Library  . . . . . . . . . . . > A0GPL 	Character value 

Log (Y/N)? . . . . . . . . . . . > Y 		Y, N 

Date      (ddmmyy) . . . . . . . > 060801 	Blank=Today 
Time 24hr (hhmmss) . . . . . . . > 2030 	Blank=Now 

Recurring (Y/N)? . . . . . . . . > Y 		Y, N 
MONDAY    Run (Y/N)? . . . . . . . N 		Y, N 
TUESDAY   Run (Y/N)? . . . . . . > Y 		Y, N 
WEDNESDAY Run (Y/N)? . . . . . . . N 		Y, N 
THURSDAY  Run (Y/N)? . . . . . . . N 		Y, N 
FRIDAY    Run (Y/N)? . . . . . . > Y 		Y, N 
SATURDAY  Run (Y/N)? . . . . . . > Y 		Y, N 
SUNDAY    Run (Y/N)? . . . . . . . N 		Y, N 

F3=Exit F4=Prompt F5=Refresh F12=Cancel F13=How to use this display 
F24=More keys 

Input File Consideration

The command expects to find a script that uses the format QCLSRC with the default field labels SRCSEQ + SRCDAT + SRCDTA, though SRCDAT is ignored in this command). Example... 

SRCSEQ  SRCDAT  SRCDTA 
0001.00 010,423 
0002.00 010,423 cd 039 
0003.00 010,423 namefmt 1 
0004.00 010,423 mput /SICPA/DATAWHS/039* 
0005.00 010,423 mput /SICPA/DATAWHS/h* 
0006.00 010,423 quit 
 
		
		Code: AUTOFTP (CMD)
*************** Beginning of data ***************************************************************************************
0001.00 CMD PROMPT('Run FTP Script Command') 
0002.00 
0003.00 INPUTF: PARM KWD(INPUTF) TYPE(*CHAR) LEN(10) MIN(1) ALWUNPRT(*NO) ALWVAR(*YES) CHOICE('10 Chars') + 
0004.00 PROMPT('Input Script File') 
0005.00 
0006.00 INPUTLIB: PARM KWD(INPUTLIB) TYPE(*CHAR) LEN(10) MIN(1) ALWUNPRT(*NO) ALWVAR(*YES) CHOICE('10 Chars') + 
0007.00 PROMPT(' Library') 
0008.00 
0009.00 INPUTMBR: PARM KWD(INPUTMBR) TYPE(*CHAR) LEN(10) MIN(1) ALWUNPRT(*NO) ALWVAR(*YES) CHOICE('10 Chars') + 
0010.00 PROMPT(' Member') 
0011.00 
0012.00 RMTSYS: PARM KWD(RMTSYS) TYPE(*CHAR) LEN(15) MIN(1) ALWUNPRT(*NO) ALWVAR(*YES) + 
0013.00 CHOICE('AS/400 Max 10)') PROMPT('Remote System Name') 
0014.00 
0015.00 USERNAME: PARM KWD(USERNAME) TYPE(*CHAR) LEN(15) MIN(1) ALWUNPRT(*NO) ALWVAR(*YES) CASE(*MIXED) + 
0016.00 CHOICE('AS/400 Max 10)') PROMPT('Remote USERNAME') 
0017.00 
0018.00 PASSWORD: PARM KWD(PASSWORD) TYPE(*CHAR) LEN(15) MIN(1) ALWUNPRT(*NO) ALWVAR(*YES) CASE(*MIXED) + 
0019.00 DSPINPUT(*NO) CHOICE('AS/400 Max 10)') PROMPT('Remote PASSWORD') 
0020.00 
0021.00 DOMAIN: PARM KWD(DOMAIN) TYPE(*CHAR) LEN(15) MIN(0) ALWUNPRT(*NO) ALWVAR(*YES) + 
0022.00 CHOICE('15 Chars') PROMPT('Domain (NT only)') 
0023.00 
0024.00 BATCH: PARM KWD(BATCH) TYPE(*CHAR) LEN(1) RSTD(*YES) DFT(N) VALUES(Y N) MIN(0) ALWUNPRT(*NO) + 
0025.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT('Batch Mode (Y/N)?') 
0026.00 
0027.00 BATCHVAL: PMTCTL CTL(BATCH) COND((*EQ Y)) 
0028.00 
0029.00 JOBNAME: PARM KWD(JOBNAME) TYPE(*CHAR) LEN(10) DFT(AUTOFTPBCH) MIN(0) ALWUNPRT(*NO) ALWVAR(*YES) + 
0030.00 DSPINPUT(*YES) PMTCTL(BATCHVAL) PROMPT('Job Name') 
0031.00 
0032.00 JOBD: PARM KWD(JOBD) TYPE(*CHAR) LEN(10) MIN(0) ALWUNPRT(*YES) + 
0033.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT('JOBD') CHOICE('Default *USRPRF') PMTCTL(BATCHVAL) 
0034.00 
0035.00 JOBDLIB: PARM KWD(JOBDLIB) TYPE(*CHAR) LEN(10) MIN(0) ALWUNPRT(*NO) + 
0036.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT(' Library') PMTCTL(BATCHVAL) 
0037.00 
0038.00 JOBQ: PARM KWD(JOBQ) TYPE(*CHAR) LEN(10) MIN(0) ALWUNPRT(*YES) + 
0039.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT('JOBQ') CHOICE('Default *JOBD') PMTCTL(BATCHVAL) 
0040.00 
0041.00 JOBQLIB: PARM KWD(JOBQLIB) TYPE(*CHAR) LEN(10) MIN(0) ALWUNPRT(*NO) + 
0042.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT(' Library') PMTCTL(BATCHVAL) 
0043.00 
0044.00 LOG: PARM KWD(LOG) TYPE(*CHAR) LEN(1) RSTD(*YES) MIN(0) ALWUNPRT(*NO) VALUES(Y N) DFT(N) + 
0045.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT('Log (Y/N)?') PMTCTL(BATCHVAL) 
0046.00 
0047.00 DATE: PARM KWD(DATE) TYPE(*DATE) RSTD(*NO) MIN(0) ALWUNPRT(*YES) + 
0048.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT('Date (ddmmyy)') PMTCTL(BATCHVAL) CHOICE('Blank=Today') 
0049.00 
0050.00 TIME: PARM KWD(TIME) TYPE(*TIME) RSTD(*NO) MIN(0) ALWUNPRT(*YES) + 
0051.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT('Time 24hr (hhmmss)') PMTCTL(BATCHVAL) CHOICE('Blank=Now') 
0052.00 
0053.00 TIMEVAL: PMTCTL CTL(TIME) COND((*SPCFD)) 
0054.00 
0055.00 RECUR: PARM KWD(RECUR) TYPE(*CHAR) LEN(1) RSTD(*YES) MIN(0) ALWUNPRT(*NO) VALUES(Y N) DFT(N) + 
0056.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT('Recurring (Y/N)?') PMTCTL(TIMEVAL) 
0057.00 
0058.00 RECURVAL: PMTCTL CTL(RECUR) COND((*EQ Y)) 
0059.00 
0060.00 MON: PARM KWD(MON) TYPE(*CHAR) LEN(1) RSTD(*YES) MIN(0) ALWUNPRT(*NO) VALUES(Y N) DFT(N) + 
0061.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT('MONDAY Run (Y/N)?') PMTCTL(RECURVAL) 
0062.00 
0063.00 TUE: PARM KWD(TUE) TYPE(*CHAR) LEN(1) RSTD(*YES) MIN(0) ALWUNPRT(*NO) VALUES(Y N) DFT(N) + 
0064.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT('TUESDAY Run (Y/N)?') PMTCTL(RECURVAL) 
0065.00 
0066.00 WED: PARM KWD(WED) TYPE(*CHAR) LEN(1) RSTD(*YES) MIN(0) ALWUNPRT(*NO) VALUES(Y N) DFT(N) + 
0067.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT('WEDNESDAY Run (Y/N)?') PMTCTL(RECURVAL) 
0068.00 
0069.00 THU: PARM KWD(THU) TYPE(*CHAR) LEN(1) RSTD(*YES) MIN(0) ALWUNPRT(*NO) VALUES(Y N) DFT(N) + 
0070.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT('THURSDAY Run (Y/N)?') PMTCTL(RECURVAL) 
0071.00 
0072.00 FRI: PARM KWD(FRI) TYPE(*CHAR) LEN(1) RSTD(*YES) MIN(0) ALWUNPRT(*NO) VALUES(Y N) DFT(N) + 
0073.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT('FRIDAY Run (Y/N)?') PMTCTL(RECURVAL) 
0074.00 
0075.00 SAT: PARM KWD(SAT) TYPE(*CHAR) LEN(1) RSTD(*YES) MIN(0) ALWUNPRT(*NO) VALUES(Y N) DFT(N) + 
0076.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT('SATURDAY Run (Y/N)?') PMTCTL(RECURVAL) 
0077.00 
0078.00 SUN: PARM KWD(SUN) TYPE(*CHAR) LEN(1) RSTD(*YES) MIN(0) ALWUNPRT(*NO) VALUES(Y N) DFT(N) + 
0079.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT('SUNDAY Run (Y/N)?') PMTCTL(RECURVAL) 
0080.00 
****************** End of data ****************************************************************************************** 

AUTOFTP (CL)
*************** Beginning of data ***************************************************************************************
0001.00 PGM PARM(&INPUTF &INPUTLIB &INPUTMBR &RMTSYS &USERNAME &PASSWORD &DOMAIN &BATCH &JOBNAME + 
0002.00 &JOBD &JOBDLIB &JOBQ &JOBQLIB &LOG &DATE &TIME &RECUR &MON &TUE &WED &THU &FRI &SAT &SUN) 
0003.00 
0004.00 DCL VAR(&INPUTF) TYPE(*CHAR) LEN(10) 
0005.00 DCL VAR(&INPUTLIB) TYPE(*CHAR) LEN(10) 
0006.00 DCL VAR(&INPUTMBR) TYPE(*CHAR) LEN(10) 
0007.00 DCL VAR(&RMTSYS) TYPE(*CHAR) LEN(15) 
0008.00 DCL VAR(&USERNAME) TYPE(*CHAR) LEN(15) 
0009.00 DCL VAR(&PASSWORD) TYPE(*CHAR) LEN(15) 
0010.00 DCL VAR(&DOMAIN) TYPE(*CHAR) LEN(15) 
0011.00 DCL VAR(&BATCH) TYPE(*CHAR) LEN(1) 
0012.00 DCL VAR(&JOBNAME) TYPE(*CHAR) LEN(10) 
0013.00 DCL VAR(&JOBD) TYPE(*CHAR) LEN(10) 
0014.00 DCL VAR(&JOBDLIB) TYPE(*CHAR) LEN(10) 
0015.00 DCL VAR(&JOBQ) TYPE(*CHAR) LEN(10) 
0016.00 DCL VAR(&JOBQLIB) TYPE(*CHAR) LEN(10) 
0017.00 DCL VAR(&LOG) TYPE(*CHAR) LEN(1) 
0018.00 DCL VAR(&DATE) TYPE(*CHAR) LEN(7) 
0019.00 DCL VAR(&TIME) TYPE(*CHAR) LEN(6) 
0020.00 DCL VAR(&RECUR) TYPE(*CHAR) LEN(1) 
0021.00 DCL VAR(&MON) TYPE(*CHAR) LEN(1) 
0022.00 DCL VAR(&TUE) TYPE(*CHAR) LEN(1) 
0023.00 DCL VAR(&WED) TYPE(*CHAR) LEN(1) 
0024.00 DCL VAR(&THU) TYPE(*CHAR) LEN(1) 
0025.00 DCL VAR(&FRI) TYPE(*CHAR) LEN(1) 
0026.00 DCL VAR(&SAT) TYPE(*CHAR) LEN(1) 
0027.00 DCL VAR(&SUN) TYPE(*CHAR) LEN(1) 
0028.00 
0029.00 DCL VAR(&BLANK) TYPE(*CHAR) LEN(40) 
0030.00 DCL VAR(&C) TYPE(*CHAR) LEN(1) VALUE('''') 
0031.00 DCL VAR(&SQL) TYPE(*CHAR) LEN(100) 
0032.00 DCL VAR(&LOGUSED) TYPE(*CHAR) LEN(11) 
0033.00 DCL VAR(&LOGCLPGM) TYPE(*CHAR) LEN(5) 
0034.00 DCL VAR(&TODAY) TYPE(*CHAR) LEN(4) 
0035.00 DCL VAR(&DATENOW) TYPE(*CHAR) LEN(6) 
0036.00 DCL VAR(&TIMENOW) TYPE(*CHAR) LEN(6) 
0037.00 DCL VAR(&TEXT) TYPE(*CHAR) LEN(80) 
0038.00 
0039.00 MONMSG MSGID(CPF0000) 
0040.00 
0041.00 IF COND(&BATCH *EQ 'N') THEN(GOTO CMDLBL(INTERACT)) 
0042.00 
0043.00 RTVSYSVAL SYSVAL(QDATE) RTNVAR(&DATENOW) 
0044.00 
0045.00 IF COND(&DATE *EQ '0000000') + 
0046.00 THEN(CHGVAR VAR(&DATE) VALUE(&DATENOW)) 
0047.00 ELSE CHGVAR VAR(&DATE) VALUE(%SST(&DATE 6 2) *TCAT %SST(&DATE 4 2) *TCAT %SST(&DATE 2 2)) 
0048.00 
0049.00 SBMJOB CMD(*LIBL/AUTOFTPSCH INPUTF(&INPUTF) INPUTLIB(&INPUTLIB) + 
0050.00 INPUTMBR(&INPUTMBR) RMTSYS(&RMTSYS) USERNAME(&USERNAME) PASSWORD(&PASSWORD) DOMAIN(&DOMAIN) + 
0051.00 BATCH(&BATCH) JOBNAME(&JOBNAME) JOBD(&JOBD) JOBDLIB(&JOBDLIB) JOBQ(&JOBQ) + 
0052.00 JOBQLIB(&JOBQLIB) LOG(&LOG) DATE(&DATE) TIME(&TIME) RECUR(&RECUR) MON(&MON) + 
0053.00 TUE(&TUE) WED(&WED) THU(&THU) FRI(&FRI) SAT(&SAT) SUN(&SUN)) JOB(AUTOFTPSCH) + 
0054.00 JOBQ($ADMIN/IS_ADMIN)
0055.00 
0056.00 GOTO CMDLBL(EXIT) 
0057.00 
0058.00 INTERACT: 
0059.00 
0060.00 OVRDBF FILE(&INPUTF) TOFILE(&INPUTLIB/&INPUTF) MBR(&INPUTMBR) 
0061.00 
0062.00 /**********************************************/ 
0063.00 /* BUILD & RUN SQL STATEMENT - SET PASSWORD */ 
0064.00 
0065.00 IF COND(&DOMAIN *NE ' ') + 
0066.00 THEN(CHGVAR VAR(&SQL) VALUE('UPDATE ' *CAT &INPUTLIB *TCAT '/' *TCAT &INPUTF *TCAT ' SET SRCDTA = ' + 
0067.00 *CAT &C *TCAT &DOMAIN *TCAT '' *TCAT &USERNAME *TCAT ' ' *CAT &PASSWORD *TCAT &C *TCAT ' WHERE SRCSEQ = 1')) 
0068.00 ELSE CHGVAR VAR(&SQL) VALUE('UPDATE ' *CAT &INPUTLIB *TCAT '/' *TCAT &INPUTF *TCAT ' SET SRCDTA = ' + 
0069.00 *CAT &C *TCAT &USERNAME *TCAT ' ' *CAT &PASSWORD *TCAT &C *TCAT ' WHERE SRCSEQ = 1') 
0070.00 
0071.00 RUNSQL REQUEST(&SQL) 
0072.00 /**********************************************/ 
0073.00 
0074.00 OVRDBF FILE(INPUT) TOFILE(&INPUTLIB/&INPUTF) MBR(&INPUTMBR) 
0075.00 
0076.00 FTP RMTSYS(&RMTSYS) 
0077.00 OVRDBF FILE(INPUT) 
0078.00 
0079.00 /**********************************************/ 
0080.00 /* BUILD & RUN SQL STATEMENT - CLEAR PASSWORD */ 
0081.00 
0082.00 CHGVAR VAR(&SQL) VALUE('UPDATE ' *CAT &INPUTLIB *TCAT '/' *TCAT &INPUTF *TCAT ' SET SRCDTA = ' + 
0083.00 *CAT &C *TCAT &BLANK *TCAT &C *TCAT ' WHERE SRCSEQ = 1') 
0084.00 
0085.00 RUNSQL REQUEST(&SQL) 
0086.00 /**********************************************/ 
0087.00 
0088.00 EXIT: 
0089.00 
0090.00 ENDPGM 
****************** End of data ****************************************************************************************** 

AUTOFTPSCH (CMD)
*************** Beginning of data ***************************************************************************************
0001.00 CMD PROMPT('Run FTP Script Command') 
0002.00 
0003.00 INPUTF: PARM KWD(INPUTF) TYPE(*CHAR) LEN(10) MIN(1) ALWUNPRT(*NO) ALWVAR(*YES) CHOICE('10 Chars') + 
0004.00 PROMPT('Input Script File') 
0005.00 
0006.00 INPUTLIB: PARM KWD(INPUTLIB) TYPE(*CHAR) LEN(10) MIN(1) ALWUNPRT(*NO) ALWVAR(*YES) CHOICE('10 Chars') + 
0007.00 PROMPT(' Library') 
0008.00 
0009.00 INPUTMBR: PARM KWD(INPUTMBR) TYPE(*CHAR) LEN(10) MIN(1) ALWUNPRT(*NO) ALWVAR(*YES) CHOICE('10 Chars') + 
0010.00 PROMPT(' Member') 
0011.00 
0012.00 RMTSYS: PARM KWD(RMTSYS) TYPE(*CHAR) LEN(15) MIN(1) ALWUNPRT(*NO) ALWVAR(*YES) + 
0013.00 CHOICE('AS/400 Max 10)') PROMPT('Remote System Name') 
0014.00 
0015.00 USERNAME: PARM KWD(USERNAME) TYPE(*CHAR) LEN(15) MIN(1) ALWUNPRT(*NO) ALWVAR(*YES) CASE(*MIXED) + 
0016.00 CHOICE('AS/400 Max 10)') PROMPT('Remote USERNAME') 
0017.00 
0018.00 PASSWORD: PARM KWD(PASSWORD) TYPE(*CHAR) LEN(15) MIN(1) ALWUNPRT(*NO) ALWVAR(*YES) CASE(*MIXED) + 
0019.00 DSPINPUT(*NO) CHOICE('AS/400 Max 10)') PROMPT('Remote PASSWORD') 
0020.00 
0021.00 DOMAIN: PARM KWD(DOMAIN) TYPE(*CHAR) LEN(15) MIN(0) ALWUNPRT(*NO) ALWVAR(*YES) + 
0022.00 CHOICE('15 Chars') PROMPT('Domain (NT only)') 
0023.00 
0024.00 BATCH: PARM KWD(BATCH) TYPE(*CHAR) LEN(1) RSTD(*YES) DFT(N) VALUES(Y N) MIN(0) ALWUNPRT(*NO) + 
0025.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT('Batch Mode (Y/N)?') 
0026.00 
0027.00 BATCHVAL: PMTCTL CTL(BATCH) COND((*EQ Y)) 
0028.00 
0029.00 JOBNAME: PARM KWD(JOBNAME) TYPE(*CHAR) LEN(10) DFT(AUTOFTPBCH) MIN(0) ALWUNPRT(*NO) ALWVAR(*YES) + 
0030.00 DSPINPUT(*YES) PMTCTL(BATCHVAL) PROMPT('Job Name') 
0031.00 
0032.00 JOBD: PARM KWD(JOBD) TYPE(*CHAR) LEN(10) MIN(0) ALWUNPRT(*YES) + 
0033.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT('JOBD') CHOICE('Default *USRPRF') PMTCTL(BATCHVAL) 
0034.00 
0035.00 JOBDLIB: PARM KWD(JOBDLIB) TYPE(*CHAR) LEN(10) MIN(0) ALWUNPRT(*NO) + 
0036.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT(' Library') PMTCTL(BATCHVAL) 
0037.00 
0038.00 JOBQ: PARM KWD(JOBQ) TYPE(*CHAR) LEN(10) MIN(0) ALWUNPRT(*YES) + 
0039.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT('JOBQ') CHOICE('Default *JOBD') PMTCTL(BATCHVAL) 
0040.00 
0041.00 JOBQLIB: PARM KWD(JOBQLIB) TYPE(*CHAR) LEN(10) MIN(0) ALWUNPRT(*NO) + 
0042.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT(' Library') PMTCTL(BATCHVAL) 
0043.00 
0044.00 LOG: PARM KWD(LOG) TYPE(*CHAR) LEN(1) RSTD(*YES) MIN(0) ALWUNPRT(*NO) VALUES(Y N) DFT(N) + 
0045.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT('Log (Y/N)?') PMTCTL(BATCHVAL) 
0046.00 
0047.00 DATE: PARM KWD(DATE) TYPE(*DATE) RSTD(*NO) MIN(0) ALWUNPRT(*YES) + 
0048.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT('Date (ddmmyy)') PMTCTL(BATCHVAL) CHOICE('Blank=Today') 
0049.00 
0050.00 TIME: PARM KWD(TIME) TYPE(*TIME) RSTD(*NO) MIN(0) ALWUNPRT(*YES) + 
0051.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT('Time 24hr (hhmmss)') PMTCTL(BATCHVAL) CHOICE('Blank=Now') 
0052.00 
0053.00 TIMEVAL: PMTCTL CTL(TIME) COND((*SPCFD)) 
0054.00 
0055.00 RECUR: PARM KWD(RECUR) TYPE(*CHAR) LEN(1) RSTD(*YES) MIN(0) ALWUNPRT(*NO) VALUES(Y N) DFT(N) + 
0056.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT('Recurring (Y/N)?') PMTCTL(TIMEVAL) 
0057.00 
0058.00 RECURVAL: PMTCTL CTL(RECUR) COND((*EQ Y)) 
0059.00 
0060.00 MON: PARM KWD(MON) TYPE(*CHAR) LEN(1) RSTD(*YES) MIN(0) ALWUNPRT(*NO) VALUES(Y N) DFT(N) + 
0061.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT('MONDAY Run (Y/N)?') PMTCTL(RECURVAL) 
0062.00 
0063.00 TUE: PARM KWD(TUE) TYPE(*CHAR) LEN(1) RSTD(*YES) MIN(0) ALWUNPRT(*NO) VALUES(Y N) DFT(N) + 
0064.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT('TUESDAY Run (Y/N)?') PMTCTL(RECURVAL) 
0065.00 
0066.00 WED: PARM KWD(WED) TYPE(*CHAR) LEN(1) RSTD(*YES) MIN(0) ALWUNPRT(*NO) VALUES(Y N) DFT(N) + 
0067.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT('WEDNESDAY Run (Y/N)?') PMTCTL(RECURVAL) 
0068.00 
0069.00 THU: PARM KWD(THU) TYPE(*CHAR) LEN(1) RSTD(*YES) MIN(0) ALWUNPRT(*NO) VALUES(Y N) DFT(N) + 
0070.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT('THURSDAY Run (Y/N)?') PMTCTL(RECURVAL) 
0071.00 
0072.00 FRI: PARM KWD(FRI) TYPE(*CHAR) LEN(1) RSTD(*YES) MIN(0) ALWUNPRT(*NO) VALUES(Y N) DFT(N) + 
0073.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT('FRIDAY Run (Y/N)?') PMTCTL(RECURVAL) 
0074.00 
0075.00 SAT: PARM KWD(SAT) TYPE(*CHAR) LEN(1) RSTD(*YES) MIN(0) ALWUNPRT(*NO) VALUES(Y N) DFT(N) + 
0076.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT('SATURDAY Run (Y/N)?') PMTCTL(RECURVAL) 
0077.00 
0078.00 SUN: PARM KWD(SUN) TYPE(*CHAR) LEN(1) RSTD(*YES) MIN(0) ALWUNPRT(*NO) VALUES(Y N) DFT(N) + 
0079.00 ALWVAR(*YES) DSPINPUT(*YES) PROMPT('SUNDAY Run (Y/N)?') PMTCTL(RECURVAL) 
0080.00 
****************** End of data ****************************************************************************************** 

AUTOFTPSCH (CL)
*************** Beginning of data ***************************************************************************************
0001.00 PGM PARM(&INPUTF &INPUTLIB &INPUTMBR &RMTSYS &USERNAME &PASSWORD &DOMAIN &BATCH &JOBNAME + 
0002.00 &JOBD &JOBDLIB &JOBQ &JOBQLIB &LOG &DATE &TIME &RECUR &MON &TUE &WED &THU &FRI &SAT &SUN) 
0003.00 
0004.00 DCL VAR(&INPUTF) TYPE(*CHAR) LEN(10) 
0005.00 DCL VAR(&INPUTLIB) TYPE(*CHAR) LEN(10) 
0006.00 DCL VAR(&INPUTMBR) TYPE(*CHAR) LEN(10) 
0007.00 DCL VAR(&RMTSYS) TYPE(*CHAR) LEN(15) 
0008.00 DCL VAR(&USERNAME) TYPE(*CHAR) LEN(15) 
0009.00 DCL VAR(&PASSWORD) TYPE(*CHAR) LEN(15) 
0010.00 DCL VAR(&DOMAIN) TYPE(*CHAR) LEN(15) 
0011.00 DCL VAR(&BATCH) TYPE(*CHAR) LEN(1) 
0012.00 DCL VAR(&JOBNAME) TYPE(*CHAR) LEN(10) 
0013.00 DCL VAR(&JOBD) TYPE(*CHAR) LEN(10) 
0014.00 DCL VAR(&JOBDLIB) TYPE(*CHAR) LEN(10) 
0015.00 DCL VAR(&JOBQ) TYPE(*CHAR) LEN(10) 
0016.00 DCL VAR(&JOBQLIB) TYPE(*CHAR) LEN(10) 
0017.00 DCL VAR(&LOG) TYPE(*CHAR) LEN(1) 
0018.00 DCL VAR(&DATE) TYPE(*CHAR) LEN(7) 
0019.00 DCL VAR(&TIME) TYPE(*CHAR) LEN(6) 
0020.00 DCL VAR(&RECUR) TYPE(*CHAR) LEN(1) 
0021.00 DCL VAR(&MON) TYPE(*CHAR) LEN(1) 
0022.00 DCL VAR(&TUE) TYPE(*CHAR) LEN(1) 
0023.00 DCL VAR(&WED) TYPE(*CHAR) LEN(1) 
0024.00 DCL VAR(&THU) TYPE(*CHAR) LEN(1) 
0025.00 DCL VAR(&FRI) TYPE(*CHAR) LEN(1) 
0026.00 DCL VAR(&SAT) TYPE(*CHAR) LEN(1) 
0027.00 DCL VAR(&SUN) TYPE(*CHAR) LEN(1) 
0028.00 
0029.00 DCL VAR(&LOGUSED) TYPE(*CHAR) LEN(11) 
0030.00 DCL VAR(&LOGCLPGM) TYPE(*CHAR) LEN(5) 
0031.00 DCL VAR(&TODAY) TYPE(*CHAR) LEN(4) 
0032.00 DCL VAR(&DATENOW) TYPE(*CHAR) LEN(6) 
0033.00 DCL VAR(&TIMENOW) TYPE(*CHAR) LEN(6) 
0034.00 DCL VAR(&RUNYET) TYPE(*CHAR) LEN(1) VALUE(N) 
0035.00 DCL VAR(&C) TYPE(*CHAR) LEN(1) VALUE('''') 
0036.00 DCL VAR(&SQL) TYPE(*CHAR) LEN(100) 
0037.00 
0038.00 MONMSG MSGID(CPF0000) 
0039.00 
0040.00 OVRDBF FILE(&INPUTF) TOFILE(&INPUTLIB/&INPUTF) MBR(&INPUTMBR) 
0041.00 
0042.00 IF COND(&LOG *EQ 'Y') THEN(DO) 
0043.00 CHGVAR VAR(&LOGUSED) VALUE(*SECLVL) 
0044.00 CHGVAR VAR(&LOGCLPGM) VALUE(*YES) 
0045.00 ENDDO 
0046.00 
0047.00 IF COND(&LOG *EQ 'N') THEN(DO) 
0048.00 CHGVAR VAR(&LOGUSED) VALUE(*NOLIST) 
0049.00 CHGVAR VAR(&LOGCLPGM) VALUE(*NO) 
0050.00 ENDDO 
0051.00 
0052.00 CHGVAR VAR(&DATE) VALUE(%SST(&DATE 6 2) *TCAT %SST(&DATE 4 2) *TCAT %SST(&DATE 2 2)) 
0053.00 CHGVAR VAR(&TIME) VALUE(%SST(&TIME 1 4)) 
0054.00 
0055.00 CHKDTTIM: 
0056.00 
0057.00 RTVSYSVAL SYSVAL(QDAYOFWEEK) RTNVAR(&TODAY) 
0058.00 RTVSYSVAL SYSVAL(QDATE) RTNVAR(&DATENOW) 
0059.00 RTVSYSVAL SYSVAL(QTIME) RTNVAR(&TIMENOW) 
0060.00 
0061.00 CHGVAR VAR(&TIMENOW) VALUE(%SST(&TIMENOW 1 4)) 
0062.00 
0063.00 IF COND(&DATE *EQ '000000' *AND &TIME *EQ '0000' ) THEN(GOTO CMDLBL(SUBMIT)) 
0064.00 IF COND(&DATE *EQ '000000' *AND &TIME *EQ &TIMENOW) THEN(GOTO CMDLBL(SUBMIT)) 
0065.00 IF COND(&DATE *EQ &DATENOW *AND &TIME *EQ '0000' ) THEN(GOTO CMDLBL(SUBMIT)) 
0066.00 IF COND(&DATE *EQ &DATENOW *AND &TIME *EQ &TIMENOW) THEN(GOTO CMDLBL(SUBMIT)) 
0067.00 
0068.00 IF COND(&RUNYET *EQ 'Y' *AND &RECUR *EQ 'Y') THEN(DO) 
0069.00 IF COND(&TODAY *EQ '*MON' *AND &MON *EQ 'Y' *AND &TIME *EQ &TIMENOW) THEN(GOTO CMDLBL(SUBMIT)) 
0070.00 IF COND(&TODAY *EQ '*TUE' *AND &TUE *EQ 'Y' *AND &TIME *EQ &TIMENOW) THEN(GOTO CMDLBL(SUBMIT)) 
0071.00 IF COND(&TODAY *EQ '*WED' *AND &WED *EQ 'Y' *AND &TIME *EQ &TIMENOW) THEN(GOTO CMDLBL(SUBMIT)) 
0072.00 IF COND(&TODAY *EQ '*THU' *AND &THU *EQ 'Y' *AND &TIME *EQ &TIMENOW) THEN(GOTO CMDLBL(SUBMIT)) 
0073.00 IF COND(&TODAY *EQ '*FRI' *AND &FRI *EQ 'Y' *AND &TIME *EQ &TIMENOW) THEN(GOTO CMDLBL(SUBMIT)) 
0074.00 IF COND(&TODAY *EQ '*SAT' *AND &SAT *EQ 'Y' *AND &TIME *EQ &TIMENOW) THEN(GOTO CMDLBL(SUBMIT)) 
0075.00 IF COND(&TODAY *EQ '*SUN' *AND &SUN *EQ 'Y' *AND &TIME *EQ &TIMENOW) THEN(GOTO CMDLBL(SUBMIT)) 
0076.00 ENDDO 
0077.00 
0078.00 DLYJOB DLY(60) 
0079.00 GOTO CMDLBL(CHKDTTIM) 
0080.00 
0081.00 SUBMIT: 
0082.00 
0083.00 OVRDBF FILE(&INPUTF) TOFILE(&INPUTLIB/&INPUTF) MBR(&INPUTMBR) 
0084.00 
0085.00 /**********************************************/ 
0086.00 /* BUILD & RUN SQL STATEMENT - SET PASSWORD */ 
0087.00 
0088.00 IF COND(&DOMAIN *NE ' ') + 
0089.00 THEN(CHGVAR VAR(&SQL) VALUE('UPDATE ' *CAT &INPUTLIB *TCAT '/' *TCAT &INPUTF *TCAT ' SET SRCDTA = ' + 
0090.00 *CAT &C *TCAT &DOMAIN *TCAT '' *TCAT &USERNAME *TCAT ' ' *CAT &PASSWORD *TCAT &C *TCAT ' WHERE SRCSEQ = 1')) 
0091.00 ELSE CHGVAR VAR(&SQL) VALUE('UPDATE ' *CAT &INPUTLIB *TCAT '/' *TCAT &INPUTF *TCAT ' SET SRCDTA = ' + 
0092.00 *CAT &C *TCAT &USERNAME *TCAT ' ' *CAT &PASSWORD *TCAT &C *TCAT ' WHERE SRCSEQ = 1') 
0093.00 
0094.00 RUNSQL REQUEST(&SQL) 
0095.00 /**********************************************/ 
0096.00 
0097.00 IF COND(&JOBD *EQ ' ' *AND &JOBQ *EQ ' ') THEN(+ 
0098.00 SBMJOB CMD(*LIBL/AUTOFTPBCH INPUTF(&INPUTF) INPUTLIB(&INPUTLIB) INPUTMBR(&INPUTMBR) RMTSYS(&RMTSYS)) + 
0099.00 JOB(&JOBNAME) LOG(4 00 &LOGUSED) LOGCLPGM(&LOGCLPGM)) 
0100.00 
0101.00 IF COND(&JOBD *EQ ' ' *AND &JOBQ *NE ' ') THEN(+ 
0102.00 SBMJOB CMD(*LIBL/AUTOFTPBCH INPUTF(&INPUTF) INPUTLIB(&INPUTLIB) INPUTMBR(&INPUTMBR) RMTSYS(&RMTSYS)) + 
0103.00 JOB(&JOBNAME) JOBQ(&JOBQLIB/&JOBQ) LOG(4 00 &LOGUSED) LOGCLPGM(&LOGCLPGM)) 
0104.00 
0105.00 IF COND(&JOBD *NE ' ' *AND &JOBQ *EQ ' ') THEN(+ 
0106.00 SBMJOB CMD(*LIBL/AUTOFTPBCH INPUTF(&INPUTF) INPUTLIB(&INPUTLIB) INPUTMBR(&INPUTMBR) RMTSYS(&RMTSYS)) + 
0107.00 JOB(&JOBNAME) JOBD(&JOBDLIB/&JOBD) LOG(4 00 &LOGUSED) LOGCLPGM(&LOGCLPGM)) 
0108.00 
0109.00 IF COND(&RECUR *EQ 'N') THEN(GOTO CMDLBL(EXIT)) 
0110.00 
0111.00 CHGVAR VAR(&RUNYET) VALUE(Y) 
0112.00 DLYJOB DLY(60) 
0113.00 GOTO CMDLBL(CHKDTTIM) 
0114.00 
0115.00 EXIT: 
0116.00 
0117.00 ENDPGM 
****************** End of data ****************************************************************************************** 

AUTOFTPBCH (CMD)
*************** Beginning of data ***************************************************************************************
0001.00 CMD PROMPT('AS/400 Batch FTP - Needs PARM') 
0002.00 
0003.00 INPUTF: PARM KWD(INPUTF) TYPE(*CHAR) LEN(10) MIN(1) ALWUNPRT(*NO) ALWVAR(*YES) CHOICE('10 Chars') + 
0004.00 PROMPT('Input Script File') 
0005.00 
0006.00 INPUTLIB: PARM KWD(INPUTLIB) TYPE(*CHAR) LEN(10) MIN(1) ALWUNPRT(*NO) ALWVAR(*YES) CHOICE('10 Chars') + 
0007.00 PROMPT(' Library') 
0008.00 
0009.00 INPUTMBR: PARM KWD(INPUTMBR) TYPE(*CHAR) LEN(10) MIN(1) ALWUNPRT(*NO) ALWVAR(*YES) CHOICE('10 Chars') + 
0010.00 PROMPT(' Member') 
0011.00 
0012.00 RMTSYS: PARM KWD(RMTSYS) TYPE(*CHAR) LEN(15) MIN(1) ALWUNPRT(*NO) ALWVAR(*YES) + 
0013.00 CHOICE('AS/400 Max 10)') PROMPT('Remote System Name') 
0014.00 
****************** End of data ******************************************************************************************

AUTOFTPBCH (CL)
*************** Beginning of data ***************************************************************************************
0001.00 PGM PARM(&INPUTF &INPUTLIB &INPUTMBR &RMTSYS) 
0002.00 
0003.00 DCL VAR(&INPUTF) TYPE(*CHAR) LEN(10) 
0004.00 DCL VAR(&INPUTLIB) TYPE(*CHAR) LEN(10) 
0005.00 DCL VAR(&INPUTMBR) TYPE(*CHAR) LEN(10) 
0006.00 DCL VAR(&RMTSYS) TYPE(*CHAR) LEN(15) 
0007.00 DCL VAR(&BLANK) TYPE(*CHAR) LEN(40) 
0008.00 DCL VAR(&C) TYPE(*CHAR) LEN(1) VALUE('''') 
0009.00 DCL VAR(&SQL) TYPE(*CHAR) LEN(100) 
0010.00 
0011.00 MONMSG MSGID(CPF0000) 
0012.00 
0013.00 OVRDBF FILE(&INPUTF) TOFILE(&INPUTLIB/&INPUTF) MBR(&INPUTMBR) 
0014.00 
0015.00 OVRDBF FILE(INPUT) TOFILE(&INPUTLIB/&INPUTF) MBR(&INPUTMBR) 
0016.00 
0017.00 FTP RMTSYS(&RMTSYS) 
0018.00 OVRDBF FILE(INPUT) 
0019.00 
0020.00 /**********************************************/ 
0021.00 /* BUILD & RUN SQL STATEMENT - CLEAR PASSWORD */ 
0022.00 
0023.00 CHGVAR VAR(&SQL) VALUE('UPDATE ' *CAT &INPUTLIB *TCAT '/' *TCAT &INPUTF *TCAT ' SET SRCDTA = ' + 
0024.00 *CAT &C *TCAT &BLANK *TCAT &C *TCAT ' WHERE SRCSEQ = 1') 
0025.00 
0026.00 RUNSQL REQUEST(&SQL) 
0027.00 /**********************************************/ 
0028.00 
0029.00 ENDPGM 
****************** End of data ******************************************************************************************


In order to use the AUTOFTP command...the following code for RUNSQL must be compiled.

RUNSQL (CMD)
*************** Beginning of data ***************************************************************************************
0001.00 /*********************************************************************/ 
0002.00 /* Command definition for RUNSQL command */ 
0003.00 /* Command processing program is ZUCXSQL. */ 
0004.00 /* From "Power Tools for the AS/400, Volume II," Duke Press. */ 
0005.00 /* Copyright (c) 1995 Duke Press, All rights reserved. */ 
0006.00 /* Author : Dan Riehl */ 
0007.00 /*********************************************************************/ 
0008.00 CMD PROMPT('Process SQL commands') 
0009.00 PARM KWD(REQUEST) TYPE(*CHAR) LEN(550) MIN(1) + 
0010.00 PROMPT('SQL request') 
0011.00 PARM KWD(OUTPUT) TYPE(*CHAR) LEN(10) RSTD(*YES) + 
0012.00 DFT(*) VALUES(* *PRINT *OUTFILE) MIN(0) + 
0013.00 PROMPT('Output') 
0014.00 PARM KWD(OUTFILE) TYPE(T1) MIN(0) PMTCTL(P1) + 
0015.00 PROMPT('File to receive output') 
0016.00 PARM KWD(MEMBER) TYPE(T2) MIN(0) PMTCTL(P1) + 
0017.00 PROMPT('Output member options') 
0018.00 PARM KWD(PRTFILE) TYPE(T3) MIN(0) PMTCTL(P2) + 
0019.00 PROMPT('Printer file to use') 
0020.00 T1: QUAL TYPE(*NAME) LEN(10) 
0021.00 QUAL TYPE(*NAME) LEN(10) DFT(*LIBL) + 
0022.00 SPCVAL((*LIBL) (*CURLIB)) PROMPT('Library') 
0023.00 T2: QUAL TYPE(*NAME) LEN(10) DFT(*FIRST) + 
0024.00 SPCVAL((*FIRST)) 
0025.00 QUAL TYPE(*NAME) LEN(10) RSTD(*YES) DFT(*REPLACE) + 
0026.00 SPCVAL((*REPLACE) (*ADD)) PROMPT('Replace + 
0027.00 or add records') 
0028.00 T3: QUAL TYPE(*NAME) LEN(10) DFT(QPQXPRTF) 
0029.00 QUAL TYPE(*NAME) LEN(10) DFT(*LIBL) + 
0030.00 SPCVAL((*LIBL) (*CURLIB)) PROMPT('Library') 
0031.00 P1: PMTCTL CTL(OUTPUT) COND((*EQ *OUTFILE)) 
0032.00 P2: PMTCTL CTL(OUTPUT) COND((*EQ *PRINT)) 
****************** End of data ******************************************************************************************

ZUCXSQL (CL in support of RUNSQL)
*************** Beginning of data ***************************************************************************************
0001.00 /*********************************************************************/ 
0002.00 /* Program: ZUCXSQL */ 
0003.00 /* From "Power Tools for the AS/400, Volume II," Duke Press. */ 
0004.00 /* Copyright (c) 1995 Duke Press, All rights reserved. */ 
0005.00 /* Author : Dan Riehl */ 
0006.00 /* This is the command processing program for command RUNSQL. */ 
0007.00 /*********************************************************************/ 
0008.00 SQL: PGM PARM(&LINES &TYPE &OUTFILE &OUTMBR &PRTFILE) 
0009.00 
0010.00 DCL VAR(&TYPE) TYPE(*CHAR) LEN(10) 
0011.00 DCL VAR(&LINES) TYPE(*CHAR) LEN(550) 
0012.00 DCL VAR(&LINE01) TYPE(*CHAR) LEN(55) 
0013.00 DCL VAR(&LINE02) TYPE(*CHAR) LEN(55) 
0014.00 DCL VAR(&LINE03) TYPE(*CHAR) LEN(55) 
0015.00 DCL VAR(&LINE04) TYPE(*CHAR) LEN(55) 
0016.00 DCL VAR(&LINE05) TYPE(*CHAR) LEN(55) 
0017.00 DCL VAR(&LINE06) TYPE(*CHAR) LEN(55) 
0018.00 DCL VAR(&LINE07) TYPE(*CHAR) LEN(55) 
0019.00 DCL VAR(&LINE08) TYPE(*CHAR) LEN(55) 
0020.00 DCL VAR(&LINE09) TYPE(*CHAR) LEN(55) 
0021.00 DCL VAR(&LINE10) TYPE(*CHAR) LEN(55) 
0022.00 DCL VAR(&OUTFILE) TYPE(*CHAR) LEN(20) 
0023.00 DCL VAR(&OFIL) TYPE(*CHAR) LEN(10) 
0024.00 DCL VAR(&OLIB) TYPE(*CHAR) LEN(10) 
0025.00 DCL VAR(&OUTMBR) TYPE(*CHAR) LEN(20) 
0026.00 DCL VAR(&OMBR) TYPE(*CHAR) LEN(10) 
0027.00 DCL VAR(&ORPL) TYPE(*CHAR) LEN(10) 
0028.00 DCL VAR(&PRTFILE) TYPE(*CHAR) LEN(20) 
0029.00 DCL VAR(&PFIL) TYPE(*CHAR) LEN(10) 
0030.00 DCL VAR(&PLIB) TYPE(*CHAR) LEN(10) 
0031.00 
0032.00 /* TRAILING BLANK TRIMMING FIELDS */ 
0033.00 
0034.00 DCL VAR(&LINEX) TYPE(*CHAR) LEN(550) 
0035.00 DCL VAR(&IS) TYPE(*DEC) LEN(3 0) VALUE(0) /* + 
0036.00 Index for field &LINES */ 
0037.00 DCL VAR(&IX) TYPE(*DEC) LEN(3 0) VALUE(0) /* + 
0038.00 Index for field &LINEX */ 
0039.00 DCL VAR(&H1) TYPE(*DEC) LEN(3 0) /* Work field */ 
0040.00 DCL VAR(&H2) TYPE(*DEC) LEN(3 0) /* Work field */ 
0041.00 DCL VAR(&H3) TYPE(*DEC) LEN(3 0) /* Work field */ 
0042.00 
0043.00 /* STANDARD ERROR HANDLER FIELDS */ 
0044.00 
0045.00 DCL VAR(&MSGID) TYPE(*CHAR) LEN(7) 
0046.00 DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(100) 
0047.00 DCL VAR(&MSGF) TYPE(*CHAR) LEN(10) 
0048.00 DCL VAR(&MSGFLIB) TYPE(*CHAR) LEN(10) 
0049.00 DCL VAR(&ERRORSW) TYPE(*LGL) 
0050.00 MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR)) 
0051.00 
0052.00 /* PARSE &LINES FOR BLANKS ON 55-BYTE BOUNDARIES */ 
0053.00 
0054.00 CHECK: IF COND(&IS < 550 *AND &IX < 550) THEN(DO) /* + 
0055.00 At end of string? */ 
0056.00 CHGVAR VAR(&IX) VALUE(&IX + 1) /* Increment index */ 
0057.00 CHGVAR VAR(&IS) VALUE(&IS + 1) /* Increment index */ 
0058.00 CHGVAR VAR(%SST(&LINEX &IX 1)) VALUE(%SST(&LINES + 
0059.00 &IS 1)) /* Move a byte... */ 
0060.00 CHGVAR VAR(&H1) VALUE(&IX / 55) /* Multiple of 55 */ 
0061.00 CHGVAR VAR(&H2) VALUE(&H1 * 55) /* Extend multiple */ 
0062.00 CHGVAR VAR(&H3) VALUE(&IX - &H2) /* Zero if 55 byte + 
0063.00 boundary */ 
0064.00 IF COND(&H3 = 0) THEN(DO) /* 55 byte boundary */ 
0065.00 IF COND(%SST(&LINEX &IX 1) = ' ') THEN(DO) /* + 
0066.00 55 byte boundary is a blank */ 
0067.00 CHGVAR VAR(&IX) VALUE(&IX + 1) /* Add extra blank */ 
0068.00 ENDDO 
0069.00 ENDDO 
0070.00 GOTO CMDLBL(CHECK) /* Loop back... */ 
0071.00 ENDDO 
0072.00 
0073.00 /* DIVIDE &LINEX INTO 55-BYTE SUBSTITUTION VARIABLES */ 
0074.00 
0075.00 CHGVAR VAR(&LINE01) VALUE(%SST(&LINEX 1 55)) 
0076.00 CHGVAR VAR(&LINE02) VALUE(%SST(&LINEX 56 55)) 
0077.00 CHGVAR VAR(&LINE03) VALUE(%SST(&LINEX 111 55)) 
0078.00 CHGVAR VAR(&LINE04) VALUE(%SST(&LINEX 166 55)) 
0079.00 CHGVAR VAR(&LINE05) VALUE(%SST(&LINEX 221 55)) 
0080.00 CHGVAR VAR(&LINE06) VALUE(%SST(&LINEX 276 55)) 
0081.00 CHGVAR VAR(&LINE07) VALUE(%SST(&LINEX 331 55)) 
0082.00 CHGVAR VAR(&LINE08) VALUE(%SST(&LINEX 386 55)) 
0083.00 CHGVAR VAR(&LINE09) VALUE(%SST(&LINEX 441 55)) 
0084.00 CHGVAR VAR(&LINE10) VALUE(%SST(&LINEX 496 55)) 
0085.00 
0086.00 CHGVAR VAR(&OFIL) VALUE(%SST(&OUTFILE 1 10)) 
0087.00 CHGVAR VAR(&OLIB) VALUE(%SST(&OUTFILE 11 10)) 
0088.00 CHGVAR VAR(&OMBR) VALUE(%SST(&OUTMBR 1 10)) 
0089.00 CHGVAR VAR(&ORPL) VALUE(%SST(&OUTMBR 11 10)) 
0090.00 
0091.00 CHGVAR VAR(&PFIL) VALUE(%SST(&PRTFILE 1 10)) 
0092.00 CHGVAR VAR(&PLIB) VALUE(%SST(&PRTFILE 11 10)) 
0093.00 
0094.00 IF (&TYPE = '*OUTFILE') + 
0095.00 THEN(DO) 
0096.00 STRQMQRY QMQRY(ZUQXSQL) OUTPUT(&TYPE) + 
0097.00 OUTFILE(&OLIB/&OFIL) OUTMBR(&OMBR + 
0098.00 &ORPL) ALWQRYDFN(*YES) SETVAR((LINE01 + 
0099.00 &LINE01) (LINE02 &LINE02) (LINE03 + 
0100.00 &LINE03) (LINE04 &LINE04) (LINE05 + 
0101.00 &LINE05) (LINE06 &LINE06) (LINE07 + 
0102.00 &LINE07) (LINE08 &LINE08) (LINE09 + 
0103.00 &LINE09) (LINE10 &LINE10)) 
0104.00 MONMSG MSGID(QWM0000) EXEC(DO) 
0105.00 SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('+ 
0106.00 Syntax error in SQL statement. See previous + 
0107.00 messages for details') MSGTYPE(*DIAG) 
0108.00 ENDDO 
0109.00 ENDDO 
0110.00 ELSE (DO) 
0111.00 OVRPRTF FILE(QPQXPRTF) TOFILE(&PLIB/&PFIL) 
0112.00 STRQMQRY QMQRY(ZUQXSQL) OUTPUT(&TYPE) + 
0113.00 ALWQRYDFN(*YES) SETVAR((LINE01 + 
0114.00 &LINE01) (LINE02 &LINE02) (LINE03 + 
0115.00 &LINE03) (LINE04 &LINE04) (LINE05 + 
0116.00 &LINE05) (LINE06 &LINE06) (LINE07 + 
0117.00 &LINE07) (LINE08 &LINE08) (LINE09 + 
0118.00 &LINE09) (LINE10 &LINE10)) 
0119.00 MONMSG MSGID(QWM0000) EXEC(DO) 
0120.00 SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('+ 
0121.00 Syntax error in SQL statement. See previous + 
0122.00 messages for details') MSGTYPE(*DIAG) 
0123.00 ENDDO 
0124.00 DLTOVR FILE(QPQXPRTF) 
0125.00 ENDDO 
0126.00 
0127.00 RETURN /* Normal end of program */ 
0128.00 
0129.00 ERROR: /* STANDARD ERROR HANDLER */ 
0130.00 IF COND(&ERRORSW) THEN(SNDPGMMSG MSGID(CPF9999) + 
0131.00 MSGF(QCPFMSG) MSGTYPE(*ESCAPE)) /* Function + 
0132.00 check message */ 
0133.00 CHGVAR VAR(&ERRORSW) VALUE('1') 
0134.00 ERROR2: RCVMSG MSGTYPE(*DIAG) MSGDTA(&MSGDTA) MSGID(&MSGID) + 
0135.00 MSGF(&MSGF) MSGFLIB(&MSGFLIB) 
0136.00 IF COND(&MSGID = ' ') THEN(GOTO + 
0137.00 CMDLBL(ERROR3)) 
0138.00 SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) + 
0139.00 MSGDTA(&MSGDTA) MSGTYPE(*DIAG) 
0140.00 GOTO CMDLBL(ERROR2) 
0141.00 ERROR3: RCVMSG MSGTYPE(*EXCP) MSGDTA(&MSGDTA) MSGID(&MSGID) + 
0142.00 MSGF(&MSGF) MSGFLIB(&MSGFLIB) 
0143.00 SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) + 
0144.00 MSGDTA(&MSGDTA) MSGTYPE(*ESCAPE) 
0145.00 ENDPGM 
****************** End of data ******************************************************************************************

ZUQXSQL (QMQRY in support of RUNSQL)
*************** Beginning of data *******************************************
0001.00 &LINE01&LINE02&LINE03&LINE04&LINE05&LINE06&LINE07&LINE08&LINE09&LINE10 
****************** End of data ********************************************* 

There are Comments. Add yours.

 
TIP: Want to include a code block in your comment? Use <pre> or <code> tags around the desired text. Ex: <code>insert code</code>

REGISTER or login:

Forgot Password?
By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy
Sort by: OldestNewest

Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to: