You are on page 1of 7

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
IF
IF
IF

VAR(&COMPANY) TYPE(*CHAR) LEN(4) VALUE(ABCO)


COND(&COMPANY *EQ ACME) THEN(GOTO CMDLBL(ACME))
COND(&COMPANY *EQ ABCO) THEN(GOTO CMDLBL(ABCO))
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

LOOP:

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)
IF (&COUNTER = 3) THEN(GOTO END)
ELSE
CHGVAR (&COUNTER) (&COUNTER + 1)

CHGVAR (&TCOUNT) (&COUNTER)


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

PROGRAM TO DISPLAY USERNAME LOGINTIME SYSTEMNAME


PGM

END:

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)
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)
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
DCL
DCL

PARM(&CHAR3)
VAR(&CHAR3) TYPE(*CHAR) LEN(3)
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

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)

CALLING PROGRAMS 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))
*/
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 +
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 CONVERTER
PGM
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

You might also like