The following table shows the free-form syntax for each operation code.
| Code | Free-Form Syntax |
|---|---|
| ACQ1 | ACQ{(E)} device-name workstn-file |
| BEGSR | BEGSR subroutine-name |
| CALLP | {CALLP{(EMR)}} name( {parm1{:parm2...}} ) |
| CHAIN | CHAIN{(ENHMR)} search-arg file-or-record-name {data-structure} |
| CLEAR | CLEAR {*NOKEY} {*ALL} name |
| CLOSE | CLOSE{(E)} file-name |
| COMMIT | COMMIT{(E)} {boundary} |
| DEALLOC 1 | DEALLOC{(EN)} pointer-name |
| DELETE | DELETE{(EHMR)} {search-arg} file-or-record-name |
| DOU | DOU{(MR)} indicator-expression |
| DOW | DOW{(MR)} indicator-expression |
| DSPLY | DSPLY{(E)} {message {message-queue {response}}} |
| DUMP1 | DUMP{(A)} {identifier} |
| ELSE | ELSE |
| ELSEIF | ELSEIF{(MR)} indicator-expression |
| ENDDO | ENDDO |
| ENDFOR | ENDFOR |
| ENDIF | ENDIF |
| ENDMON | ENDMON |
| ENDSL | ENDSL |
| ENDSR | ENDSR {return-point} |
| EVAL | {EVAL{(HMR)}} result = expression |
| EVALR | EVALR{(MR)} result = expression |
| EVAL-CORR | EVAL-CORR{(EH)} target-ds = source-ds |
| EXCEPT | EXCEPT {except-name} |
| EXFMT | EXFMT{(E)} format-name {data-structure} |
| EXSR | EXSR subroutine-name |
| FEOD | FEOD{(EN)} file-name |
| FOR | FOR{(MR)} index {= start} {BY increment} {TO|DOWNTO limit} |
| FORCE | FORCE file-name |
| IF | IF{(MR)} indicator-expression |
| IN 1 | IN{(E)} {*LOCK} data-area-name |
| ITER | ITER |
| LEAVE | LEAVE |
| LEAVESR | LEAVESR |
| MONITOR | MONITOR |
| NEXT1 | NEXT{(E)} program-device file-name |
| ON-ERROR | ON-ERROR {exception-id1 {:exception-id2...}} |
| OPEN | OPEN{(E)} file-name |
| OTHER | OTHER |
| OUT1 | OUT{(E)} {*LOCK} data-area-name |
| POST 1 | POST{(E)} {program-device} file-name |
| READ | READ{(EN)} file-or-record-name {data-structure} |
| READC | READC{(E)} record-name {data-structure} |
| READE | READE{(ENHMR)} search-arg|*KEY file-or-record-name {data-structure} |
| READP | READP{(EN)} name {data-structure} |
| READPE | READPE{(ENHMR)} search-arg|*KEY file-or-record-name {data-structure} |
| REL 1 | REL{(E)} program-device file-name |
| RESET 1 | RESET{(E)} {*NOKEY} {*ALL} name |
| RETURN | RETURN{(HMR)} expression |
| ROLBK | ROLBK{(E)} |
| SELECT | SELECT |
| SETGT | SETGT{(EHMR)} search-arg file-or-record-name |
| SETLL | SETLL{(EHMR)} search-arg file-or-record-name |
| SORTA | SORTA{(AD)} array-name or keyed-ds-array |
| TEST 1 | TEST{(EDTZ)} {dtz-format} field-name |
| UNLOCK 1 | UNLOCK{(E)} name |
| UPDATE | UPDATE{(E)} file-or-record-name {data-structure|%FIELDS(name{:name...})} |
| WHEN | WHEN{(MR)} indicator-expression |
| WRITE | WRITE{(E)} file-or-record-name {data-structure} |
| XML-INTO | XML-INTO{(EH)} target-or-handler xml-document |
| XML-SAX | XML-SAX{(E)} handler xml-document |
The next table is a summary of the specifications for each operation code in traditional syntax.