Sign in

docs RPG Reference

Operation Codes

Operation Codes

Operation Codes

The following table shows the free-form syntax for each operation code.

  • Extenders

    (A) : Always perform a dump, even if DEBUG(*NO) is specified

    (A) : Sort ascending

    (C) : Only handle exceptions sent to the current procedure for ON-EXCP

    (D) : Pass operational descriptors on bound call

    (D) : Date field

    (D) : Sort descending

    (E) : Error handling

    (H) : Half adjust (round the numeric result)

    (M) : Default precision rules

    (N) : Do not lock record

    (N) : Set pointer to *NULL after successful DEALLOC

    (N) : Do not force data to non-volatile storage

    (P) : Pad the result with blanks or zeros

    (R) : “Result Decimal Position” precision rules

    (T) : Time field

    (Z) : Timestamp field

Table 1. Operation Codes in Free-Form Syntax

CodeFree-Form Syntax
ACQ1ACQ{(E)} device-name workstn-file
BEGSRBEGSR subroutine-name
CALLP{CALLP{(EMR)}} name( {parm1{:parm2…}} )
CHAINCHAIN{(ENHMR)} search-arg file-or-record-name {data-structure}
CLEARCLEAR {*NOKEY} {*ALL} name
CLOSECLOSE{(E)} file-name
COMMITCOMMIT{(E)} {boundary}
DATA-GENDATA-GEN{(EH)} source document parser
DATA-INTODATA-INTO{(EH)} target-or-handler document parser
DEALLOC 1DEALLOC{(EN)} pointer-name
DELETEDELETE{(EHMR)} {search-arg} file-or-record-name
DOUDOU{(MR)} indicator-expression
DOWDOW{(MR)} indicator-expression
DSPLYDSPLY{(E)} {message {message-queue {response}}}
DUMP1DUMP{(A)} {identifier}
ELSEELSE
ELSEIFELSEIF{(MR)} indicator-expression
ENDDOENDDO
ENDFORENDFOR
ENDIFENDIF
ENDMONENDMON
ENDSLENDSL
ENDSRENDSR {return-point}
EVAL{EVAL{(HMR)}} result = expression
EVALREVALR{(MR)} result = expression
EVAL-CORREVAL-CORR{(EH)} target-ds = source-ds
EXCEPTEXCEPT {except-name}
EXFMTEXFMT{(E)} format-name {data-structure}
EXSREXSR subroutine-name
FEODFEOD{(EN)} file-name
FORFOR{(MR)} index {= start} {BY increment} {TO
FOR-EACHFOR-EACH{(H)} item IN array
FORCEFORCE file-name
IFIF{(MR)} indicator-expression
IN 1IN{(E)} {*LOCK} data-area-name
ITERITER
LEAVELEAVE
LEAVESRLEAVESR
MONITORMONITOR
NEXT1NEXT{(E)} program-device file-name
ON-ERRORON-ERROR {exception-id1 {:exception-id2 …}}
ON-EXITON-EXIT {status}
OPENOPEN{(E)} file-name
OTHEROTHER
OUT1OUT{(E)} {*LOCK} data-area-name
POST 1POST{(E)} {program-device} file-name
READREAD{(EN)} file-or-record-name {data-structure}
READCREADC{(E)} record-name {data-structure}
READEREADE{(ENHMR)} search-arg
READPREADP{(EN)} name {data-structure}
READPEREADPE{(ENHMR)} search-arg
REL 1REL{(E)} program-device file-name
RESET 1RESET{(E)} {*NOKEY} {*ALL} name
RETURNRETURN{(HMR)} expression
ROLBKROLBK{(E)}
SELECTSELECT
SETGTSETGT{(EHMR)} search-arg file-or-record-name
SETLLSETLL{(EHMR)} search-arg file-or-record-name
SORTASORTA{(AD)} array-name or keyed-ds-array
TEST 1TEST{(EDTZ)} {dtz-format} field-name
UNLOCK 1UNLOCK{(E)} name
UPDATEUPDATE{(E)} file-or-record-name {data-structure
WHENWHEN{(MR)} indicator-expression
WRITEWRITE{(E)} file-or-record-name {data-structure}
XML-INTOXML-INTO{(EH)} target-or-handler xml-document
XML-SAXXML-SAX{(E)} handler xml-document

Note:

  1. Complex-qualified names are not allowed for this operation code.

The next table is a summary of the specifications for each operation code in traditional syntax.

  • An empty column indicates that the field must be blank.

  • All underlined fields are required.

  • An underscored space denotes that there is no resulting indicator in that position.

  • Symbols

    : Plus

    : Minus

  • Extenders

    (A) : Always perform a dump, even if DEBUG(*NO) is specified

    (A) : Sort ascending

    (D) : Pass operational descriptors on bound call

    (D) : Date field

    (D) : Sort descending

    (E) : Error handling

    (H) : Half adjust (round the numeric result)

    (M) : Default precision rules

    (N) : Do not lock record

    (N) : Set pointer to *NULL after successful DEALLOC

    (P) : Pad the result with blanks or zeros

    (R) : “Result Decimal Position” precision rules

    (T) : Time field

    (Z) : Timestamp field

  • Resulting indicator symbols

    BL : Blank(s)

    BN : Blank(s) then numeric

    BOF : Beginning of the file

    EOF : End of the file

    EQ : Equal

    ER : Error

    FD : Found

    HI : Greater than

    IN : Indicator

    LO : Less than

    LR : Last record

    NR : No record was found

    NU : Numeric

    OF : Off

    ON : On

    Z : Zero

    ZB : Zero or Blank

Table 2. Operation Codes in Traditional Syntax

CodesFactor 1Factor 2Result FieldResulting Indicators
71-7273-7475-76
ACQ (E7)device-nameworkstn-fileER
ADD (H)AddendAddendSum+-Z
ADDDUR (E)Date/TimeDuration:Duration CodeDate/TimeER
ALLOC (E)LengthPointerER
ANDxxComparandComparand
BEGSRsubroutine-name
BITOFFBit numbersCharacter field
BITONBit numbersCharacter field
CABxxComparandComparandLabelHILOEQ
CALL (E)Program namePlist nameERLR
CALLB (D E)Procedure name or Procedure pointerPlist nameERLR
CALLP (E M/R)name{ (parm1 {:parm2 …}) }
CASxxComparandComparandSubroutine nameHILOEQ
CAT (P)Source string 1Source string 2:number of blanksTarget string
CHAIN (E N)search-argname (file or record format)data-structureNR2ER
CHECK (E)Comparator StringBase String:startLeft-most Position(s)ERFD2
CHECKR (E)Comparator StringBase String:startRight-most Position(s)ERFD2
CLEAR*NOKEY*ALLname (variable or record format)
CLOSE (E)file-name or *ALLER
COMMIT (E)boundaryER
COMP1ComparandComparandHILOEQ
DEALLOC (E/N)pointer-nameER
DEFINE*LIKEReferenced fieldDefined field
DEFINE*DTAARAExternal data areaInternal field
DELETE (E)search-argname (file or record format)NR2ER
DIV (H)DividendDivisorQuotient+-Z
DOStarting valueLimit valueIndex value
DOU (M/R)indicator-expression
DOUxxComparandComparand
DOW (M/R)indicator-expression
DOWxxComparandComparand
DSPLY (E)4messagemessage-queueresponseER
DUMP (A)identifier
ELSE
ELSEIF (M/R)indicator-expression
ENDIncrement value
ENDCS
ENDDOIncrement value
ENDFOR
ENDIF
ENDMON
ENDSL
ENDSRlabelreturn-point
EVAL (H M/R)Result = Expression
EVALR (M/R)Result = Expression
EVAL-CORREVAL-CORR target-ds = source-ds
EXCEPTexcept-name
EXFMT (E)Record format-namedata-structureER
EXSRsubroutine-name
EXTRCT (E)Date/Time:Duration CodeTarget FieldER
FEOD (EN)file-nameER
FORIndex-name = start-value BY increment TODOWNTO limit
FORCEfile-name
GOTOLabel
IF (M/R)indicator-expression
IFxxComparandComparand
IN (E)*LOCKdata-area-nameER
ITER
KFLDKey field
KLISTKLIST name
LEAVE
LEAVESR
LOOKUP1 (array)Search argumentArray nameHILOEQ6
LOOKUP1 (table)Search argumentTable nameTable nameHILOEQ6
MHHZOSource fieldTarget field
MHLZOSource fieldTarget field
MLHZOSource fieldTarget field
MLLZOSource fieldTarget field
MONITOR
MOVE (P)Data AttributesSource fieldTarget field+-ZB
MOVEA (P)SourceTarget+-ZB
MOVEL (P)Data AttributesSource fieldTarget field+-ZB
MULT (H)MultiplicandMultiplierProduct+-Z
MVRRemainder+-Z
NEXT (E)program-devicefile-nameER
OCCUR (E)Occurrence valueData structureOccurrence valueER
ON-ERRORStatus codes
ON-EXITStatus
OPEN (E)file-nameER
ORxxComparandComparand
OTHER
OUT (E)*LOCKdata-area-nameER
PARMTarget fieldSource fieldParameter
PLISTPLIST name
POST (E)3program-devicefile-nameINFDS nameER
READ (E N)name (file or record format)data- structureEREOF5
READC (E)record-namedata- structureEREOF5
READE (E N)search-argname (file or record format)data- structureEREOF5
READP (E N)name (file or record format)data- structureERBOF5
READPE (E N)search-argname (file or record format)data- structureERBOF5
REALLOC (E)LengthPointerER
REL (E)program-devicefile-nameER
RESET (E)*NOKEY*ALLname (variable or record format)ER
RETURN (H M/R)Expression
ROLBK (E)ER
SCAN (E)Comparator string:lengthBase string:startLeft-most position(s)ERFD2
SELECT
SETGT (E)search-argname (file or record format)NR2ER
SETLL (E)search-argname (file or record format)NR2EREQ6
SETOFF1OFOFOF
SETON1ONONON
SHTDNON
SORTA (A/D)array-name or keyed-ds-array
SQRT (H)ValueRoot
SUB (H)MinuendSubtrahendDifference+-Z
SUBDUR (E) (duration)Date/Time/ TimestampDate/Time/TimestampDuration: Duration CodeER
SUBDUR (E) (new date)Date/Time/ TimestampDuration:Duration CodeDate/Time/ TimestampER
SUBST (E P)Length to extractBase string:startTarget stringER
TAGLabel
TEST (E)8Date/Time or Timestamp FieldER
TEST (D E)8Date FormatCharacter or Numeric fieldER
TEST (E T)8Time FormatCharacter or Numeric fieldER
TEST (E Z)8Timestamp FormatCharacter or Numeric fieldER
TESTB1Bit numbersCharacter fieldOFONEQ
TESTN1Character fieldNUBNBL
TESTZ1Character fieldAIJRXX
TIMETarget field
UNLOCK (E)name (file or data area)ER
UPDATE (E)name (file or record format)data- structureER
WHEN (M/R)indicator-expression
WHENxxComparandComparand
WRITE (E)name (file or record format)data- structureEREOF5
XFOOT (H)Array nameSum+-Z
XLATE (E P)From:ToString:startTarget StringER
XML-INTOXML-INTO target-or-handler xml-document
XML-SAXXML-SAX{(E)} handler xml-document
Z-ADD (H)AddendSum+-Z
Z-SUB (H)SubtrahendDifference+-Z
Note: 1. At least one resulting indicator is required. 2. The %FOUND built-in function can be used as an alternative to specifying an NR or FD resulting indicator. 3. You must specify factor 2 or the result field. You may specify both. 4. You must specify factor 1 or the result field. You may specify both. 5. The %EOF built-in function can be used as an alternative to specifying an EOF or BOF resulting indicator. 6. The %EQUAL built-in function can be used to test the SETLL and LOOKUP operations. 7. For all operation codes with extender ‘E’, either the extender ‘E’ or an ER error indicator can be specified, but not both. 8. You must specify the extender ‘E’ or an error indicator for the TEST operation.