Post on 14-Dec-2015
description
CL /400 (INTERFACE)
1
CL /400 (INTERFACE)
Important points:-
SNDPGMMSG is used to display output on command line valid for only char datatype.(so type casting is necessary)
SNDUSRMSG is used to display output on display program messages screen, valid for only char datatype. (so type casting is necessary)chgvar acts as an assignment operator in cl/400.Dcl command is used to declare a variable.Dclf command is used to declare a file.Sndrcvf is used to send and receive values from/onto the screen.To pass parameters at runtime use parm parameter.(I mean for user interactive programs use parm parameter).A few display screens are given go through it.
CLP1
0001.00 PGM 0002.00 DCL VAR (&A) TYPE (*CHAR) LEN (10) VALUE ('MNFRAMES') 0003.00 SNDPGMMSG MSG(&A) 0004.00 CHGVAR VAR(&A) VALUE('AS 400') 0005.00 SNDPGMMSG MSG(&A) 0006.00 ENDPGM
CLP31
0001.00 PGM 0002.00 DCL VAR(&A) TYPE(*CHAR) LEN(10) VALUE(MAINFRAMES) 0003.00 SNDPGMMSG MSG(&A) 0004.00 CHGVAR VAR(&A) VALUE(AS400) 0005.00 SNDPGMMSG MSG(&A)
C1
0001.00 PGM 0002.00 DCL VAR(&A) TYPE(*CHAR) LEN(20) VALUE(MAINFRAMES) 0003.00 DCL VAR(&B) TYPE(*CHAR) LEN(20) VALUE(KEANE) 0004.00 DCL VAR(&C) TYPE(*CHAR) LEN(40) 0005.00 CHGVAR VAR(&C) VALUE(&A *CAT &B) 0006.00 SNDPGMMSG MSG (&C) ENDPGM
CLP32
0001.00 PGM 0002.00 DCL VAR (&A) TYPE(*CHAR) LEN(10) VALUE(MAINFRAMES) 0003.00 DCL VAR(&B) TYPE(*DEC) LEN(10 0) VALUE(333) 0004.00 CHGVAR VAR(&A) VALUE(&B) 0005.00 SNDPGMMSG MSG(&A) 0006.00 ENDPGM CLP33
0001.00 PGM 0002.00 DCL VAR(&A) TYPE(*DEC) LEN(10 0) VALUE(333) 0003.00 DCL VAR(&B) TYPE(*DEC) LEN(10 0) VALUE(333) 0004.00 DCL VAR(&C) TYPE(*DEC) LEN(10 0) 0005.00 DCL VAR(&D) TYPE(*CHAR) LEN(10) 0006.00 CHGVAR VAR(&C) VALUE(&A + &B) 0007.00 CHGVAR VAR(&D) VALUE(&C) 0008.00 SNDPGMMSG MSG(&D) 0009.00 ENDPGM
C2
0001.00 PGM 0002.00 DCL VAR(&A) TYPE(*DEC) LEN(10 3) VALUE(100.25) 0003.00 DCL VAR(&B) TYPE(*DEC) LEN(10 3) VALUE(110.25) 0004.00 DCL VAR(&C) TYPE(*DEC) LEN(10 3) 0005.00 DCL VAR(&RES) TYPE(*CHAR) LEN(10) 0006.00 IF (&A > &B) THEN(CHGVAR VAR(&C) VALUE(&A+&B)) 0007.00 ELSE (CHGVAR VAR(&C) VALUE(&A + 30)) 0008.00 CHGVAR VAR(&RES) VALUE(&C) 0009.00 SNDPGMMSG MSG(&RES) 0010.00 ENDPGM CLP34
001.00 PGM 002.00 DCL VAR(&A) TYPE(*CHAR) LEN(10) VALUE(MAIN) 003.00 DCL VAR(&B) TYPE(*CHAR) LEN(10) VALUE(FRAMES) 004.00 DCL VAR(&C) TYPE(*CHAR) LEN(10) 005.00 DCL VAR(&D) TYPE(*CHAR) LEN(10) VALUE('OTPT IS') 006.00 CHGVAR VAR(&C) VALUE(&A *CAT &B) 007.00 SNDPGMMSG MSG(&D *CAT &C) 008.00 ENDPGM
CLP35
0001.00 PGM 0002.00 DCL VAR(&A) TYPE(*CHAR) LEN(10) VALUE(PRAV) 0003.00 DCL VAR(&B) TYPE(*CHAR) LEN(10) VALUE(EEN) 0004.00 DCL VAR(&C) TYPE(*CHAR) LEN(10) 0005.00 CHGVAR VAR(&C) VALUE(&A *BCAT &B) 0006.00 SNDPGMMSG MSG(&C) 0007.00 ENDPGM
CLP36
0001.00 PGM 0002.00 DCL VAR(&A) TYPE(*CHAR) LEN(10) VALUE( PRA ) 0003.00 DCL VAR(&B) TYPE(*CHAR) LEN(10) VALUE( VEEN) 0004.00 DCL VAR(&C) TYPE(*CHAR) LEN(10) 0005.00 CHGVAR VAR(&C) VALUE(&A *TCAT &B) 0006.00 SNDPGMMSG MSG(&C) 0007.00 ENDPGM
CLP99
0001.00 PGM 0002.00 DCL VAR(&A) TYPE(*CHAR) LEN(10) VALUE(PRAVEEN) 0003.00 DCL VAR(&B) TYPE(*CHAR) LEN(10) 0004.00 CHGVAR VAR(&B) VALUE(%SST(&A 2 5)) 0005.00 SNDPGMMSG MSG(&B) 0006.00 ENDPGM CLP37
0001.00 PGM 0002.00 DCL VAR(&A) TYPE(*DEC) LEN(10 0) VALUE(333) 0003.00 DCL VAR(&B) TYPE(*DEC) LEN(10 0) VALUE(333) 0004.00 DCL VAR(&C) TYPE(*CHAR) LEN(10 ) 0005.00 /* IF COND(&A *GT &B) THEN(CHGVAR VAR(&C) VALUE(&A)) + 0006.00 ELSE CHGVAR VAR(&C) VALUE(&B) + 0007.00 SNDPGMMSG MSG(&C) */ 0008.00 IF COND(&A *EQ &B) THEN(SNDPGMMSG MSG(&C) VALUE('EQUAL')) 0009.00 ELSE SNDPGMMSG MSG(&C) VALUE('NOT EQUAL') 0010.00 ENDPGM
C3
0001.00 PGM 0002.00 DCL VAR(&A) TYPE(*DEC) LEN(4 0) VALUE(1000) 0003.00 DCL VAR(&B) TYPE(*DEC) LEN(4 0) VALUE(1100) 0004.00 DCL VAR(&C) TYPE(*CHAR) LEN(10) 0005.00 IF COND(&A = &B) THEN(CHGVAR VAR(&C) VALUE(EQUAL)) 0006.00 ELSE CHGVAR VAR(&C) VALUE(NOTEQUAL) 0007.00 SNDPGMMSG MSG(&C) 0008.00 ENDPGM
C4
0001.00 PGM 0002.00 DCL VAR(&NUM1) TYPE(*DEC) LEN(3 0) VALUE(10) 0003.00 DCL VAR(&NUM2) TYPE(*DEC) LEN(3 0) VALUE(0) 0004.00 DCL VAR(&RES) TYPE(*CHAR) LEN(10) 0005.00 START: 0006.00 CHGVAR VAR(&NUM2) VALUE(&NUM1 + &NUM2) 0007.00 CHGVAR VAR(&NUM1) VALUE(&NUM1 - 1) 0008.00 IF (&NUM1 *NL 1) THEN(GOTO START) 0009.00 CHGVAR VAR(&RES) VALUE(&NUM2) 0010.00 SNDPGMMSG MSG(&RES) 0011.00 ENDPGM
C123
0001.00 PGM 0002.00 DCL VAR(&A) TYPE(*DEC) LEN(3 0) VALUE(10) 0003.00 DCL VAR(&B) TYPE(*DEC) LEN(3 0) VALUE(20) 0004.00 DCL VAR(&C) TYPE(*CHAR) LEN(10) 0005.00 DCL VAR(&D) TYPE(*CHAR) LEN(10) 0006.00 CHGVAR VAR(&A) VALUE(&A + &B) 0007.00 CHGVAR VAR(&B) VALUE(&A - &B) 0008.00 CHGVAR VAR(&A) VALUE(&A - &B) 0009.00 CHGVAR VAR(&C) VALUE(&A) 0010.00 CHGVAR VAR(&D) VALUE(&B) 0011.00 SNDPGMMSG MSG(&C) 0012.00 SNDPGMMSG MSG(&D) 0013.00 ENDPGM
C7
0001.00 PGM 0002.00 DCL VAR(&NUM) TYPE(*DEC) LEN(2 0) VALUE(6) 0003.00 DCL VAR(&I) TYPE(*DEC) LEN(2 0) VALUE(1) 0004.00 DCL VAR(&FAC) TYPE(*DEC) LEN(4 0) 0005.00 DCL VAR(&RES) TYPE(*CHAR) LEN(10) 0006.00 CHGVAR VAR(&FAC) VALUE(&NUM) 0007.00 START: 0008.00 CHGVAR VAR(&FAC) VALUE(&FAC * &I) 0009.00 CHGVAR VAR(&I) VALUE(&I + 1) 0010.00 IF (&I< &NUM) THEN(GOTO START) 0011.00 CHGVAR VAR(&RES) VALUE(&FAC) 0012.00 SNDPGMMSG MSG(&RES) 0013.00 ENDPGM C8
0001.00 PGM 0002.00 DCL VAR(&F1) TYPE(*DEC) LEN(4 0) VALUE(1) 0003.00 DCL VAR(&F2) TYPE(*DEC) LEN(4 0) VALUE(1) 0004.00 DCL VAR(&F3) TYPE(*DEC) LEN(5 0) 0005.00 DCL VAR(&I) TYPE(*DEC) LEN(2 0) VALUE(1) 0006.00 DCL VAR(&RES) TYPE(*CHAR) LEN(10) 0007.00 DCL VAR(&R) TYPE(*CHAR) LEN(10) 0008.00 DCL VAR(&AP) TYPE(*CHAR) LEN(10) 0009.00 CHGVAR VAR(&RES) VALUE(&F1) 0010.00 CHGVAR VAR(&R) VALUE(&F2) 0011.00 SNDPGMMSG MSG(&RES) 0012.00 SNDPGMMSG MSG(&R) 0013.00 START: 0014.00 CHGVAR VAR(&F3) VALUE(&F1 + &F2) 0015.00 CHGVAR VAR(&AP) VALUE(&F3) 0016.00 SNDPGMMSG MSG(&AP)
C9
0001.00 PGM 0002.00 DCL VAR(&A) TYPE(*CHAR) LEN(4) VALUE('1234') 0003.00 DCL VAR(&B) TYPE(*DEC) LEN(4 0) VALUE(12) 0004.00 DCL VAR(&C) TYPE(*CHAR) LEN(10) 0005.00 CHGVAR VAR(&B) VALUE(&A) 0006.00 CHGVAR VAR(&C) VALUE(&B) 0007.00 SNDPGMMSG MSG(&C) 0008.00 ENDPGM
CLPRUN
0001.00 PGM PARM(&N1 &N2) 0002.00 DCL VAR(&N1) TYPE(*DEC) LEN(15 5) 0003.00 DCL VAR(&N2) TYPE(*DEC) 0004.00 DCL VAR(&RES) TYPE(*CHAR) LEN(10) 0005.00 IF (&N1 > &N2) THEN(DO) 0006.00 CHGVAR VAR(&N1) VALUE(&N1*&N2) 0007.00 CHGVAR VAR(&RES) VALUE(&N1) 0008.00 ENDDO 0009.00 ELSE (DO) 0010.00 IF (&N1 < &N2) THEN(DO) 0011.00 CHGVAR VAR(&N1) VALUE(&N1 + &N2) 0012.00 CHGVAR VAR(&RES) VALUE(&N1) 0013.00 ENDDO 0014.00 ELSE (DO) 0015.00 CHGVAR VAR(&N1) VALUE(&N1 - &N2) 0016.00 CHGVAR VAR(&RES) VALUE(&N1) 0017.00 ENDDO 0018.00 ENDDO 0019.00 SNDPGMMSG MSG(&RES) 0020.00 ENDPGM CLP12
0001.00 PGM 0002.00 DCLF FILE(WIZKID/DSPF1) RCDFMT(REC1) 0003.00 SNDRCVF RCDFMT(REC1) 0004.00 CHGVAR VAR(&C) VALUE(&A + &B) 0005.00 SNDRCVF RCDFMT(REC1) 0006.00 ENDPGM CLP3
0001.00 PGM 0002.00 DCLF FILE(WIZKID/DSPF2) RCDFMT(REC1) 0003.00 SNDRCVF RCDFMT(REC1) 0004.00 CHGVAR VAR(&C) VALUE('&A + &B') 0005.00 SNDRCVF RCDFMT(REC1) 0006.00 ENDPGM CLP10
0001.00 PGM 0002.00 DCLF FILE(WIZKID/DSPF10) RCDFMT(REC1) 0003.00 SNDRCVF RCDFMT(REC1) 0004.00 CHGVAR (&T) VALUE(&S + &D) 0005.00 SNDRCVF RCDFMT(REC1) 0006.00 ENDPGM
CLP007
0001.00 PGM 0002.00 DCLF FILE(WIZKID/SCREEN) RCDFMT(REC1) 0003.00 SNDRCVF RCDFMT(REC1) 0004.00 IF COND(&CH = 1) THEN(DO) 0005.00 START: 0006.00 CHGVAR VAR(&RES) VALUE(&RES * &NUM) 0007.00 CHGVAR VAR(&NUM) VALUE(&NUM - 1) 0008.00 IF (&NUM > 1) THEN(GOTO START) 0009.00 ENDDO 0010.00 IF COND(&CH = 3) THEN(DO) 0011.00 START1: 0012.00 CHGVAR VAR(&RES) VALUE(&NUM + &RES) 0013.00 CHGVAR VAR(&NUM) VALUE(&NUM - 1) 0014.00 IF (&NUM > 0) THEN(GOTO START1) 0015.00 ENDDO 0016.00 IF COND(&CH = 2) THEN(DO) 0017.00 CHGVAR VAR(&NUM) VALUE(&NUM + &B) 0018.00 CHGVAR VAR(&B) VALUE(&NUM - &B) 0019.00 CHGVAR VAR(&NUM) VALUE(&NUM -&B) 0020.00 ENDDO 0021.00 SNDRCVF RCDFMT(REC1) 0022.00 ENDPGM CLP009
0001.00 PGM 0002.00 DCLF FILE(WIZKID/PRACTICE) RCDFMT(REC1) 0003.00 SNDRCVF RCDFMT(REC1) 0004.00 IF COND(&CH = 1) THEN(DO) 0005.00 CHGVAR VAR(&RES) VALUE(&NUM1 + &NUM2) 0006.00 ENDDO 0007.00 IF COND(&CH = 2) THEN(DO) 0008.00 CHGVAR VAR(&RES) VALUE(&NUM1 - &NUM2) 0009.00 ENDDO 0010.00 IF COND(&CH = 3) THEN(DO) 0011.00 CHGVAR VAR(&RES) VALUE(&NUM1 * &NUM2) 0012.00 ENDDO 0013.00 SNDRCVF RCDFMT(REC1) 0014.00 ENDPGM CLP5
0001.00 PGM 0002.00 DCL VAR(&A) TYPE(*DEC) LEN(4 0) 0003.00 DCL VAR(&B) TYPE(*DEC) LEN(4 0) 0004.00 DCL VAR(&D) TYPE(*DEC) LEN(4 0) 0005.00 DCLF FILE(WIZKID/DSPF2) RCDFMT(DSPF001) 0006.00 SNDRCVF RCDFMT(DSPF001) 0007.00 CHGVAR VAR(&D) VALUE(&A + &B) 0008.00 SNDRCVF RCDFMT(DSPF001) 0009.00 ENDPGM CLP90 001.00 PGM 002.00 DCLF FILE(WIZKID/THO) RCDFMT(REC1) 003.00 SNDRCVF RCDFMT(REC1) 004.00 IF COND(&CH = 1 ) THEN(DO) 005.00 CHGVAR VAR(&RES) VALUE(&A + &B) 006.00 ENDDO 007.00 IF COND(&CH = 2 ) THEN(DO) 008.00 START: 009.00 CHGVAR VAR(&RES) VALUE(&RES + &A) 010.00 CHGVAR VAR(&A) VALUE(&A - 1) 011.00 IF (&A > 0) THEN(GOTO START) 012.00 ENDDO 013.00 SNDRCVF RCDFMT(REC1) 014.00 ENDPGM C10
0001.00 PGM 0002.00 DCL VAR(&F) TYPE(*DEC) LEN(4 0) 0003.00 DCLF FILE(WIZKID/THO1) RCDFMT(REC1) 0004.00 SNDRCVF RCDFMT(REC1) 0005.00 CHGVAR VAR(&F) VALUE(&A) 0006.00 CHGVAR VAR(&A) VALUE(&B) 0007.00 CHGVAR VAR(&B) VALUE(&F) 0008.00 SNDRCVF RCDFMT(REC1) 0009.00 ENDPGM
CLP4
0001.00 PGM PARM (&A) 0002.00 DCL VAR(&A) TYPE(*DEC) LEN(15 5) 0002.01 DCL VAR(&RES1) TYPE(*DEC) LEN(15 0) VALUE(1) 0005.01 DCL VAR(&CHAR) TYPE(*CHAR) LEN(15) 0007.01 IF (&A=0) THEN(GOTO END) 0007.02 START: ELSE (DO) 0007.03 CHGVAR VAR(&RES1) VALUE(&RES1 * &A) 0008.00 CHGVAR VAR(&A) VALUE(&A-1) 0008.01 IF COND(&A>=2) THEN(GOTO START) 0008.02 ENDDO 0008.05 END: CHGVAR VAR(&CHAR) VALUE(&RES1) 0008.06 SNDPGMMSG MSG(&CHAR) 0010.00 ENDPGM CLP5
0001.00 PGM PARM(&A &B &C) 0002.00 DCL VAR(&A) TYPE(*DEC) 0002.01 DCL VAR(&B) TYPE(*DEC) 0002.02 DCL VAR(&C) TYPE(*DEC) LEN(15 5) 0005.01 DCL VAR(&CHAR) TYPE(*CHAR) LEN(18) VALUE('HARI') 0007.01 IF COND(&A > &B) THEN(DO) 0007.02 IF COND(&A > &C) THEN(CHGVAR VAR(&CHAR) VALUE('A IS BIGGER')) 0007.07 ELSE CHGVAR VAR(&CHAR) VALUE('C IS BIGGER NUMBER') 0007.08 ENDDO 0008.03 ELSE (DO) 0008.04 IF (&B > &C) THEN(CHGVAR VAR(&CHAR) VALUE('B IS BIGGER')) 0008.05 ELSE CHGVAR VAR(&CHAR) VALUE('C IS BIGGER') 0008.07 ENDDO 0008.11 SNDPGMMSG MSG(&CHAR) 0010.00 ENDPGM CLP10
0001.00 PGM 0001.01 0001.02 DCL VAR(&A) TYPE(*DEC) LEN(5 2) 0001.03 DCL VAR(&B) TYPE(*CHAR) LEN(5) 0002.00 DCLF FILE(PVN/DSP11) RCDFMT(DSP001) 0003.00 SNDRCVF RCDFMT(DSP001) 0004.00 IF COND(&NUM1 *LT &NUM2) THEN(DO) 0005.00 IF COND(&OPT = 1) THEN(GOTO CMDLBL(ADD)) 0008.00 IF COND(&OPT = 2) THEN(GOTO CMDLBL(SUB)) 0015.00 IF COND(&OPT = 3) THEN(GOTO CMDLBL(MUT)) 0019.00 IF COND(&OPT = 4) THEN(GOTO CMDLBL(DVI)) 0023.00 IF COND(&OPT = 5) THEN(GOTO CMDLBL(MID)) 0026.00 ENDDO 0027.00 IF COND(&NUM1 *GT &NUM2) THEN(DO) 0028.00 IF COND(&OPT = 1) THEN(GOTO CMDLBL(SUB)) 0031.00 IF COND(&OPT = 2) THEN(GOTO CMDLBL(ADD)) 0031.00 IF COND(&OPT = 2) THEN(GOTO CMDLBL(ADD)) 0034.00 IF COND(&OPT = 3) THEN(GOTO CMDLBL(MUT)) 0038.00 IF COND(&OPT = 4) THEN(GOTO CMDLBL(DVI)) 0042.00 IF COND(&OPT = 5) THEN(GOTO CMDLBL(MID)) 0045.00 ENDDO 0045.01 ADD: /* CHGVAR VAR(&RES) VALUE(&NUM1 + &NUM2) */ 0045.02 /*GOTO END */ 0045.03 SUB: /* CHGVAR VAR(&RES) VALUE(&NUM1 - &NUM2) */ 0045.04 /* GOTO END */ 0045.05 MUT: /* CHGVAR VAR(&RES) VALUE(&NUM1 * &NUM2) */ CLP11
0001.00 PGM 0002.00 DCL &A *CHAR 3 0002.01 DCL &RES *DEC (10 2) 0002.02 DCL &B *CHAR 15 0004.00 DCLF FILE(PVN/PFL) 0005.00 BEGIN: 0006.00 RCVF RCDFMT(PFL) 0007.00 MONMSG MSGID(CPF0864) EXEC(GOTO ENDL) 0007.01 CHGVAR VAR(&A) VALUE(&EMPNUM) 0007.02 CHGVAR VAR(&B) VALUE(&EMPSAL) 0007.03 CHGVAR VAR(&RES) VALUE(&RES+&EMPSAL) 0008.00 SNDPGMMSG MSG(&EMPNAME *CAT ' ' *CAT &A *CAT ' ' *CAT &B) 0008.01 /* SNDPGMMSG MSG(&EMPNAME) */ 0009.00 GOTO BEGIN 0009.01 ENDL: CHGVAR VAR(&B) VALUE(&RES) 0010.00 SNDPGMMSG MSG(&B) ENDPGM CLP111
0001.00 PGM 0004.00 DCLF FILE(PVN/DSP1) 0006.01 CHGVAR VAR(&NAME) VALUE('NARAYANA') 0007.00 CHGVAR VAR(&AGE) VALUE(26) 0007.01 SNDF RCDFMT(DSP100) 0007.02 RCVF RCDFMT(DSP100) 0011.00 ENDPGM CLP112
0001.00 PGM 0001.01 DCL &A *DEC (4 0) (0) 0001.02 DCL &B *DEC (4 0) (0) 0001.03 DCL &N1 *DEC (4 0) (0) 0001.04 DCL &N2 *DEC (4 0) (1) 0001.05 DCL &C *DEC (4 0) (0) 0001.06 DCL &CHAR *CHAR (4) 0001.07 DCLF FILE(PVN/DSP2) RCDFMT(DSP003) 0001.08 SNDRCVF RCDFMT(DSP003) 0004.05 IF COND(&CH = 1) THEN(DO) 0004.06 STARTF: 0004.07 CHGVAR VAR(&RES) VALUE(&RES * &NUM) 0004.08 CHGVAR VAR(&NUM) VALUE(&NUM-1) 0004.09 IF (&NUM > 1) THEN(GOTO STARTF) 0004.10 ENDDO 0004.11 IF (&CH = 2) THEN(DO) 0004.12 CHGVAR VAR(&CHAR) VALUE(&N1) 0004.13 SNDPGMMSG MSG(&CHAR) 0004.14 CHGVAR VAR(&CHAR) VALUE(&N2) 0004.15 SNDPGMMSG MSG(&CHAR) 0004.16 CHGVAR VAR(&NUM) VALUE(&NUM-2) 0004.17 STARTFB: 0004.18 CHGVAR VAR(&A) VALUE(&N1) 0004.19 CHGVAR VAR(&B) VALUE(&N2) 0004.20 CHGVAR VAR(&C) VALUE(&A+&B) 0004.20 CHGVAR VAR(&C) VALUE(&A+&B) 0004.21 CHGVAR VAR(&CHAR) VALUE(&C) 0004.22 SNDPGMMSG MSG(&CHAR) 0004.23 CHGVAR VAR(&N1) VALUE(&N2) 0004.24 CHGVAR VAR(&N2) VALUE(&C) 0004.25 CHGVAR VAR(&NUM) VALUE(&NUM-1) 0004.26 IF (&NUM > 0) THEN(GOTO STARTFB) 0004.27 ENDDO 0005.08 IF COND(&CH =3) THEN(DO) 0005.09 STARTA: 0005.10 CHGVAR VAR(&RES) VALUE(&RES+&NUM) 0005.11 CHGVAR VAR(&NUM) VALUE(&NUM-1) 0005.12 IF (&NUM > 0) THEN(GOTO STARTA) 0005.13 ENDDO 0005.14 IF (&CH = 4) THEN(DO) 0005.15 CHGVAR VAR(&NUM) VALUE(&NUM+&NUM1) 0005.16 CHGVAR VAR(&NUM1) VALUE(&NUM-&NUM1) 0005.17 CHGVAR VAR(&NUM) VALUE(&NUM-&NUM1) 0005.18 ENDDO 0005.19 SNDRCVF RCDFMT(DSP003) 0007.00 ENDPGM CLP5
0001.00 PGM 0001.01 DCL &CH *CHAR 1 0001.02 DCL &N1 *DEC (5 0) (20) 0001.03 DCL &N2 *DEC (5 0) (10) 0001.04 DCL &N3 *DEC (6 0) 0001.05 DCL &CHAR *CHAR 6 0001.06 SNDBRKMSG MSG('please enter Y or N') + 0001.07 TOMSGQ(SATISH1/YSATISH) MSGTYPE(*INQ) + 0001.08 RPYMSGQ(PVN/VENKAT1) 0001.09 RCVMSG MSGQ(PVN/VENKAT1) MSGTYPE(*RPY) MSG(&CH) 0002.00 IF (&CH='Y') THEN(CHGVAR VAR(&N3) VALUE(&N1+&N2)) 0002.01 ELSE (CHGVAR VAR(&N3) VALUE(&N1-&N2)) 0002.02 CHGVAR VAR(&CHAR) VALUE(&N3) 0002.03 SNDPGMMSG MSG(&CHAR) 0003.00 ENDPGM
CLP55
0001.00 PGM 0001.01 DCL &CH *CHAR 5 0001.02 DCL &N1 *DEC (5 0) (20) 0002.02 CHGVAR VAR(&CH) VALUE(&N1) 0002.03 SNDPGMMSG MSG(&CH) TOPGMQ(*EXT) 0003.00 ENDPGM
PARAMETER PASSING TECHNIQUE:-
C5 [ calling program && called program ] (Calling program)
0001.00 PGM 0002.00 /* CALLING PROGRAM */ 0003.00 DCL VAR(&A) TYPE(*DEC) LEN(5) VALUE(1000) 0004.00 DCL VAR(&B) TYPE(*DEC) LEN(5) VALUE(3000) 0005.00 CALL PGM(PRA1/CLP2) PARM(&A &B) 0006.00 ENDPGM (Called Program)
0001.00 PGM PARM(&X &Z) 0002.00 /* CALLED PROGRAM */ 0003.00 DCL VAR(&X) TYPE(*DEC) LEN(5) /* try with this if any error occurs give len(15 5) 0004.00 DCL VAR(&Z) TYPE(*DEC) LEN(5) 0005.00 DCL VAR(&L) TYPE(*DEC) LEN(6) 0006.00 DCL VAR(&D) TYPE(*CHAR) LEN(10) 0007.00 CHGVAR VAR(&L) VALUE(&X + &Z) 0008.00 CHGVAR VAR(&D) VALUE(&L) 0009.00 SNDPGMMSG MSG(&D) TOPGMQ(*PRV CLP1) 0010.00 ENDPGM 1ST + 2ND =PARAMETER PASSING
CLP0023
(Called program)
0001.00 PGM PARM (&X) 0002.00 DCL VAR(&X) TYPE(*DEC) LEN(15 5) 0003.00 DCL VAR(&F) TYPE(*CHAR) LEN(10) 0004.00 CHGVAR VAR(&F) VALUE(&X) 0005.00 SNDPGMMSG MSG(&F) 0006.00 ENDPGM
(Calling Program)
1.00 PGM 2.00 CALL PGM (CLP/CLP4) PARM (123.456) 3.00 ENDPGM
CLP123
0001.00 PGM 0002.00 CALL PF100 0003.00 ENDPGM
DISPLAY FILES
addition a : 3333- b : 3333- sum : 6666 program enter number a : 99- enter number b : 99-
main screen : 1 . factorial 2 . swapping 3 . sum choice ch : 3- enter any number : 99- enter 2nd num for swapping b : 99- result : 9999- Note:- for display files
Strsda (start source design aid).For decimals .
+3(x) for input type. +6(x) for output type. +9(x) for both input && output type.
3) For characters. +I(x) for input type. +o(x) for output type. +b(x) for both input && output type.
DATA AREAS
Permanent Data areaTemporary Data area
Temporary data areas are created by o/s & destroyed by o/s as soon as that job is completed.Permanent data areas are of 3 types:-Character data areaDecimal data areaLogical data area
Commands related to data area
CRTDTAARADSPDTAARACHDDTAARARTVDTAARA RTNVAR(&VAR)
Examples
CRTDTAARA
Data area name: - praLibrary: - PraveenType: - *DEC
Length: - 4Decimal positions: 0Initial value: 1234
CRTDTAARA Data area name: - ramuLibrary: - PraveenType: - *CHAR
Length: - 10Initial value: - srsoft
CRTDTAARA
Data area name: - somuLibrary: - PraveenType: - *LGL
Length: - 1Initial value 0
DECIMAL DATA AREA
PGMDCL VAR (&A) TYPE (*DEC) LEN (4 0) DCL VAR (&B) TYPE (*CHAR) LEN (10)RTVDTAARA DTAARA (PRAVEEN/PRA) RTNVAR (&A)CHGVAR VAR (&A) VALUE (&A+1)CHGVAR VAR (&B) VALUE (&A)SNDPGMMSG MSG (&B)ENDPGM
CHARACTER DATA AREA
PGMDCL VAR (&A) TYPE (*CHAR) LEN (10) CHGDTAARA DTAARA (PRAVEEN/RAMU) VALUE (DOCTOR)RTVDTAARA DTAARA (PRAVEEN/RAMU) RTNVAR (&A)SNDPGMMSG MSG (&A)ENDPGM
LOGICAL DATA AREA
PGM
DCL VAR (&A) TYPE (*LGL) LEN (1) DCL VAR (&B) TYPE (*DEC) LEN (4 0)DCL VAR (&C) TYPE (*CHAR) LEN (10)RTVDTAARA DTAARA (PRAVEEN/SOMU) RTNVAR (&A)IF COND (&A = 1) THEN (DO)CHGVAR VAR (&B) VALUE (1000)ENDDOELSE (DO)CHGVAR VAR (&B) VALUE (2000)ENDDOCHGVAR VAR (&C) VALUE (&B)SNDPGMMSG MSG (&C)
ENDPGM
DATA QUEUE
Data queues are permanent. It can store up to 1 to 64,512 bytes.
While creating Data Queue, we cannot give initial value. I mean initialization of a variable at the time of declaration is not available in Data Queue, where as it is available in Data Areas.
Commands related to Data Queues:-
CRTDTAQDLTDTAQ
CRTDTAQ
Data Queue Name: - SunLibrary: PraveenLength: - 300
Note: - To send value to Data Queue, we invoke QSNDDTAQ program, & to receive value from data Queue we invoke inbuilt program QRCVDTAQ.
SENDING PROGRAM
PGM
DCL VAR (&A) TYPE (*DEC) LEN (4 0) VALUE (100) /* &a variable contains No. of bytes of data to be sent to data queue */
DCL VAR (&B) TYPE (*CHAR) LEN (300) /* &b variable contains actual data that is to be sent to data queue */
CHGVAR VAR (&B) VALUE (WELCOME TO AS/400)
CALL PGM (QSNDDTAQ) PARM (SUN PRAVEEN &A &B)
Data queue name
Library Name
No. of bytes of data to be sent to data queue
Actual data that is sent to data queue
ENDPGM
Note: - Now Data Queue SUN in Library Praveen will contain value WELCOME TO AS/400)
RECEIVING PROGRAM
PGM
DCL VAR (&S) TYPE (*DEC) LEN (4 0)
DCL VAR (&D) TYPE (*CHAR) LEN (300)
DCL VAR (&WAIT) TYPE (*DEC) LEN (5 0) VALUE (1)
CALL PGM (QRCVDTAQ) PARM (SUN PRAVEEN &S &D &WAIT)
Data queue name
Library Name
Max No. of bytes of data to can be received from data queue
Data from data queue is received into this variable
Minimum wait time
SNDPGMMSG MSG (&D)
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
RETRIEVING RECORDS FROM A DATA BASE FILE (EMP)
PGM
DCLF FILE ( PRAVEEN/EMP) RCDFMT ( EMPREC)DCL VAR (&TENO) TYPE (*CHAR ) LEN (4)DCL VAR (&TNAME) TYPE (*CHAR) LEN (10)
PRA1: RCVF DEV (*FILE) RCDFMT (EMPREC)
MONMSG MSGID( CPF0000) EXEC (GOTO CMDLBL (ERROR) )
CHGVAR VAR ( &TENO ) VALUE (&ENO)CHGVAR VAR(&TNAME) VALUE (&ENAME) SNDPGMMSG MSG (EMPLOYEE NO: *CAT &TENO *CAT EMPLOYEE NAME: *CAT &TENAME)
GOTO CMDLBL(PRA1)
ERROR: SNDPGMMSG MSG( END OF FILE ENCOUNTERED)
ENDPGM
COMMANDS TO DISPLAY SYSTEM NAME, USER NAME & SYSTEM VALUES ARE AS FOLLOWS
Command UsageRTVJOBATO DISPLAY USER NAME, SYSTEM DATE,userRTVNETATO DISPLAY SYSTEM NAMERTVSYSVALTO DISPLAY SYSTEM VALUES
PROGRAM TO GREET AN EXECUTED USER
PGM
DCL VAR (&USER) TYPE (*CHAR) LEN (10)DCL VAR (&DATE) TYPE (*CHAR) LEN (6)RTVJOBA USER (&USER) DATE (&DATE) SNDPGMMSG MSG (AS/400 welcomes *cat &user *cat on *cat %sst ( &date 3 2 ) *cat *cat %sst (&date 1 2) *cat *cat %sst ( &date 5 2) )
ENDPGM
CL PROGRAM TO RETRIEVE SYSTEM VALUES
PGM
DCL VAR ( &QTIME ) TYPE ( *CHAR ) LEN (8)RTVSYSVAL SYSVAL (QTIME) RTNVAR (&QTIME)SNDPGMMSG MSG (&QTIME)ENDPGM
DUKES CL PROGRAMS
FACTORIAL OF A NUMBER
PGM DCL VAR(&N) TYPE(*DEC) LEN(7) VALUE(9) DCL VAR(&I) TYPE(*DEC) LEN(7) VALUE(1) DCL VAR(&I1) TYPE(*CHAR) LEN(7) A: IF COND(&N *GT 0) THEN(DO) CHGVAR VAR(&I) VALUE(&I * &N) CHGVAR VAR(&N) VALUE(&N - 1) GOTO CMDLBL(A) ENDDO CHGVAR VAR(&I1) VALUE(&I) SNDPGMMSG MSG(&I1) ENDPGM
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
PGM DCL VAR(&CHAR05) TYPE(*CHAR) LEN(5) DCL VAR(&CHAR10) TYPE(*CHAR) LEN(10) DCL VAR(&DEC50) TYPE(*DEC) LEN(5 0) DCL VAR(&DEC72) TYPE(*DEC) LEN(7 2) CHGVAR VAR(&CHAR05) VALUE('12345') CHGVAR VAR(&CHAR10) VALUE('12345.67') CHGVAR VAR(&DEC50) VALUE(&CHAR05) CHGVAR VAR(&DEC72) VALUE(&CHAR10) DMPCLPGM CHGVAR VAR(&DEC50) VALUE(54321) CHGVAR VAR(&DEC72) VALUE(76543.21) CHGVAR VAR(&CHAR05) VALUE(&DEC50) CHGVAR VAR(&CHAR10) VALUE(&DEC72) 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
PGM DCL VAR(&COMPANY) TYPE(*CHAR) LEN(4) VALUE(ACME) IF COND(&COMPANY *EQ ACME) THEN(DO) SNDPGMMSG ('COMPANY NAME IS ACME') GOTO (ENDOFPGM) ENDDO IF COND(&COMPANY *EQ ABCO) THEN(DO) SNDPGMMSG ('COMPANY NAME IS ABCO') GOTO CMDLBL(ENDOFPGM) ENDDO IF COND(&COMPANY *NE ACBO *AND &COMPANY *NE + ACME) THEN(DO) SNDPGMMSG ('COMPANY NAME UNKNOWN') GOTO CMDLBL(ENDOFPGM) ENDDO ENDOFPGM:RETURN
PGM DCL VAR(&COMPANY) TYPE(*CHAR) LEN(4) VALUE(ABCO) DCL VAR(&GOODONE) TYPE(*CHAR) LEN(1) IF COND(&COMPANY *EQ ACME) THEN(DO) CHGVAR VAR(&GOODONE) VALUE(Y) SNDPGMMSG ('COMPANY NAME IS ACME') GOTO (ENDOFPGM) ENDDO ELSE IF COND(&COMPANY *EQ ABCO) THEN(DO) CHGVAR VAR(&GOODONE) VALUE(Y) SNDPGMMSG ('COMPANY NAME IS ABCO') GOTO CMDLBL(ENDOFPGM) ENDDO ELSE DO CHGVAR VAR(&GOODONE) VALUE(N) SNDPGMMSG ('COMPANY NAME UNKNOWN') GOTO CMDLBL(ENDOFPGM) ENDDO ENDOFPGM: IF COND(&GOODONE *EQ 'Y') THEN(SNDPGMMSG + MSG('THIS IS GOOD ONE')) ELSE CMD(SNDPGMMSG MSG('THIS IS BADONE')) RETURN
ENDPGM
DMPCLPGM COMMAND PROGRAM CALL THE CL PROGRAM WATCH QPPGMDMP PGM DCL VAR(&NUM1) TYPE(*DEC) LEN(3 0) VALUE(1) DCL VAR(&NUM2) TYPE(*DEC) LEN(3 0) VALUE(2) DCL VAR(&NUM3) TYPE(*DEC) LEN(3 0) VALUE(3) DCL VAR(&NUM4) TYPE(*DEC) LEN(3 0) VALUE(4) DCL VAR(&RST1) TYPE(*DEC) LEN(15 5) VALUE(0 DCL VAR(&RST2) TYPE(*DEC) LEN(15 5) VALUE(0 DCL VAR(&RST3) TYPE(*DEC) LEN(15 5) VALUE(0 DCL VAR(&RST4) TYPE(*DEC) LEN(15 5) VALUE(0 CHGVAR VAR(&RST1) VALUE(2 + 1) CHGVAR VAR(&RST2) VALUE(1 - 2) CHGVAR VAR(&RST3) VALUE(1 * 2) CHGVAR VAR(&RST4) VALUE(1 / 2) DMPCLPGM CHGVAR VAR(&RST1) VALUE(&NUM1 + &NUM2) CHGVAR VAR(&RST2) VALUE(&NUM1 - &NUM2) CHGVAR VAR(&RST2) VALUE(&NUM1 - &NUM2) CHGVAR VAR(&RST3) VALUE(&NUM1 * &NUM2) CHGVAR VAR(&RST4) VALUE(&NUM1 / &NUM2) DMPCLPGM CHGVAR VAR(&RST1) VALUE(&NUM1 * -&NUM2) CHGVAR VAR(&RST2) VALUE(&NUM1 / -&NUM2) CHGVAR VAR(&RST3) VALUE(-&NUM1 * &NUM2) CHGVAR VAR(&RST4) VALUE(-&NUM1 / &NUM2) DMPCLPGM CHGVAR VAR(&RST1) VALUE(&NUM2 / &NUM3 + &NUM1) CHGVAR VAR(&RST2) VALUE((&NUM2 * 2 ) / &NUM4) CHGVAR VAR(&RST3) VALUE((&NUM1 + &NUM2) * &NUM4) CHGVAR VAR(&RST4) VALUE((&NUM2 / 2) - &NUM4) DMPCLPGM
ENDPGM
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) CHGVAR (&TCOUNT) (&COUNTER) SNDMSG MSG('THIS IS LOOP ' *CAT &TCOUNT) + TOUSR(&USER) GOTO (LOOP) END: 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)) END: ENDPGM
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
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 ENDPGM
CALLING PROGRAMS
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
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 RETURNENDPGM
CALLING PROGRAM
PGM (&TEXT1) DCL &TEXT1 *CHAR LEN(6) DCL &MESSAGE *CHAR LEN(100) CALL SA1303HSH (&TEXT1 &MESSAGE) SNDPGMMSG (&MESSAGE) RETURN ENDPGM CALLED ROGRAM
PGM (&DATE &MSG) DCL &DATE *CHAR LEN(6) DCL &MSG *CHAR LEN(100) DCL &TEMP1 *CHAR 2 DCL &TEMP2 *CHAR 9 CHGVAR (&TEMP1) (%SST(&DATE 1 2)) IF (&TEMP1 *GE '01' *AND &TEMP1 *LE '12') (DO) IF (&TEMP1 = '01') (CHGVAR (&TEMP2) ('JANAUARY')) IF (&TEMP1 = '02') (CHGVAR (&TEMP2) ('FEBRAURY')) IF (&TEMP1 = '03') (CHGVAR (&TEMP2) ('MARCH')) IF (&TEMP1 = '04') (CHGVAR (&TEMP2) ('APRIL')) IF (&TEMP1 = '05') (CHGVAR (&TEMP2) ('MAY')) IF (&TEMP1 = '06') (CHGVAR (&TEMP2) ('JUNE')) IF (&TEMP1 = '07') (CHGVAR (&TEMP2) ('JULY')) IF (&TEMP1 = '08') (CHGVAR (&TEMP2) ('AUGUST')) IF (&TEMP1 = '09') (CHGVAR (&TEMP2) ('SEPTEMBER')) IF (&TEMP1 = '10') (CHGVAR (&TEMP2) ('OCTOBER')) IF (&TEMP1 = '11') (CHGVAR (&TEMP2) ('NOVEMBER')) IF (&TEMP1 = '12') (CHGVAR (&TEMP2) ('DECEMBER')) ENDDO ELSE (DO) CHGVAR (&MSG) ('INVALID DATE') GOTO (END) ENDDO CHGVAR (&MSG) (&TEMP2 *BCAT (%SST(&DATE 3 2)) *BCAT '19' *CAT + (%SST(&DATE 5 2))) END: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
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
SIMPLE MENU PROGRAM
PGM DCLF FILE(HASHEEM/SA1503HSH) SNDRCVF READ: IF COND(&IN03 = '1') THEN(GOTO CMDLBL(END)) IF (&OPT = 1) THEN(DSPJOB) ELSE IF (&OPT = 2) THEN(WRKSPLF) ELSE IF (&OPT = 3) THEN(WRKSBMJOB) ELSE (DO) CHGVAR (&OPT) (0) SNDRCVF GOTO (READ) ENDDO END: ENDPGM
A*%%TS SD 20050217 054046 HASHIM REL-V3R7M0 5716-PW1 A*%%EC A DSPSIZ(24 80 *DS3) A R RCDFMT1 A*%%TS SD 20050217 054046 HASHIM REL-V3R7M0 5716-PW1 A CA03(03) A CA09(09) A 5 17'PROGRAMER MENU' A DSPATR(HI) A COLOR(RED) A 7 14'1.DISPLAY JOB' A 9 14'2.WORKWITHSPOOLEDFILE' A 11 14'3.WORKWITHSUBMITTEDJOBS' A 14 14'OPTION:' A OPT 1S 0B 14 23
PROGRAM TO FIND TOTAL SIZE OF LIBRARY
PGM DCL (&LIB) (*CHAR) LEN(10) DCL (&TOTSIZ) (*DEC) LEN(15 0) DCL (&TOTSIZ1) (*CHAR) LEN(25) DCL (&USR) (*CHAR) LEN(10) DCLF QSYS/QADSPOBJ RTVDTAARA DTAARA(*LDA (1 10)) RTNVAR(&LIB) DSPOBJD OBJ(&LIB/*ALL) + OBJTYPE(*ALL) + OUTPUT(*OUTFILE) OUTFILE(QTEMP/QADSPOBJ) OVRDBF FILE(QADSPOBJ) TOFILE(QTEMP/QADSPOBJ) READ: RCVF MONMSG (CPF0864) EXEC(GOTO (END)) CHGVAR (&TOTSIZ) (&TOTSIZ+&ODOBSZ) GOTO (READ) END: CHGVAR (&TOTSIZ1) (&TOTSIZ) DLTF FILE(QTEMP/QADSPOBJ) SNDPGMMSG ('TOTALSIZE OF THE LIB ' *BCAT &LIB *BCAT + 'IS' *BCAT &TOTSIZ1 *BCAT 'BYTES') RETURN
ENDPGM
PROGRAMS ON MESSAGE QUEUES
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)
END: 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
INORDER TO RETRIEVE PARTICULAR TYPE OF OBJECTS FROM LIBRARY
PGM (&LIB) DCL (&LIB) (*CHAR) LEN(10) DCL (&TYPE) (*CHAR) LEN(5) DCLF QSYS/QADSPOBJ DSPOBJD OBJ(&LIB/*ALL) OBJTYPE(*ALL) + OUTPUT(*OUTFILE) OUTFILE(QTEMP/QADSPOBJ) MONMSG (CPF0000) OVRDBF FILE(QADSPOBJ) TOFILE(QTEMP/QADSPOBJ) + SHARE(*YES) CHGVAR VAR(&TYPE) VALUE(*FILE) OPNQRYF FILE((QADSPOBJ)) QRYSLT('&odobtp = &TYPE') + OPNID(SAM) CPYFRMQRYF FROMOPNID(SAM) TOFILE(QTEMP/SELOBJ) + MBROPT(*REPLACE) CRTFILE(*YES) FMTOPT(*NOCHK) DSPPFM FILE(QTEMP/SELOBJ) DLTOVR (QADSPOBJ) CLOF (SAM) DLTF (QTEMP/QADSPOBJ) DLTF (QTEMP/SELOBJ) RETURN
ENDPGM
CHANGE THE LENGTH OF THE &DATE TO 4 AND WATCH THE OUTPUT
/*BEGINING OF THE PROGRAM*/ PGM /*PROGRAM LINKAGE SECTION*/ /*DECLARATION SECTION*/ DCL VAR(&DATE) TYPE(*CHAR) LEN(6) DCL VAR(&MSGID) TYPE(*CHAR) LEN(7) DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(100) DCL VAR(&MSGF) TYPE(*CHAR) LEN(10) DCL VAR(&MSGFLIB) TYPE(*CHAR) LEN(10) DCL VAR(&ERRORSW) TYPE(*LGL) /*PROCEDURESECTION */ MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR)) RTVSYSVAL SYSVAL(QDATE) RTNVAR(&DATE) SNDPGMMSG MSG('THECURRENT DATE IS :' *CAT &DATE) RETURN /*ERROR PROCEDUR*/ ERROR: IF COND(&ERRORSW) THEN(SNDPGMMSG + MSGID(CPF9999) MSGF(CPFMSG) MSGTYPE(*ESCAPE)) CHGVAR VAR(&ERRORSW) VALUE('1') ERROR2: RCVMSG MSGTYPE(*DIAG) MSGDTA(&MSGDTA) + MSGID(&MSGID) MSGF(&MSGF) SNDMSGFLIB(&MSGFLIB) IF (&MSGID *EQ ' ') GOTO ERROR3 SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) + MSGDTA(&MSGDTA) MSGTYPE(*DIAG) GOTO ERROR2 ERROR3: RCVMSG MSGTYPE(*EXCP) MSGDTA(&MSGDTA) MSGID(&MSGID) + MSGF(&MSGF) SNDMSGFLIB(&MSGFLIB) SNDPGMMSG MSGTYPE(*ESCAPE) MSGDTA(&MSGDTA) MSGID(&MSGID) + MSGF(&MSGFLIB/&MSGF)
ENDPGM ..BIGGESTNO OF 3 VALUESPGM DCLF FILE(HASHEEM/DSP2) RCDFMT(RCDBIG) A: SNDRCVF RCDFMT(RCDBIG) IF COND(&IN03 *EQ '0') THEN(DO) IF COND(&V1 *GT &V2) THEN(DO) CHGVAR VAR(&R) VALUE(&V1) SNDRCVF RCDFMT(RCDBIG) GOTO CMDLBL(BIG) ENDDO CHGVAR VAR(&R) VALUE(&V2) SNDRCVF RCDFMT(RCDBIG) ENDDO BIG: IF COND(&R *GT &V3) THEN(DO) GOTO CMDLBL(CLOSE) ENDDO CHGVAR VAR(&R) VALUE(&V3) SNDRCVF RCDFMT(RCDBIG) CLOSE: IF COND(&IN05 *EQ '1') THEN(DO) CHGVAR VAR(&V1) VALUE(0) CHGVAR VAR(&V2) VALUE(0) CHGVAR VAR(&V3) VALUE(0) CHGVAR VAR(&R) VALUE(0) SNDRCVF RCDFMT(RCDBIG) GOTO CMDLBL(A) ENDDO
A*%%TS SD 20041227 103334 HASHIM REL-V3R7M0 5716-PW1 A*%%EC A DSPSIZ(24 80 *DS3) A R RCDBIG A*%%TS SD 20041227 103334 HASHIM REL-V3R7M0 5716-PW1 A CA03(03) A CA05(05)