clprog practise

9
PROGRAMS ON DMPCLPGM COMMAND; SEE OUTPUT IN QPPGMDMP SPOOL FILE PGM DCL VAR(&CHAR10) TYPE(*CHAR) LEN(10) VALUE(HISTORY) DCL VAR(&CHAR24) TYPE(*CHAR) LEN(24) VALUE(MISSIPI) DCL VAR(&DEC50) TYPE(*DEC) LEN(5 0) VALUE(198) DCL VAR(&DEC72) TYPE(*DEC) LEN(7 2) VALUE(3.14) DCL VAR(&LGL1) TYPE(*LGL) VALUE('0') DMPCLPGM CHGVAR VAR(&CHAR10) VALUE('MY LIBRARY') CHGVAR VAR(&CHAR24) VALUE(THISIS24CHARS) DMPCLPGM RETURN ENDPGM GOTO COMMAND PROGRAMS PGM DCL VAR(&COMPANY) TYPE(*CHAR) LEN(4) VALUE(ABCO) IF COND(&COMPANY *EQ ACME) THEN(GOTO CMDLBL(ACME)) IF COND(&COMPANY *EQ ABCO) THEN(GOTO CMDLBL(ABCO)) IF COND(&COMPANY *NE ABCO *AND &COMPANY *NE + ACME) THEN(SNDUSRMSG MSG('UNKOWN COMPANY')) GOTO (ENDOFPGM) ACME: SNDUSRMSG ('COMPANY NAME IS ACME') GOTO ENDOFPGM ABCO: SNDUSRMSG ('COMPANY NAME IS ABCO') GOTO ENDOFPGM ENDOFPGM:RETURN ENDPGM RTVJOBA command USING DO LOOP PROGRAM MESSAGES WILL APPEAR IN JOB LOG

Upload: saiprasad

Post on 14-Dec-2015

220 views

Category:

Documents


5 download

DESCRIPTION

hi

TRANSCRIPT

Page 1: Clprog Practise

PROGRAMS ON DMPCLPGM COMMAND; SEE OUTPUT IN QPPGMDMP SPOOL FILE

PGM

DCL VAR(&CHAR10) TYPE(*CHAR) LEN(10) VALUE(HISTORY) DCL VAR(&CHAR24) TYPE(*CHAR) LEN(24) VALUE(MISSIPI) DCL VAR(&DEC50) TYPE(*DEC) LEN(5 0) VALUE(198) DCL VAR(&DEC72) TYPE(*DEC) LEN(7 2) VALUE(3.14) DCL VAR(&LGL1) TYPE(*LGL) VALUE('0') DMPCLPGM CHGVAR VAR(&CHAR10) VALUE('MY LIBRARY') CHGVAR VAR(&CHAR24) VALUE(THISIS24CHARS) DMPCLPGM RETURN

ENDPGM

GOTO COMMAND PROGRAMS PGM DCL VAR(&COMPANY) TYPE(*CHAR) LEN(4) VALUE(ABCO) IF COND(&COMPANY *EQ ACME) THEN(GOTO CMDLBL(ACME)) IF COND(&COMPANY *EQ ABCO) THEN(GOTO CMDLBL(ABCO)) IF COND(&COMPANY *NE ABCO *AND &COMPANY *NE + ACME) THEN(SNDUSRMSG MSG('UNKOWN COMPANY')) GOTO (ENDOFPGM) ACME: SNDUSRMSG ('COMPANY NAME IS ACME') GOTO ENDOFPGM ABCO: SNDUSRMSG ('COMPANY NAME IS ABCO') GOTO ENDOFPGM ENDOFPGM:RETURN

ENDPGM

RTVJOBA command

USING DO LOOP PROGRAM MESSAGES WILL APPEAR IN JOB LOG

PGM DCL VAR(&COUNTER) TYPE(*DEC) LEN(1) VALUE(0) DCL VAR(&TCOUNT) TYPE(*CHAR) LEN(1) VALUE('0') DCL VAR(&USER) TYPE(*CHAR) LEN(10) RTVJOBA USER(&USER) LOOP: IF (&COUNTER = 3) THEN(GOTO END) ELSE CHGVAR (&COUNTER) (&COUNTER + 1)

Page 2: Clprog Practise

CHGVAR (&TCOUNT) (&COUNTER) SNDMSG MSG('THIS IS LOOP ' *CAT &TCOUNT) + TOUSR(&USER) GOTO (LOOP) END: ENDPGM

PROGRAM TO DISPLAY USERNAME LOGINTIME SYSTEMNAME

PGM DCL VAR(&USER) TYPE(*CHAR) LEN(10) DCL VAR(&JOB) TYPE(*CHAR) LEN(10) DCL VAR(&SYS) TYPE(*CHAR) LEN(8) RTVJOBA JOB(&JOB) USER(&USER) RTVNETA SYSNAME(&SYS) SNDPGMMSG ('HAI' *BCAT &USER *BCAT 'SIGNED ON AT ' *BCAT + &JOB *BCAT 'ON' *BCAT &SYS) END: RETURN ENDPGM

PROGRAM ON STRING FUNCTIONS AND ALSO VARIOUS RETRIEVE COMMANDS

PGM DCL VAR(&TIME) TYPE(*CHAR) LEN(8) DCL VAR(&USER) TYPE(*CHAR) LEN(10) RTVJOBA USER(&USER) RTVSYSVAL SYSVAL(QTIME) RTNVAR(&TIME) CHGVAR VAR(&TIME) VALUE((%SST(&TIME 1 2)) *CAT ':' *CAT + (%SST(&TIME 3 2)) *CAT ':' *CAT + (%SST(&TIME 5 2))) SNDPGMMSG MSG('HI ' *CAT &USER *CAT 'THE TIME IS ' + *CAT &TIME)

END: ENDPGM

PGM DCL VAR(&TIME) TYPE(*CHAR) LEN(8)

Page 3: Clprog Practise

DCL VAR(&USER) TYPE(*CHAR) LEN(10) DCL VAR(&HOURS) TYPE(*DEC) LEN(2) RTVJOBA USER(&USER) RTVSYSVAL SYSVAL(QTIME) RTNVAR(&TIME) CHGVAR (&HOURS) (%SST(&TIME 1 2)) CHGVAR VAR(&TIME) VALUE((%SST(&TIME 1 2)) *CAT ':' *CAT + (%SST(&TIME 3 2)) *CAT ':' *CAT + (%SST(&TIME 5 2))) IF (&HOURS *GE 0 *AND &HOURS *LT 12) + (SNDPGMMSG MSG('HI GOOD MORNING' *CAT &USER *CAT 'THE TIME IS ' + *CAT &TIME)) ELSE IF (&HOURS *GE 12 *AND &HOURS *LT 17) + (SNDPGMMSG MSG('HI GOOD AFTERNOON' *CAT &USER *CAT 'THE TIME IS ' + *CAT &TIME)) ELSE IF (&HOURS *GE 17 *AND &HOURS *LT 20) + (SNDPGMMSG MSG('HI GOOD EVENING' *CAT &USER *CAT 'THE TIME IS ' + *CAT &TIME))

PROGRAM PARAMETRES EXAMPLES

COMMANDLINE PARMS

PGM PARM(&CHAR3) DCL VAR(&CHAR3) TYPE(*CHAR) LEN(3) DCL VAR(&TEXT) TYPE(*CHAR) LEN(11) VALUE('THE + PARMIS') SNDPGMMSG (&TEXT *CAT &CHAR3)

ENDPGM

PGM PARM(&LIB) DCL VAR(&LIB) TYPE(*CHAR) LEN(10) DSPLIB LIB(&LIB) ENDPGM

PGM PARM(&LIB) DCL VAR(&LIB) TYPE(*CHAR) LEN(10) DCL VAR(&JTP) TYPE(*CHAR) LEN(1) RTVJOBA TYPE(&JTP) IF (&JTP = '1') DO SBMJOB CMD(CALL PGM(SA1105HSH) PARM(&LIB)) SNDPGMMSG ('JOBSUBMITTED TO BATCH') RETURN ENDDO DSPLIB LIB(&LIB) ENDPGM

END: ENDPGM

Page 4: Clprog Practise

Mon Mssages :

PGM PARM(&FILE) DCL (&FILE) TYPE(*CHAR) LEN(10) CHKOBJ OBJ(HASHEEM/&FILE) OBJTYPE(*PGM) SNDPGMMSG ('PROGRAM ENDED NORMALLY') RETURN ENDPGM

PGM PARM(&FILE) DCL (&FILE) TYPE(*CHAR) LEN(10) CHKOBJ OBJ(HASHEEM/&FILE) OBJTYPE(*PGM) MONMSG MSGID(CPF9801) EXEC(DO) SNDPGMMSG MSG('CANT FIND + FILE' *BCAT &FILE) RETURN ENDDO SNDPGMMSG ('PROGRAM ENDED NORMALLY') RETURN ENDPGM

PGM PARM(&LIB &FILE) DCL (&FILE) TYPE(*CHAR) LEN(10) DCL (&LIB) TYPE(*CHAR) LEN(10) DCL (&MSG) TYPE(*CHAR) LEN(50) MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR)) DSPFD FILE(&LIB/&FILE) DSPLIB LIB(&LIB) GOTO (ENDIT) ERROR: RCVMSG MSGTYPE(*LAST) MSG(&MSG) SNDPGMMSG (&MSG) ENDIT: RETURN

PGM

MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(END)) SNDPGMMSG MSG('THIS IS MESAGE 1') TOPGMQ(*EXT) + MSGTYPE(*INFO) SNDPGMMSG MSG('THIS IS MESAGE 2') TOPGMQ(*EXT) + MSGTYPE(*INFO) SNDPGMMSG MSG('THIS IS MESAGE 3') TOPGMQ(*EXT) + MSGTYPE(*INFO) SNDPGMMSG MSG('THIS IS MESAGE 4') TOPGMQ(*EXT) + MSGTYPE(*INFO) SNDPGMMSG MSGID(CPF9898) MSGF(QSYS/QCPFMSG) + MSGDTA('job ended') TOPGMQ(*SAME) + MSGTYPE(*ESCAPE)

Page 5: Clprog Practise

CALLING PROGRAM’S and Parameter Passing

PGM DCL &NAME *CHAR 20 + VALUE('JOHN J.SMITH') DCL &ADRESS *CHAR VALUE('123 MAINSTREET APARTMENT 45') DCL &COMENT *CHAR 55 VALUE('LONG TIME CUSTOMER') DCL &CREDLIMIT *DEC (11 2) VALUE(5000) DCL &ACTIVE *LGL VALUE('1') DMPCLPGM CALL PGMB PARM(&NAME &ADRESS &COMENT 'PHILADEPHIA' &CREDLIMIT + 55400.10 &ACTIVE) DMPCLPGM SNDPGMMSG ('PROCESING COMPLETE') MSGTYPE(*COMP) RETURN ENDPGM

PGMB

PGM PARM(&NAME &ADRESS &COMENT &CITY &CREDLIMIT + &HIGHBAL &ACTIVE) DCL &NAME *CHAR 20 DCL &ADRESS *CHAR 35 DCL &CITY *CHAR 21 DCL &COMENT *CHAR 55 DCL &CREDLIMIT *DEC (11 2) DCL &HIGHBAL *DEC (15 5) DCL &ACTIVE *LGL CHGVAR (&NAME) VALUE('JERRY JAMES') CHGVAR (&ADRESS) VALUE('124 ALDERSON') CHGVAR (&CITY) VALUE('NEWYORK') CHGVAR (&COMENT) VALUE(BLANK) CHGVAR (&CREDLIMIT) VALUE(1000.50) CHGVAR (&HIGHBAL) VALUE(67100) CHGVAR (&ACTIVE) VALUE('0') DMPCLPGM RETURN

ENDPGM

DIFFERENCE BETWEEN TWO DATES INTHE SAMEYEAR PROGRAM

PGM (&DATE1 &DATE2) DCL VAR(&DATE1) TYPE(*CHAR) LEN(6) DCL VAR(&DATE2) TYPE(*CHAR) LEN(6) DCL VAR(&TEMP1) TYPE(*DEC) LEN(3 0) DCL VAR(&TEMP2) TYPE(*DEC) LEN(3 0) DCL VAR(&TEMP3) TYPE(*DEC) LEN(3 0) DCL VAR(&TEMP4) TYPE(*CHAR) LEN(3) /* MONMSG (CPF0000) EXEC(GOTO (ERROR)) */

Page 6: Clprog Practise

CVTDAT DATE(&DATE1) TOVAR(&DATE1) FROMFMT(*MDY) + TOFMT(*JUL) CVTDAT DATE(&DATE2) TOVAR(&DATE2) FROMFMT(*MDY) + TOFMT(*JUL) CHGVAR VAR(&TEMP1) VALUE((%SST(&DATE1 4 3))) CHGVAR VAR(&TEMP2) VALUE((%SST(&DATE2 4 3))) CHGVAR VAR(&TEMP3) VALUE(&TEMP1 - &TEMP2) CHGVAR VAR(&TEMP4) VALUE(&TEMP3) SNDPGMMSG ('DIFFERENCE BETWEEN TWO DATES IS ' *BCAT &TEMP4) GOTO (END) ERROR: SNDPGMMSG ('INVALID DATES ') END: RETURN ENDPGM

PGM SNDPGMMSG MSG('THIS IS MESAGE 1') TOPGMQ(*EXT) + MSGTYPE(*INFO) SNDPGMMSG MSG('THIS IS MESAGE 2') TOPGMQ(*EXT) + MSGTYPE(*INFO) SNDPGMMSG MSG('THIS IS MESAGE 3') TOPGMQ(*EXT) + MSGTYPE(*INFO) SNDPGMMSG MSG('THIS IS MESAGE 4') TOPGMQ(*EXT) + MSGTYPE(*INFO) SNDPGMMSG MSG('job ended NORMALLY') TOPGMQ(*SAME) + MSGTYPE(*COMP) WRKMSGQ MSGQ(SA1602HSH) ENDPGM

0000.01 PGM 0000.02 DCL VAR(&USR ) TYPE(*CHAR) LEN(10) 0000.03 DCL VAR(&TIME ) TYPE(*CHAR) LEN(8) 0000.04 DCL VAR(&HOURS) TYPE(*DEC) LEN(2) 0000.05 RTVJOBA USER(&USR) 0000.06 RTVSYSVAL SYSVAL(QTIME) RTNVAR(&TIME) 0000.07 CHGVAR VAR(&HOURS) VALUE(%SST(&TIME 1 2)) 0000.19 CHGVAR VAR(&TIME) VALUE(%SST(&TIME 1 2) *CAT '-' *CAT +

Page 7: Clprog Practise

0000.20 %SST(&TIME 3 2) *CAT '-' *CAT + 0000.21 %SST(&TIME 5 2)) 0000.25 IF COND(&HOURS *GE 0 *AND &HOURS *LT 12) THEN(DO) 0000.26 SNDPGMMSG MSG('HI GOOD Morning' *CAT &USR *cat + 0000.27 'the time is ' *cat &time ) 0000.28 0000.29 ENDDO 0000.30 IF COND(&HOURS *GE 12 *AND &HOURS *LT 17) THEN(DO) 0000.31 SNDPGMMSG MSG('HI GOOD AFTERNOON' *CAT &USR *cat + 0000.32 'the time is ' *cat &time ) 0000.33 ENDDO 0000.34 IF COND(&HOURS *GE 17 *AND &HOURS *LT 24) THEN(DO) 0000.35 SNDPGMMSG MSG('HI GOOD NOGHT ' *CAT &USR *cat + 0000.36 'the time is ' *cat &time ) 0000.37 ENDDO 0000.38 ENDPGM 0001.00

DATE CONVERTERPGM DCL VAR(&MYDATE) TYPE(*CHAR) LEN(6) DCL VAR(&TODATE) TYPE(*CHAR) LEN(10) RTVSYSVAL SYSVAL(QDATE) RTNVAR(&MYDATE) CVTDAT DATE(&MYDATE) TOVAR(&TODATE) TOFMT(*ISO) + TOSEP('-') SNDPGMMSG MSG('TODAY IS ' *CAT &TODATE ) END PGM

STRISDB