Você está na página 1de 3

/*---------------------------------------------------------------*/

/* To compile run these commands first


*/
/*
*/
/*
DSPOBJD
OBJ(QSYS/ADD*) OBJTYPE(*CMD) +
*/
/*
OUTPUT(*OUTFILE) OUTFILE(QTEMP/QADSPOBJ)
*/
/*
*/
/*
DSPOBJD
OBJ(QSYS/CHG*) OBJTYPE(*CMD) +
*/
/*
OUTPUT(*OUTFILE) OUTFILE(QTEMP/QADSPOBJ2)
*/
/*
*/
/*---------------------------------------------------------------*/
pgm

/*--------------------------------------------------------*/
/* New TYPE values on DCL statement
*/
/* *INT & *UINT
*/
/* Len of 2 & 4 supported
*/
/* OPM doesnt support 8-Byte intengers - use CLLE
*/
/* (use %INT instead of binary)
*/
/*
*/
/* Previous limit on max parameters
*/
/* PGM & TFRCTL = 40
*/
/* CALL = 99
*/
/* New limits
*/
/* PGM & TFRCTL = 255
*/
/* CALL = 255
*/
/*
*/
/* Number of PARM statems remains at 99
*/
/*--------------------------------------------------------*/
DCL
DCL

VAR(&INT2) TYPE(*INT) LEN(2)


VAR(&INT4) TYPE(*INT) LEN(4)

DCL
DCL

VAR(&LOOP) TYPE(*CHAR) LEN(1) VALUE('Y')


VAR(&COUNT) TYPE(*DEC) LEN(4 0)

/*------------------------------------------------------*/
/* character lengths have increaded from 9999 to 32767 */
/* Limit for TYPE(*CHAR) and TYPE(*PNAME) on
*/
/*
PARM , ELEM, and QUAL command stays at 5000
*/
/*------------------------------------------------------*/
DCL
DCL
DCL
DCL

VAR(&BIGOFIELD) TYPE(*CHAR) LEN(32767)


VAR(&INT) TYPE(*INT) LEN(2)
VAR(&NAME) TYPE(*CHAR) LEN(10)
VAR(&LGL) TYPE(*LGL) VALUE('1')

/* True */

/*--------------------------------------------------------*/
/* Multiple file support
*/
/* supports upto 5 file "instances"
*/
/* instances can be for the same file of different files */
/*
*/
/* New OPNID (open identifier) parm added to DCLF
*/
/*
(only 1 DCLF allowed with OPNID(*NONE)
*/
/*
OPNID accepts 10 *char values
*/
/*
If OPNID name is used then declared CL values are */
/*
prefixed with this name :
*/

/*
&FILE01_Field1
*/
/*
&FILE01_Field2
*/
/*
OPNID added to
*/
/*
RCVF
*/
/*
ENDRCV
*/
/*
SNDF
*/
/*
SNDRCVF
*/
/*
WAIT
*/
/*
*/
/* I havent tried this but I think by defining the
*/
/* the file QADSPOBJ twice with different OPNID I
*/
/* can read the file again once it hits eof
*/
/* **once a file is read in CL (at EOF) the POSDBF
*/
/*
doesnt reposition the pointer.
*/
/*--------------------------------------------------------*/
DCLF
DCLF
DCLF

FILE(QTEMP/QADSPOBJ) OPNID(FILE01)
FILE(QTEMP/QADSPOBJ2) OPNID(FILE02)
FILE(QTEMP/QADSPOBJ) OPNID(FILE03)

DSPOBJD

OBJ(QSYS/ADD*) OBJTYPE(*CMD) +
OUTPUT(*OUTFILE) OUTFILE(QTEMP/QADSPOBJ)

DSPOBJD

OBJ(QSYS/CHG*) OBJTYPE(*CMD) +
OUTPUT(*OUTFILE) OUTFILE(QTEMP/QADSPOBJ2)

CHGVAR
DOWHILE
CHGVAR

VAR(&COUNT) VALUE(0)
COND(LOOP = 'Y')
VAR(&COUNT) VALUE(&COUNT + 1)

/*--------------------------------------------------------*/
/* Loops ..
*/
/* DOWHILE : DOUNTIL : DOFOR
*/
/* each support
*/
/* LEAVE : ITERATE
*/
/* -> CASE
*/
/* SELECT : WHEN : OTHERWISE : ENDSELECT
*/
/* 25 Level nesting supported
*/
/*--------------------------------------------------------*/
SELECT
WHEN
ITERATE
ENDDO

COND(&COUNT *LE 5) THEN(DO)

OTHERWISE CMD(DO)
leave
ENDDO
endSelect
enddo
/*--------------------------------------------------------*/
/* DOFOR:
*/
/* BY left blank defaults to 1
*/
/* VAR must be *INT or *UINT
*/
/* FROM and TO can be integer constants, expressions,
*/

/*
or variables
*/
/* BY must be an integer contant (may be negative)
*/
/*
*/
/* FROM/TO expressions are checked at loop initiation */
/*
TO evaluated after increment
*/
/*
*/
/* Checks for loop exit aat top of loop
*/
/*--------------------------------------------------------*/
DOFOR
leave
ENDDO

VAR(&INT2) FROM(1) TO(12) BY(2)

/*--------------------------------------------------------*/
/* LEAVE/ITERATE
*/
/* Leave defaults to current loop may be changed to
*/
/* any label. see example below
*/
/*--------------------------------------------------------*/
LOOP1:

DOFOR

VAR(&INT) FROM(0) TO(10)

LOOP2: DOUNTIL COND(&LGL)


IF COND(&NAME *EQ *NONE) THEN(LEAVE CMDLBL(LOOP1))
ENDDO /* DOUNTIL */
ENDDO /* DOFOR */

/*--------------------------------------------------------*/
/* Did someone say subroutines?
*/
/* IBM is looking to add SUBR, ENDSUBR and GOSUBR
*/
/*--------------------------------------------------------*/

endpgm

Você também pode gostar