This appendix presents a working summary of the syntax for various commands covered in this book. This summary is neither the whole syntax for a command nor is it all the commands supported by COBOL; however, it is enough to work with the command. For a full description of the syntax, consult the manual for your COBOL compiler.
Syntax Term | Description |
... (ellipsis) | Indicates that the preceding item might be repeated a number of times. |
[ ] (brackets) | An optional clause in the syntax. |
| (vertical bar) | Two or more words separated by a vertical bar indicates that one of the values can be used. |
alphanumeric variable | An alphanumeric variable defined in WORKING-STORAGE |
arithmetic expression | An expression representing one or more addition, subtraction, multiplication, or division operations involving numeric values. |
condition | An expression representing one or more comparisons between values optionally joined by AND or OR. |
constant | For alphanumeric values, a set of characters enclosed in quotes, such as "ABC". For numeric values, an expression representing a number, such as 1296.54. |
do something | Any COBOL command. |
file-field-name | A COBOL variable that is a field in a record of a file described in an FD or SD (sort descriptor). |
file-name | The name of a file described in an FD. |
file-record | A COBOL variable that is the record of a file described in an FD. |
index | A variable defined in WORKING-STORAGE used as an index for a table or array. |
mode | One of the four open modes for a file: OUTPUT, EXTEND, I-O, or INPUT. |
numeric value | A numeric constant or a numeric variable. |
numeric variable | A numeric variable defined in WORKING-STORAGE. |
paragraph | A paragraph name in the COBOL program. |
procedure | A paragraph or section. |
program-name | A COBOL program name. |
sort-file | The name of a file described in an SD. |
value | A constant or a variable. |
variable | A variable defined in WORKING-STORAGE. |
The following syntax might not exactly match your chosen compiler. You should consult the COBOL reference manual distributed with your compiler.
Syntax:
ACCEPT variable [WITH CONVERSION] ACCEPT variable [CONVERT]
Some versions of COBOL do not use the WITH CONVERSION or CONVERT option.
Examples:
ACCEPT NUMERIC-ENTRY-FIELD WITH CONVERSION ACCEPT ENTRY-FIELD
Syntax:
ADD numeric value TO numeric value GIVING variable [ROUNDED] [ ON SIZE ERROR
do something ]
ADD numeric value TO numeric variable [ROUNDED] [ ON SIZE ERROR
do something ]
Examples:
ADD 17.5 TO THE-VALUE GIVING THE-SUM ROUNDED ON SIZE ERROR
DISPLAY "Add - overflow" ADD 1.17 TO THE-VALUE ROUNDED ON SIZE ERROR
DISPLAY "Add - overflow"
Syntax:
BEGIN TRANSACTION REWRITE file-record [ INVALID KEY do something ] [ REWRITE file-record [ INVALID KEY do something ] ] COMMIT|ROLLBACK TRANSACTION
Examples:
BEGIN TRANSACTION REWRITE VENDOR-RECORD INVALID KEY MOVE "E" TO TRANSACTION-FLAG WRITE VENDOR-LOG-RECORD INVALID KEY MOVE "E" TO TRANSACTION-FLAG IF TRANSACTION-FLAG = "E" ROLLBACK TRANSACTION ELSE
COMMIT TRANSACTION
Syntax:
CALL "program-name" CALL "program-name" USING variable . . .
Examples:
CALL "VNDRPT03"
CALL "MYPROG" USING NUMERIC-DATA, DATE-FIELD.
Syntax:
CLOSE file-name
Examples:
CLOSE PHONE-FILE
Syntax:
COMPUTE numeric variable [ROUNDED] = arithmetic expression [ ON SIZE ERROR
do something else ]
Examples:
COMPUTE THE-RESULT ROUNDED = (BASE-VALUE * 10) + (A-VALUE / 50) ON SIZE ERROR DISPLAY "Warning Size error."
Syntax:
COPY "filename.ext".
Examples:
COPY "FDVENDOR.CBL".
Syntax:
DELETE file-name RECORD [ INVALID KEY so something ]
Examples:
DELETE VOUCHER-FILE RECORD INVALID KEY DISPLAY "ERROR DELETING"
Syntax:
DISPLAY value
Examples:
DISPLAY "HELLO WORLD". DISPLAY ERROR-MESSAGE.
Syntax:
DIVIDE value INTO variable [ROUNDED] [ ON SIZE ERROR do something ] DIVIDE value BY value GIVING variable [ROUNDED] [ ON SIZE ERROR do something ] DIVIDE value BY value GIVING variable [ROUNDED] REMAINDER variable [ ON SIZE ERROR do something ] DIVIDE value INTO value GIVING variable [ROUNDED] [ ON SIZE ERROR do something ] DIVIDE value INTO value GIVING variable [ROUNDED] REMAINDER variable [ ON SIZE ERROR do something ]
Examples:
DIVIDE 56.2 INTO THE-VALUE ROUNDED ON SIZE ERROR DISPLAY "Divide-error" DIVIDE 56.2 BY THE-VALUE GIVING THE-QUOTIENT ROUNDED ON SIZE ERROR DISPLAY "Divide-error" DIVIDE 15 BY 7 GIVING THE-QUOTIENT ROUNDED REMAINDER THE-REMAINDER ON SIZE ERROR DISPLAY "Divide-error" DIVIDE 56.2 INTO THE-VALUE GIVING THE-QUOTIENT ROUNDED ON SIZE ERROR DISPLAY "Divide-error" DIVIDE 15 INTO THE-VALUE GIVING THE-QUOTIENT ROUNDED REMAINDER THE-REMAINDER ON SIZE ERROR DISPLAY "Divide-error"
Syntax:
EXIT PROGRAM
Examples:
PROGRAM-EXIT. EXIT PROGRAM.
Syntax:
GO TO paragraph
Examples:
GO TO PROGRAM-EXIT.
Syntax:
IF condition do something do something ELSE do something
Examples:
IF RECORD-FOUND = "N" DISPLAY "RECORD NOT FOUND" MOVE "ERROR" TO ERROR-CODE ELSE PERFORM DISPLAY-RECORD
Syntax:
INSPECT variable CONVERTING compare list TO replace list
Examples:
INSPECT ENTRY-FIELD CONVERTING LOWER-ALPHA TO UPPER-ALPHA
Syntax:
MOVE value TO variable [variable . . .]
Examples:
MOVE 19 TO THE-VALUE ANOTHER-VALUE YET-ANOTHER-VALUE
Syntax:
MULTIPLY value BY variable [ROUNDED] [ ON SIZE ERROR do something ]
MULTIPLY value BY value GIVING variable [ROUNDED] [ ON SIZE ERROR do something ]
Examples:
MULTIPLY 1.17 BY THE-VALUE ROUNDED ON SIZE ERROR
DISPLAY "Multiply-overflow" MULTIPLY 17.5 BY THE-VALUE GIVING THE-PRODUCT ROUNDED ON SIZE ERROR DISPLAY "Multiply-overflow"
Syntax:
OPEN mode file-name
Examples:
OPEN OUTPUT PHONE-FILE OPEN EXTEND PHONE-FILE OPEN INPUT PHONE-FILE OPEN I-O PHONE-FILE
Syntax:
PERFORM paragraph VARYING variable FROM value BY value UNTIL condition PERFORM paragraph PERFORM paragraph value TIMES PERFORM paragraph UNTIL condition
Examples:
PERFORM CALCULATE-AND-DISPLAY VARYING THE-MULTIPLIER FROM INITIAL-VALUE BY 1 UNTIL THE-MULTIPLIER > 12. PERFORM CALCULATE-AND-DISPLAY PERFORM CALCULATE-AND-DISPLAY 12 TIMES PERFORM CALCULATE-AND-DISPLAY THE-COUNT TIMES PERFORM CALCULATE-AND-DISPLAY UNTIL THE-MULTIPLIER > 12
Syntax:
READ file-name [NEXT] RECORD AT END do something
For a SEQUENTIAL file, READ and READ NEXT RECORD are identical:
READ file-name RECORD INVALID KEY do something
Examples:
READ PHONE-FILE NEXT RECORD AT END MOVE "Y" TO END-OF-FILE READ VENDOR-FILE RECORD INVALID KEY MOVE "N" TO RECORD-FOUND.
Syntax:
REWRITE file-record [ INVALID KEY do something ]
Examples:
REWRITE VENDOR-RECORD INVALID KEY DISPLAY "REWRITE ERROR"
Syntax:
SEARCH table name [AT END do something ] WHEN condition do something
Examples:
SET STATE-INDEX TO 1. SEARCH TABLE-STATE-RECORD AT END PERFORM SEARCH-FAILED WHEN VENDOR-STATE = TABLE-STATE-CODE(STATE-INDEX) PERFORM SEARCH-SUCCEEDED
Syntax:
SET index UP|DOWN BY value SET index variable TO value
Examples:
SET STATE-INDEX UP BY 1. SET STATE-INDEX DOWN BY LAST-VALUE. SET STATE-INDEX TO 1 SET STATE-INDEX TO LAST-VALUE.
Syntax:
SORT sort-file ON ASCENDING KEY sort-field USING input-file GIVING output-file
Examples:
SORT SORT-FILE ON ASCENDING KEY SORT-DATE USING VOUCHER-FILE GIVING WORK-FILE.
Syntax:
START file name KEY NOT < key name [ INVALID KEY do something ]
START file name KEY > key name [ INVALID KEY do something ] START file name KEY EQUALS|NOT <|GREATER THAN key name [ INVALID KEY do something ]
Examples:
MOVE SPACE TO VENDOR-NAME. START VENDOR-FILE KEY NOT < VENDOR-NAME INVALID KEY MOVE "Y" TO FILE-AT-END. MOVE "AZZZZZZZZZZZZZZZZZZZ" TO VENDOR-NAME. START VENDOR-FILE KEY > VENDOR-NAME INVALID KEY MOVE "Y" TO FILE-AT-END. MOVE "JONES AND SONS" TO VENDOR-NAME. START VENDOR-FILE KEY EQUALS VENDOR-NAME INVALID KEY MOVE "N" TO RECORD-FOUND. MOVE SPACE TO VENDOR-NAME. START VENDOR-FILE KEY NOT < VENDOR-NAME INVALID KEY MOVE "N" TO RECORD-FOUND.
Syntax:
SUBTRACT value FROM variable [ROUNDED] [ ON SIZE ERROR do something ] SUBTRACT value FROM value GIVING variable [ROUNDED] [ ON SIZE ERROR do something ]
Examples:
SUBTRACT 1.17 FROM THE-VALUE ROUNDED ON SIZE ERROR DISPLAY "Subtract - overflow" SUBTRACT 17.5 FROM THE-VALUE GIVING THE-SUM ROUNDED ON SIZE ERROR DISPLAY "Subtract-overflow"
Syntax:
WRITE file-record [FROM variable] [ INVALID KEY do something] WRITE file-record AFTER|BEFORE ADVANCING PAGE|value LINES
Examples:
WRITE PHONE-RECORD WRITE PHONE-RECORD FROM WORK-DATA WRITE VENDOR-RECORD INVALID KEY MOVE "Y" TO DUPLICATE-FLAG WRITE PRINTER-RECORD BEFORE ADVANCING 1 LINE WRITE PRINTER-RECORD AFTER ADVANCING PAGE
© Copyright, Macmillan Computer Publishing. All rights reserved.