Skip to content

Commit 529d0e0

Browse files
Update DB2UTILC.CLLE
1 parent 69f16c6 commit 529d0e0

File tree

1 file changed

+121
-67
lines changed

1 file changed

+121
-67
lines changed

DB2UTILC.CLLE

Lines changed: 121 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,121 @@
1-
CMD PROMPT('Run Bash Command via Qshell')
2-
PARM KWD(CMDLINE) TYPE(*CHAR) LEN(5000) MIN(1) +
3-
EXPR(*YES) CASE(*MIXED) PROMPT('Bash +
4-
command line')
5-
PARM KWD(CMDLINEDLM) TYPE(*CHAR) LEN(1) +
6-
DFT(*SGLQUOTE) SPCVAL((*DBLQUOTE '"') +
7-
(*SGLQUOTE '''') (*NONE '')) PROMPT('Bash +
8-
command line delimiter')
9-
PARM KWD(DEBUGCMD) TYPE(*CHAR) LEN(4) RSTD(*YES) +
10-
DFT(*NO) VALUES(*NO *YES) EXPR(*YES) +
11-
CASE(*MIXED) PROMPT('Debug bash command +
12-
line')
13-
PARM KWD(SETPKGPATH) TYPE(*CHAR) LEN(4) +
14-
RSTD(*YES) DFT(*YES) VALUES(*NO *YES) +
15-
EXPR(*YES) CASE(*MIXED) PROMPT('Set +
16-
QOpenSys yum package path')
17-
PARM KWD(DSPSTDOUT) TYPE(*CHAR) LEN(4) RSTD(*YES) +
18-
DFT(*NO) VALUES(*NO *YES) PROMPT('Display +
19-
Standard Output Result')
20-
PARM KWD(LOGSTDOUT) TYPE(*CHAR) LEN(4) RSTD(*YES) +
21-
DFT(*NO) VALUES(*NO *YES) PROMPT('Log +
22-
standard output to job log')
23-
PARM KWD(PRTSTDOUT) TYPE(*CHAR) LEN(4) RSTD(*YES) +
24-
DFT(*NO) VALUES(*NO *YES) PROMPT('Print +
25-
Standard Output Result')
26-
PARM KWD(DLTSTDOUT) TYPE(*CHAR) LEN(4) RSTD(*YES) +
27-
DFT(*YES) VALUES(*NO *YES) PROMPT('Delete +
28-
Standard Output Result')
29-
PARM KWD(IFSSTDOUT) TYPE(*CHAR) LEN(4) RSTD(*YES) +
30-
DFT(*NO) VALUES(*NO *YES) PROMPT('Copy +
31-
std output to IFS file')
32-
PARM KWD(IFSFILE) TYPE(*CHAR) LEN(255) +
33-
PROMPT('IFS file for stdout results')
34-
PARM KWD(IFSOPT) TYPE(*CHAR) LEN(10) RSTD(*YES) +
35-
DFT(*REPLACE) VALUES(*ADD *REPLACE *NONE) +
36-
PROMPT('IFS file option')
37-
PARM KWD(CCSID) TYPE(*CHAR) LEN(10) DFT(*SAME) +
38-
SPCVAL((*SAME *SAME)) PROMPT('Coded +
39-
character set ID for job')
40-
PARM KWD(PRTSPLF) TYPE(*CHAR) LEN(10) DFT(QSHBASHLOG) PROMPT('Print stdout spool +
41-
file')
42-
PARM KWD(PRTUSRDTA) TYPE(*CHAR) LEN(10) DFT(*NONE) SPCVAL((*NONE ' ')) +
43-
PROMPT('Print stdout user data')
44-
PARM KWD(PRTTXT) TYPE(*CHAR) LEN(30) DFT(*NONE) SPCVAL((*NONE ' ')) CASE(*MIXED) +
45-
PROMPT('Print stdout print text')
46-
PARM KWD(PRTHOLD) TYPE(*CHAR) LEN(4) RSTD(*YES) +
47-
DFT(*YES) VALUES(*NO *YES) SPCVAL((*NONE +
48-
' ')) CASE(*MIXED) PROMPT('Print stdout +
49-
hold spool file')
50-
PARM KWD(PRTOUTQ) TYPE(QUAL2) MIN(1) +
51-
PROMPT('Print stdout to outq')
52-
PARM KWD(OUTFILE) TYPE(QUAL3) MIN(1) PROMPT('File +
53-
to receive output')
54-
PARM KWD(MBROPT) TYPE(*CHAR) LEN(10) RSTD(*YES) +
55-
DFT(*REPLACE) VALUES(*ADD *REPLACE) +
56-
PROMPT('Replace or add records')
57-
PARM KWD(PASEJOBNAM) TYPE(*CHAR) LEN(10) +
58-
DFT(*DEFAULT) CASE(*MIXED) PROMPT('PASE +
59-
fork thread job names')
60-
QUAL2: QUAL TYPE(*NAME) LEN(10) DFT(*SAME) +
61-
SPCVAL((*SAME)) EXPR(*YES)
62-
QUAL TYPE(*NAME) LEN(10) DFT(*LIBL) +
63-
SPCVAL((*LIBL)) EXPR(*YES) PROMPT('Library')
64-
QUAL3: QUAL TYPE(*NAME) LEN(10) DFT(STDOUTQSH) +
65-
SPCVAL((*SAME)) EXPR(*YES)
66-
QUAL TYPE(*NAME) LEN(10) DFT(QTEMP) +
67-
SPCVAL((*LIBL)) EXPR(*YES) PROMPT('Library')
1+
PGM PARM(&SQL &OUTPUTFMT &JSONFMT &OUTPUTFILE &OPTION +
2+
&SETPKGPATH &DSPSTDOUT &LOGSTDOUT +
3+
&PRTSTDOUT &DLTSTDOUT &IFSSTDOUT &IFSFILE +
4+
&IFSOPT &CCSID &PRTSPLF &PRTUSRDTA +
5+
&PRTTXT &PRTHOLD &PRTOUTQALL &PASEJOBNAM +
6+
&VIEWOUTPUT)
7+
8+
/*----------------------------------------------------------------------------*/
9+
/* Variables */
10+
/*----------------------------------------------------------------------------*/
11+
DCL VAR(&VIEWOUTPUT) TYPE(*CHAR) LEN(4)
12+
DCL VAR(&SQL) TYPE(*CHAR) LEN(1024)
13+
DCL VAR(&OUTPUTFILE) TYPE(*CHAR) LEN(255)
14+
DCL VAR(&OUTPUTFMT) TYPE(*CHAR) LEN(10)
15+
DCL VAR(&JSONFMT) TYPE(*CHAR) LEN(10)
16+
DCL VAR(&JSONEXPORT) TYPE(*CHAR) LEN(100)
17+
DCL VAR(&OPTION) TYPE(*CHAR) LEN(10)
18+
DCL VAR(&PRTHOLD) TYPE(*CHAR) LEN(4)
19+
DCL VAR(&PRTOUTQALL) TYPE(*CHAR) LEN(20)
20+
DCL VAR(&PRTOUTQ) TYPE(*CHAR) LEN(10)
21+
DCL VAR(&PRTOUTQLIB) TYPE(*CHAR) LEN(10)
22+
DCL VAR(&CMDLINE) TYPE(*CHAR) LEN(5000)
23+
DCL VAR(&CURLCMDLIN) TYPE(*CHAR) LEN(5000)
24+
DCL VAR(&SETPKGPATH) TYPE(*CHAR) LEN(4)
25+
DCL VAR(&DSPSTDOUT) TYPE(*CHAR) LEN(4)
26+
DCL VAR(&LOGSTDOUT) TYPE(*CHAR) LEN(4)
27+
DCL VAR(&DLTSTDOUT) TYPE(*CHAR) LEN(4)
28+
DCL VAR(&PRTSTDOUT) TYPE(*CHAR) LEN(4)
29+
DCL VAR(&IFSSTDOUT) TYPE(*CHAR) LEN(4)
30+
DCL VAR(&IFSOPT) TYPE(*CHAR) LEN(10)
31+
DCL VAR(&IFSFILE) TYPE(*CHAR) LEN(255)
32+
DCL VAR(&PRTSPLF) TYPE(*CHAR) LEN(10)
33+
DCL VAR(&PRTUSRDTA) TYPE(*CHAR) LEN(10)
34+
DCL VAR(&PRTTXT) TYPE(*CHAR) LEN(30)
35+
DCL VAR(&QT) TYPE(*CHAR) LEN(1) VALUE('''')
36+
DCL VAR(&CCSID) TYPE(*CHAR) LEN(10)
37+
DCL VAR(&PASEJOBNAM) TYPE(*CHAR) LEN(10)
38+
39+
/*----------------------------------------------------------------------------*/
40+
/* MONITOR FOR GLOBAL ERROR. ANY ERROR IS A CAUSE TO BLOW OUT OF HERE */
41+
/* AND WE WANT A GRACEFUL EXIT. */
42+
/*----------------------------------------------------------------------------*/
43+
MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERRORS))
44+
45+
/*----------------------------------------------------------------------------*/
46+
/* Extract output queue info. */
47+
/*----------------------------------------------------------------------------*/
48+
CHGVAR VAR(&PRTOUTQ) VALUE(%SST(&PRTOUTQALL 1 10))
49+
CHGVAR VAR(&PRTOUTQLIB) VALUE(%SST(&PRTOUTQALL 11 10))
50+
51+
/*----------------------------------------------------------------------------*/
52+
/* MAIN */
53+
/*----------------------------------------------------------------------------*/
54+
/* Output file is required */
55+
IF COND(&OUTPUTFILE *EQ ' ') THEN(DO)
56+
SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Output +
57+
file name must be specified') +
58+
MSGTYPE(*ESCAPE)
59+
ENDDO
60+
61+
/* Check for output file and replace if selected and exists */
62+
QSHONI/QSHIFSCHK FILNAM(&OUTPUTFILE)
63+
/* Not Found. Do nothing special */
64+
MONMSG MSGID(CPF9898) EXEC(DO)
65+
ENDDO
66+
/* Found. Delete if selected */
67+
MONMSG MSGID(CPF9897) EXEC(DO)
68+
/* Delete output file if found and replace */
69+
IF COND(&OPTION *EQ *REPLACE) THEN(DO)
70+
ERASE OBJLNK(&OUTPUTFILE)
71+
ENDDO
72+
ENDDO
73+
74+
75+
/* Build db2util command line to pass to qshell or bash */
76+
/* with JSON formatting export statement */
77+
IF COND(&OUTPUTFMT *EQ 'json') THEN(DO)
78+
CHGVAR VAR(&CURLCMDLIN) VALUE('export +
79+
DB2UTIL_JSON_CONTAINER=' |< &JSONFMT |< +
80+
'; db2util -o' |> &OUTPUTFMT |> '"' |< +
81+
&SQL |< '" >>' |> &OUTPUTFILE)
82+
ENDDO
83+
/* Build db2util command line to pass to qshell or bash */
84+
/* with JSON formatting export statement */
85+
IF COND(&OUTPUTFMT *NE 'json') THEN(DO)
86+
CHGVAR VAR(&CURLCMDLIN) VALUE('db2util -o' |> +
87+
&OUTPUTFMT |> '"' |< &SQL |< '" >>' |> +
88+
&OUTPUTFILE)
89+
ENDDO
90+
91+
/* Run the db2util command via QSHBASH */
92+
QSHONI/QSHBASH CMDLINE(&CURLCMDLIN) +
93+
SETPKGPATH(&SETPKGPATH) +
94+
DSPSTDOUT(&DSPSTDOUT) +
95+
LOGSTDOUT(&LOGSTDOUT) +
96+
PRTSTDOUT(&PRTSTDOUT) +
97+
DLTSTDOUT(&DLTSTDOUT) +
98+
IFSSTDOUT(&IFSSTDOUT) IFSFILE(&IFSFILE) +
99+
IFSOPT(&IFSOPT) CCSID(&CCSID) +
100+
PRTSPLF(&PRTSPLF) PRTUSRDTA(&PRTUSRDTA) +
101+
PRTTXT(&PRTTXT) PRTHOLD(&PRTHOLD) +
102+
PRTOUTQ(&PRTOUTQLIB/&PRTOUTQ) +
103+
MBROPT(*REPLACE) PASEJOBNAM(&PASEJOBNAM)
104+
105+
/* View output file after creation if selected */
106+
IF COND(&VIEWOUTPUT *EQ *YES) THEN(DO)
107+
EDTF STMF(&OUTPUTFILE)
108+
ENDDO
109+
110+
SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('db2util +
111+
command completed to file' |> +
112+
&OUTPUTFILE) MSGTYPE(*COMP)
113+
114+
RETURN
115+
116+
ERRORS:
117+
SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('db2util +
118+
command failed') MSGTYPE(*ESCAPE)
119+
120+
ENDPGM:
121+
ENDPGM

0 commit comments

Comments
 (0)