Upload
buithien
View
231
Download
0
Embed Size (px)
Citation preview
Appendix A: COBOL 85 Language Formats
These formats on the following pages represent the full 1985 American National Standard (ANS) for COBOL.
The rules for interpreting the formats are as follows
(a) All underlined upper-case words are required when the functions of which these are a part are used. Upper-case words which are not underlined are optional.
(b) Lower-case words are generic terms used to represent such entities as words, literals, etc.
(c) Brackets, [J, enclose a selection of options, one (and only one) or none of which may be chosen.
(d) Braces, {}, enclose a selection of options, one (and only one) of which must be chosen.
(e) An ellipsis, ... , indicates that the position of the format immediately on its left may be repeated.
GE~ERAL FORMAT FOR IDENTIFICATION DIVISION
IDENTIFICATIOK DIVISION.
PROGRAN- ID. program-name [IS {I ~~~~~~L t} PROGRA'1 J . [AUTHOR. [comment-entry] ... ]
[INSTALLATION. [coll1I:lent-entry]
[DATE-HRITTEX. [comment-en try]
[DATE-CO~~ILID. [comment-entry] , ..
[SECURITY. [conment-entry] ... ]
240
Appendix A: COBOL 85 Language Formats 241
GENERAL FORMAT FOR ENVIRONMENT DIVISION
(ENVIRONMENT DIVISION.
(CONFIGURATION SECTION.
(SOURCE-COMPUTER. [computer-name (WITH DEBUGGI~G NODE].]]
[OBJECT-COMPUTER. [computer-name
~'!EMORY SIZE integer-1 j=CTERSfl] L lMoDULES
[PROGRAN COLLATING SEQUENCE IS alphabet-name-1]
(SEGHENT-LHIIT IS segment-number].]]
(SPECIAL-NANES. [( imp1ementor-name-1
liS rrmemonic-name-1 (QN STATUS IS condit~on-name-1 [OFF STATUS IS
IS mnemon~c-name-2 [OFF STATUS IS conditJ.on-name-2 [QN STATUS IS
QN STATUS IS condition-name-1 [OFF STATL'S IS condition-name-2]
OFF STATUS IS condition-name-2 [Qli STATUS IS condition-name-1]
[ALPHABET alphabet-name~1 IS
STANDARD-1 STANDARD-2 NATIVE implementor-name-2 I
THRU f 11tera1-2 \ [{THROUGH) . l) l 'ALSO literal-3) . . . ( ...
condition-name-1] ]~
condition-name-2] l)l ~ ...
[sYMBOLIC CHARACTERS {{{symbolic-character-1' ... {!;E} {integer-1} ... } ...
[IN a1phabet-name-2]} J
[cLASS c1ass-name-1 IS {1iteral-4
[CURRENCY SIGN IS 1iteral-6]
[DECIMAL-POINT IS COMMA].]]]
[{ THROUGH} . J } ] TI!RU htera1-5 . . • . •.
242 COBOL 85 Programming
GENERAL FORMAT FOR ENVIRONMENT DIVISION
[INPUT-OUTPUT SECTION.
FILE-CONTROL.
{file-control-entry:·
[I -0-CONTROL.
[[- [~ { file-name-1 }] impl emer. tor-name-1
EVERY
j [END OF] UNIT . OF l. {REEL} I ) integer-1 RECORDS'
integer-2 CLOCK-UNITS condition-name-1
[ SAME [~~~RD ] AREA FOR file-name-3 { file-name-4) ... ] ... SORT -~IERGE
file-name-2 ~] ~ ...
[MULTIPLE FILE TAPE CONTAINS {file-name-S [POSITION integer-3]) ... ] .... ] ] ] ]
Appendix A: COBOL 85 Language Formats 243
GENERAL FORMAT FOR FILE CONTROL ENTRY
SEQUENTIAL FILE:
SELECT [OPTIONAL] file-name-1
ASSIGN TO {i~p1ementor-name-1} --- 1~tera1-1
[RESERVE integer-1 [!::s J J ([ORGANIZATION IS] SEQUENTIAL]
[ PADDING CHARACTER IS {data-name-1}] 1itera1-2
[ RECORD DELIMITER IS {STANDARD-1 }] ----- imp1ementor-name-2
[ACCESS MODE IS SEQUENTIAL]
[FILE~ IS data-name-2].
RELATIVE FILE:
SELECT [OPTIONAL] file-name-1
ASSIGN TO {i~p1ementor-name-1} --- 1~tera1-1
[RESERVE integer-1
[ORGANIZATION IS]
[AREA]] AREAS
RELATIVE
[ "'"" ''"" " [FILE STATUS IS
I SEQUENTIAL
{ RANDOM } DYNAMIC
' data-name-2].
[RELATIVE KEY IS data-name-1]}]
RELATIVE KEY IS data-name-1
244 COBOL 85 Programming
GENERAL FORMAT FOR FILE CONTROL ENTRY
INDEXED FILE:
SELECT [OPTIONAL) fi1e-name-1
ASSIGN TO {i~p1ementor-name-1} --- 1Hera1-1
[RESERVE integer-1 [~~~S J J [ORGANIZATION IS) INDEXED
[ {SEQUENTIAL'}]
ACCESS HODE IS RANDOM DYNAMIC
~ KEY IS data-name-1
[ALTERNATE RECORD KEY IS data-name-2 [HITH DUPLICATES)) •••
[FILE STATUS IS data-name-3).
SORT OR MERGE FILE:
SELECT fi1e-name-1 ASSIGN TO { imp1ementor-name-1} li tera1-1
Appendix A: COBOL 85 Language Formats 245
GENERAL FORMAT FOR FILE CONTROL ENTRY
REPORT FILE:
SELECT [OPTIONAL] file-name-1
ASSIGN TO {implementor-name-!} --- literal-!
[RESERVE integer-! [~]] ([ORGANIZATION IS] SEQUENTIAL]]
[PADDING CHARACTER IS {data-name-1}] literal-2
~RECORD DELIMITER IS {STANDARD-! }] L--- implementor-name-2
[ACCESS MODE IS SEQUENTIAL]
[FILE STATUS IS data-name-2].
246 COBOL 85 Programming
GENERAL FORMAT FOR DATA DIVISION
(DATA DIVISION.
[FILE SECTION.
[file-description-entry {record-description-entry} ... sort-merge-file-description-entry {record-description-entry} report-file-description-entry
[WORKING-STORAGE SECTION.
[ 77-level-description-entry J ... J record-description-entry
[Lim<AGE SECTION.
[77-levdedl-des:ri~tion-entry J ... J recor - escrlptlon-entry
[COMMUNICATION SECTION.
. .. ] ... ]
[communication-description-entry [record-description-entry] ... ) ... )
(REPORT SECTION.
[report-description-entry {report-group-description-entry} ... ) ... )]
Appendix A: COBOL 85 Language Formats 247
GENERAL FORMAT FOR FILE DESCRIPTION ENTRY
SEQUENTIAL FILE:
Ell. file-name-1
[IS EXTERNAL)
[IS GLOBAL)
[BLOCK CONTAINS [integer-! IQ) integer-2 { RECORDS }] CHARACTERS
RECORD IS ~ IN SIZE [[FROM integer-4] [IQ integer-S) f lCONTAINS integer-3 CHARACTERS
[DEPENDING ON data-name-1)
CONTAINS integer-6 IQ integer-? CHARACTERS
[LABEL {:~g:S I~} {~}] [-vALUE Qf {implementor-name-! IS {'data-name-2}. }
literal-1
r, {RECORD IS } lDATA RECORDS ARE {data-name-3} .•. J
... ]
rLINAGE IS {data-name-4} LINES [WITH FOOTI~G AT {~ata-naille-S}] l integer-S --- 1nteger-9
[LINES AT TOP {data-name•6}1 [LINES AT BOTTON {~ata-name-?}] J - integer-10 J --- 1nteger-ll
[CODE-SET IS alphabet-name-!).
248 COBOL 85 Programming
GENERAL FORMAT FOR FILE DESCRIPTION ENTRY
RELATIVE FILE :
FD file-name-1
[IS EXTERNAL]
[IS GLOBAL]
[BLOCK CONTAINS [integer-1 IQ] integer-2 {~~~iERS}]
[RECORD l ~~N~:~~~N~n~:g::~~ ~~:~T~::eger-4] [IQ integer-S] CHARACTERS ]ll --- [DEPENDING ON data-name-1]
CONTAINS integer-6 IQ integer-7 CHARACTERS
h f RECORD IS } {'STANDARD},] lLABEL t RECORDS ARE OHITTED
[; { , {data-name-2}, } LVALUE QE ~mp1ementor-name-1 IS 1itera1 _1 ... ] h {RECORD IS .} , J lllATA RECORDS ARE {data-name-3; • . • .
Appendix A: COBOL 85 Language Formats 249
GENERAL FORMAT FOR FILE DESCRIPTION ENTRY
INDEXED FILE :
rn file-name-1
[IS EXTERNAL]
[IS GLOBAL]
[BLOCK CONTAINS (integer-1 TO] integer-2 {RECORDS l] CHARACTERS f
RECORD IS VARYING IN SIZE [[FROM integer-4] [IQ integer-S] [ ICONTAINS integer-3 CHARACTERS
--- [DEPENDING ON data-name-1]
CONTAINS integer-6 IQ integer-7 CHARACTERS
[LABEL { ~~~:S I!RE} { ;~~~~} J [vALUE Q[ {imp1ementor-name-1 IS { data-name-2}}
litera1-1
r {'RECORD IS } LDATA RECORDS ARE (data-name-3) ... ] .
.. ·]
250 COBOL 85 Programming
GENERAL FORMAT FOR FILE DESCRIPTION ENTRY
SORT NERGE FILE:
Sl) f ile-name-1
l CONTAINS integer-1 CHARACTERS ll IS VARYING IN SIZE ((FROM integer-2) [IQ integer-3] Ca\RACTERS)
(DEPENDING ON data-name-1)
CONTAINS integer-4 IQ integer-S CHARACTERS
[DATA {~ I!ru:} {data-name-2} ..• J
REPORT FILE:
FD file-name-1
[IS EXTERNAL)
(IS GLOBAL)
[BLOCK CONTAINS (integer-1 IQ) integer-2 {~~iERs}]
[RECORD {CONTAINS integer-3 CHARACTERS }] CONTAINS integer-4 IQ integer-S CHARACTERS
r.LABEL {RECORD IS } {STANDARD}] L RECORDS ARE OMITTED
[vALUE OF { imp1ementor-name-1 IS {~~~:~:~:~-l} ~ ... J (CODE-SET IS a1phabet-name-1)
jREPORT IS } , REPORTS ARE {report-name-1; t--
Appendix A: COBOL 85 Language Formats 251
GENERAL FORMAT FOR DATA DESCRIPTION ENTRY
FORNAT 1:
level-number [data-name-1] FILLER
[REDEFINES data-name-2]
[IS EXTERNAL]
[IS GLOBAL]
[ { ~~~TURE} IS character-string]
l BINARY ll =UTATIONAL
DISPLAY INDEX PACKED-.DEC !MAL
[[SIGN IS] {LEADING t J TRAIUNGj [SEPARATE CHARACTER]
OCCURS integer-2 TIMES
[{ASCENDING } KEY IS {data-name-3} ... J ... DESCENDING
[INDEXED BY {index-name-L . . . ]
OCCURS integer-1 TO integer-2 THIES DEPE:\DING ON data-name-~
[{ASCENDING } KEY IS (data-name-3:' ... J ... DESCENDING
[ I.NilEX£ll BY { index-name-1 ·. . . . ]
[{ SYNCHRONIZED} [LEFT J J SYNC RIGHT
[{JUSTIFIED l RIGHT] J..l.lli.I J
[BLANK HHEN ZERO]
[VALUE IS literal-1].
252 COBOL 85 Programming
GENERAL FORMAT FOR DATA DESCRIPTION ENTRY
FORMAT 2:
66 data-narne-1 ~ data-narne-2 [{~~~~UGH} data-narne-3 J
FORJ>!AT 3:
88 condition-narne-1 { VALUE IS } { . [{THROUGH} . J } VALUES ARE 1~tera1-1 THRU 1~tera1-2 ...
FORMAT 1:
CD cd -name-1
Appendix A: COBOL 85 Language Formats 253
GENERAL FORMAT FOR COMMUNICATION DESCRIPTION ENTRY
[ [SYNBOLIC QUEUE IS data-name-1] l [SY}ffiOLIC SUB-QUEUE-1 IS data-name-2]
[SY}ffiOLIC SUB-QUEUE-2 IS data-natne-3]
[STI·ffiOLIC SUB-QUEUE-3 IS data-name-4]
[~ffiSSAGE DATE IS data-name-5]
[}ffiSSAGE TIME IS data-name-6]
[SYMBOLIC SOURCE IS data-name-7]
FOR [INITIAL] INPUT [TEXT LENGTH IS data-name-8]
[END KEY IS data-name-9]
[STATUS KEY IS data-name-10]
[MESSAGE COUNT IS data-name-11]]
[data-name-1, data-name-2, data-name-3,
data-name-4, data-name-5, data-name-6,
data-name-7, data-name-8, data-name-9,
data-name-10, data-name-11]
254 COBOL 85 Programming
GENERAL FORMAT FOR COMMUNICATION DESCRIPTION ENTRY
FORMAT 2:
CD cd-name-1 FOR OUTPUT
[DESTINATION COUNT IS data-name-1]
[TEXT LENGTH IS data-name-2]
[STATUS KEY IS data-name-3]
[DESTINATION TABLE OCCURS integer-1 TIMES
[INDEXED BY {index-name-1} ]]
[ERROR KEY IS data-name-4]
[SYMBOLIC DESTINATION IS data-name-S].
FORMAT 3:
CD cd-name-1
FOR [INITIAL]
'
[[MESSAGE DATE IS data-name-1] 1 [MESSAGE TIME IS data-name-2]
[SYMBOLIC TERMINAL IS data-name-3] ·1
1
i [TEXT LENGTH IS data-name-4] I
::::~:YK:: ::t::::::::~-6]] I
l' [data-name-1, data-name-2, data-name-3, j data-name-4, data-name-S, data-name-6]
Appendix A: COBOL 85 Language Formats 255
GENERAL FORMAT FOR REPORT DESCRIPTION ENTRY
RD report-name-1
[IS GLOBAL]
[CODE literal-1]
[{,CONTROL IS } {{data-name-1} ... CONTROLS ARE FINAL (data-name-1]
[ PAGE [LIMIT IS J integer-1 [LIXE J -- LIMITS ARE LIXES (HEADING integer-2]
[FIRST DETAIL integer-3] [LAST DETAIL integer-4]
[FOOTING integer-S]].
GENERAL FORMAT FOR REPORT GROUP DESCRIPTION ENTRY
FORMAT 1:
01 [data-name-1]
[LINE :-il}}IBER IS {. integer-1 [ON NEXT PAGE].l] PLUS integer-2 (
NEXT GROUP IS , PLUS in teger-4 [ !integer-3 /]
/NEXT PAGE f
TYPE IS
{~PORT HEADI::-lG}
{.!'AGE HEADING)
PH f { CONTROL HEADING} {data-name-2}
CH FI::AL
{~~TAIL}
{ ~~NTROL FOOTING}
{ PAGE FOOTING)_
ff J {~;PORT FOOTING}
{. data-name-3 }. FINAL
[ [l:SAGE IS] DISPLAY].
256 COBOL 85 Programming
GENERAL FORMAT FOR REPORT GROUP DESCRIPTION ENTRY
FORMAT 2:
level-number [data-name-1]
lLINE Nm!BER IS {integer-! (ON NEXT PAGE]}] L-- PLUS Integer-2
([USAGE IS] DISPLAY] •
FORMAT 3:
level-number (data-name-1]
{ PICTURE}' PIC IS character-string
((USAGE IS] DISPLAY]
[[ SIGN IS] {LEADING } SEPARATE CHARACTER] --' TRAILING
[ {=IFIED} RIGHT J (BLANK l.ffiEN ZERO]
lLI!'<E NID!BER IS {integ.::r-1 [ON NEXT PAGE]}] l-- PLUS mteger-2
(COLU}ffi NUMBER IS integer-3]
SOURCE IS identifier-!
VALUE IS literal-!
{SUM {identifier-2} [UPON {data-name-2} •.. ]} ...
[RESET ON { ~~~1~name-3 } J (GROUP INDICATE].
FORMAT 1:
Appendix A: COBOL 85 Language Formats 257
GENERAL FORMAT FOR PROCEDURE DIVISION
[PROCEDURE DIVISION [USinG {data-name-1} ,,, ],
[DECLARATIVE$.
{section-name ~ [segment-number].
USE statement.
[paragraph-name.
[sentence] ... ] .. . } ...
ID'ffi DECLARAIIVES. ]
{section-name SECTION [segment-number].
[paragraph-name.
[sentence] ... ] .. . } ... ]
FORMAT 2:
[PROCEDURE DIVISION [USING {data-name-1} ... ].
{paragraph-name.
[sentence] ... } •.• ]
258 COBOL 85 Programming
GENERAL FORMAT FOR COBOL VERBS
ACCEPT identifier-1 [FROH rnnernonic-narne-1]
ACCEPT identifier-2 FROH )~:OF-WEEK l l TIHE
ACCEPT cd-narne-1 MESSAGE COUNT
ADD {identifier-1} - litera1-1 TO {identifier-2 [ROUNDED]} ...
[ON SIZE ERROR irnperative-staternent-1]
[NQJ ON SIZE ERROR irnperative-staternent-2]
[END-ADD]
ADD {identifier-1} -- litera1-l
TO {i~entifier-2} htera1-2
GIVING {identifier-} [ROUNDED]) ...
[ON SIZE ERROR irnperative-staternent-1]
[NOT ON SIZE ERROR irnperative-staternent-2]
[END-ADD]
ADD {~ESPONDING} identifier-1 TO identifier-2 [ROUNDED]
[ON ~ ~ irnperative-staternent-1]
[NQI ON SIZE ERROR irnperative-statement-2]
[END-ADD]
ALTER {procedure-narne-1 IQ [PROCEED IQ] procedure-name-2) ...
CALL {identifier-!} [usiNG {[BY REFERENCE] {identifier-2} ... } J literal-! -- BY CONTENT {identifier-2} .. • "'
[ON OVERFLO\ol irnperative-staternent-1]
[END-CALL]
srv
C:...L
Appendix A: COBOL 85 Language Formats 259
GENERAL FORMAT FOR COBOL VERBS
CALL {i~entifier-1} 1ltera1-l [USING {[BY REFERENCE) {identifier-2} ···} J
-- BY CONTENT { identifier-2} . . . . ' '
[ON EXCEPTION imperative-statement-1)
[NOT ON EXCEPTION imperative-statement-2)
[END-CALL]
CANCEL {identifier-1} litera1-1
CLOSE ffH•-o•mo-1 [ {:;;;} '"""'""]] } IHTH {NO REIHcW} LOCK
CLOSE {fi1e-name-1 [WITH LOCK)} ...
COMPUTE {identifier-1 [ROUNDED)} ... arithmetic-expression-1
[ON SIZE ERROR imperative-statement-1)
[NOT ON SIZE ERROR imperative-statement-2)
[END-CONFUTE]
CONTINUE
DELETE fi1e-name-1 RECORD
[INVALID KEY imperative-statement-1]
[~ INVALID KEY imperative-statement-2)
[END-DELETE)
{INPUT [TERMINAL]}
DISABLE l=Q TERMINAL . OUTPUT
cd-name-1 [ WITH KEY {identifier-1}] -- literal-1
260 COBOL 85 Programming
{identifier-1l litera1-1 f
GENERAL FORMAT FOR COBOL VERBS
[UPON mnemonic-name-1] [\.JITH NO ADVANCI:-lG]
{identifier-1} DIVIDE 1itera1_1 ETO {identifier-2 [ROU01DED]; oo o
[0~ SIZE ERROR imperative-statement-1]
(~OT ON SIZE ERROR imperative-statement-2]
[E::D-DIVIDE]
{identifier-11 ~ INTO
litera1-1 f {identifier-2} litera1-2
GIVING i identifier-3 (ROU01DED]' .. o
[ON SIZE ERROR imperative-staternent-1]
[::or ON SIZE ERROR imperative-statement-2]
(DID-DIVIDE]
{ identifier-1} DIVIDE 1itera1-1 ~ {identifier-2}
literal-2
GIVI::iG ( identifier-3 [RQU::iD[D]:
[ON SIZE ERROR imperative-statement-1]
(NOT ON SIZE ERROR imperative-statement-2]
[E::iD-DIVIDE]
{identifier-1} litera1-1
REMAINDER identifier-4
{ identifier-2} litera1-2
[ON SIZE ERROR imperative-statement-1]
[::iOT ON SIZE ERROR imperative-statement-2]
( E:-ID-DIVIDE]
GIVING identifier-3 [ROU~~ED]
Appendix A: COBOL 85 Language Formats 261
GENERAL FORMAT FOR COBOL VERBS
{ identifier-!} literal-1
{ identifier-2} literal-2 GIVING identifier-3 [ROUNDED]
REMAINPER identifier-4
[ON ~ ~ imperative-statement-!]
[NOT ON ~ ~ imperative-statement-2]
[END-DIVIDE]
{INPUT (TERHINAL]}
ENABLE I=Q TERMINAL OUTPUT
cd-name-1 [wiTH KEY
ENTER language-name-! [routine-name-!].
}A:>Y condl.tlon-1 TRCE
[·"" lidentifier-2l] literal-2 expression-2 ••• TRUE FALSE
{ identifier-!}] literal-!
~ {
FALSE
[:Nl] ) {~~~:~~i:~r-J } [{THROUGH} ( arithmetic-express ion-1 THRU
{identifier-4 )]}'} li teral-4 \ ari thmetic-expression-2 J
[~
condition-2 IR.lLl; fA.IIT
FALSE identifier-S
[:>OT] literal-S { {.ri thmetic-expression-3}
imperative-statement-!} ...
[\.JHE~ OTHER imperative-statement-2 J
[ EeiD- EVALUATE J
[: Ull\Qllllli} {identifier-6 }] }J ]· · ·} · · · {I!!!\!! ari thme t ic-exoress ion-~ H U literal-6
262 COBOL 85 Programming
GENERAL FORMAT FOR COBOL VERBS
GENERATE {da ta-name-1 } report-name-1
GO TO [procedure-name-1]
gQ TO (procedure-name-1) ... DEPENDING ON identifier-1
. . {(statement-1 ) .. ·} {ELSE {statement-2) ... [END-IF]} lE cond1t1on-1 THEN NEXT SENTENCE ELSE NEXT SENTENCE
--- E~~-IF
INITIALIZE (identifier-1) ...
!!ALPHABETIC J ALPHANU!-!ERIC NU!-!ERIC ALPHANUMERIC-EDITED NU!-!ERIC-EDITED
DATA BY {identifier-2) ~ ] litera1-1 ff · · ·
INITIATE (report-name-1) ...
I:!SPECT identifi.er-L T_~~'I:\C.
INSPECT identif ier-l REPLACI;;G
( {identifier-5l [{BEFORE'} {'identifier-4}] } CHARACTERS ]!X literal-) f ;\FTER J~ITIAL literal-2 , ''
{\ALL I \{identifier-)}. , {identifier-S} [J ~}- J~:JTIAL {identifi~r-~(] ·ILEADI~G~· I literal-1 lil literdl-3 tAFTER llterJ.l-- f
FIRST
1 I ... j )
l ' .. (· ... ~
Appendix A: COBOL 85 Language Formats 263
GENERAL FORMAT FOR COBOL VERBS
INSPECT id~ntiiicr-1 TAI.LYl~G
ide~tHicr-:! FOR ) ).M:!.t.! ht(>r,,]-_ J l ( QWW;IW [' BI:FQRE} I~ITI,\L { i~<·nt if l~r-4\] .••
- }{MJ, d{i~entificr-3\ [JBt:fORt:} INITIAl. {identtrler-4\] •.• 1 { I,.F.,YHNG( f iiteral-1 _( )l!.IT.t.R. litcr.11-2 ( (
REPLACING
l .. J .. ... }
( CIIARACTF.RS BY {l~entifler-~( [JBEFtlRF.( I~ITI.U. {ldontlfler-4}] .•. ~· ' - literal-) f f,\rTER f litcral-2
} j;Yt\DING/ IJidentlfler-J} BY {-l~entifh-r-5( [{BF.fORE} INITIAl. {i~•·nt lfier-4}'] ... / ...... ( )£.l.RSJ 1 flliter:al-1 - lat~..·r.11-3 ( AfTf.R lah•raJ-:! (
INSPECT identifier-! CONVERTING {identifier-6} literal-4
[{BEFORE} INITIAL l AFTER {identifier-4}] literal-2
IQ. {identifier-7} literal-S
{ {ASCENDING } . MERGE file-name-1 ON DESCENDING KEY {data-name-1} ... } ...
(COLLATING SEOUENCE IS dlphabet-name-1)
~ file-name-2 {file-name-3} ...
s~ PROCEDURE IS procedure-name-! [{i~=~UGH} procedure-name-2]{
t~ (file-name-4) ... S
{identifier-!} ~ literal-! IQ {identifier-2} ...
HQY& {~ESPONDING} identifier-! IQ idcntificr-2
{ identifier-!} MULTIPLY literal-! ID:. {identificr-2 [~)} ...
[ON SIZE ERROR imperative-statement-!]
(NOT o:; SIZE ERROR il:lperativc-statemcnt-2]
264 COBOL 85 Programming
GENERAL FORMAT FOR COBOL VERBS
MULTIPLY { identifier-1} H1 litera1-1
{ identifier-2} litera1-2
GIVING {identifier-3 [ROUNDED]} o o o
[ON SIZE ERROR irnperative-staternent-1]
[NOT ON SIZE ERROR irnperative-staternent-2]
[END-MULTIPLY]
S OPEN
PI OPEN
{
{ 0 [REVERSED J } INPUT h1e-narne-1 WITH NQ REWIND o o o
OUTPUT {file-narne-2 [WITH NO REWIND]} o o o
I-0 {fi1e-narne-3} ooo
EXTEND {fi1e-narne-4}
{INPUT {file-narne-1} o o o }
0 0 0 OUTPUT {fi1e-narne-2} 000
I-0 {file-narne-3} oo o
EXTEND {fi1e-narne-4} oo 0
} ..
{ OUTPUT {file-narne-1 [WITH NO REWIND)} o o o }
~l OPEN EXTEND { file-name-2} . . . . ..
.E.!illiQill:! [procedure-narne-1 [{~:~~UGH} procedure-narne-2 J J [irnperative-staternent-1 END-PERFO&~J
PERFORH ~rocedure-narne-1 [{;:~~UGH} procedure-name-2] J {~dentifier- 1} TIHES [irnperative-statement-1 END-PERFORH] ~nteger-1
PERFORH [procedure-narne-1 [{~:UUGH} procedure-narne-2 J J [ WITH TEST {BEFORE}] UNTIL condition-1 -- AFTER
[imperative-staternent-1 END-PERFORM]
[wiTH
Appendix A: COBOL 85 Language Formats 265
GENERAL FORMAT FQR COBOL VERBS
[procedure-name-1
TEST {BEFORE}] -- AFTER
{ identifier-2} index-name-1
[{~~~gUGH} procedure-name-2] J
jidentifier-3} FROM lindex-name-2
~litera1-1
{, identifier-4} BY 1itera1_2 UNTIL condition-1
[ { .d .f. 5} {identifier-6} AFTER ~.entl 1=~r- FROM index-name-4
ltera 1itera1-3
BY {11·~enti1fie4r-7} UNTIL condition-2] - 1tera- --
[imperative-statement-1 END-PERFORM]
~ cd-name-1
SRI READ fi1e-name-1 [NEXT] RECORD [INTO identifier-1]
[AT END imperative-statement-1]
[NQI AT END imperative-statement-2]
[END-READ]
R READ fi1e-name-1 RECORD [INTO identifier-1]
[INVALID KEY imperative-statement-3]
[NQI INVALID KEY imperative-statement-4]
[END-READ]
266 COBOL 85 Programming
GENERAL FORMAT FOR COBOL VERBS
I READ file-name-1 RECORD (INTO identifier-!)
[K&X IS data-name-1]
[INVALID KEY imperative-statement-3)
(NOT INVALID KEY imperative-statement-4)
(END-REAP)
{MESSAGE} RECEIVE cd-name-1 SEGMENT INTO identifier-!
[NO DATA imperative-statement-!)
[WITH DATA imperative-statement-2)
[END-RECEIVE)
RELEASE record-name-1 [FROM identifier-!]
RETURN file-name-1 RECORn (INTO identifier-!)
AT END imperative-statement-!
[NQI AT END imperative-statement-2)
[END-RETURN)
S RH.'RITE record-name-1 [FROM identifier-!]
RI REWRITE record-name-1 [FROM identifier-!)
[INVALID KEY imperative-statement-1)
[NOT It\VALID KEY imperative-statement-2-)
[ EN!l- REI.TR ITE]
Appendix A: COBOL 85 Language Formats 267
GENERAL FORMAT FOR COBOL VERBS
SEARCH identifier-! [ VARYING {~dentifier-2 }] 1ndex-name-l
(AT END imperative-statement-!)
WHEN condition-! NEXT SENTENCE ... { { imperative-statement-2}}
(END-SEARCH)
SEARCH ALL identifier-! [AT END imperative-statement-!)
{d 1 { IS EQUAL TO}
ata-name-WHEN IS =
condit1on-name-l
[ { {IS ml1.lll,
data-name-2 IS =
Allil condition-name-2
{ imperative-statement-2} NEXT SENTENCE
(END-SEARCH]
SEND cd-name-1 FROM identifier-!
S.fND cd-name-1 [FRO~! identifier-!]
{identifier-3 }} literal-! arithmetic-expression-!
{identifier-4 }l] literal-2 ari thmetic-expression-2 ...
{WITH i dent if ie r- 2} WITH lli WITH EN! IHTH EGI
[ I{identifier-3} [LINE J}] { BEFORE} ADVA~CING integer-1 LINES
AFTER ' . } --- {mncmonic-name-1
PAGE
[REPLACING L1 NE]
{ index-nnme-1}. identifier-}
{index-n.1me-2}
TO identifier-2 integer-] .
268 COBOL 85 Programming
GENERAL FORMAT FOR COBOL VERBS
SET {index-name-3} ••.
5]1 {{mnemonic-name-1}
{ UP .llY } DOWN !!¥ {identifier- 3}
integer-2
IQ {~}}
5]1 {condition-name-!} ..•
. { {ASCENDING } SORT f1le-name-l ON DESCENDING KEY { da ta-name-1} . . . } .•.
[IHTH DUPLICATES IN ORDER]
[COLLATING SEQUENCE IS alphabet-name-!]
~ I~PUT PROCEDURE IS procedure-name-!
{USING {file-name-2} ...
PROCEDURE IS procedure-name-)
{file-name-3} ...
START file-name-1 K&Y
IS EQUAL TO IS IS GREATER THAN IS > IS NOT LESS THAN IS NOT <
p<oo•d"<e-Mm•-2 J} THRU procedure-name-4 [{TI!RQ!1Qi} J l
data-name-1
IS GREATER THAN OR EQUAL TO IS >=
[l~VALID KEY imperative-statement-!]
[NOT INVALID KEY imperative-statement-2]
(E~D-START]
STOP {Ili!Ji } -·- literal-1
Appendix A: COBOL 85 Language Formats 269
GENERAL FORMAT FOR COBOL VERBS
{{identifier-!} literal-1
DELIMITED BY literal-2 ... {identifier-2}}
SIZE
INTO identifier-3
[WITH ~ identifier-4]
[ON OVERfLOW imperative-statement-!]
[Iilli ON OVERFLOW imperative·-statement-2]
[END-STRING]
SUBTRACT {identifier-!} literal-1
FROM {identifier-3 [ROUNDED]} ...
[ON SIZE ERROR imperative-statement-!]
[NOT ON SIZE ERROR imperative-statement-2]
(END-SUBTRACT]
SJ.lllTRACT {i~entifier-1} ll. teral-1
FRml {identifier-2} -- literal-2
GIVING {identifier-3 [ROUNDED]} ...
[ON SIZE ERROR imperative-statement-!]
[NQI ON SIZE ERROR imperative-statement-2]
(END-SUBTRACT]
SUBTRACT {CORRESPONDING} identifier-! FRON identifier-2 [ROUNDED] CORR
[ON ~ ~imperative-statement-!]
[~OT ON SIZE ERROR imperative-statement-2)
St:PI'RESS I'RilWING
TER!·:lt\ATE {rcpL>rt-n;~mc-1) ...
270 COBOL 85 Programming
GENERAL FORMAT FOR COBOL VERBS
UNSTRING identifier-!
[DELIMITED BY (~] {identifier-2} literal-1 [oR (ALL] {i~entifier-3}] ···]
hteral-2
INTO {identifier-4 [DELIMITER IN identifier-S] [COUNT IN identifier-&])
[WITH POINTER identifier-7]
(TALLYING IN identifier-S]
[ON OVERFLOW imperative-statement-!]
[NOT ON OVERFLOW imperative-statement-2]
[END-UNSTRING]
SRI USE [GLOBAL] AFTER STANDARD {EXCEPTION} -- -- ERROR f
{ file-name-1} INPUT
PROCEDURE ON OUTPUT l=Q EXTEND
W USE AFTER STANDARD EXCEPTION PROCEDURE ON OUTPUT { } {{file-name-1} ···}
ERROR EXTEND
~ [GLOBAL] BEFORE REPORTING identifier-!
[
cd-name-1 l [A11 REFERENCES OF] identifier-!
~ FOR DEBUGGING ON file-name-1 procedure-name-! ALL PROCEDURES
.. l
Appendix A: COBOL 85 Language Formats 271
GENERAL FORMAT FOR COBOL VERBS
S WRITE record-name-1 [FROM identifier-!]
[{BEFORE} ADVANCING AFTER
{{identifier-2} fLINE ] JJ integer-1 lLINES
{ mnemonic-name-!} PAGE
r. {END-OF-PAGE} ] lAT EQf imperative-statement-!
[~oT AT {~-OF-PAGE} imperative-statement-2]
[END-WRITE)
RI WRITE record-name-! [FROM identifier-!)
[INVALID KEY imperative-statement-!)
[NOT INVALID KEY imperative-statement-2)
[ END-1-'RITE)
272 COBOL 85 Programming
GENERAL FORMAT FOR COPY AND REPLACE STATEMENTS
COPY text-name-1 [{ ~} library-name-1]
[ {l==pseudo-text-1==} REPLACING i~entifier-1 BY
1lteral-1 --word-1
{:~~~~~~~~~~;t- 2==; l· .. ] li teral-2 word-2
REPLACE {==pseudo-text-1== BY ==pseudo-text-2==} ...
Appendix A: COBOL 85 Language Formats 273
RELATION CONDITION:
{identifier-! } literal-1 arithmetic-expression-! index-name-1
CLASS CONDITION:
GENERAL FORMAT FOR CONDITIONS
IS (HQ.T) ~ THAN IS (HQ.T) > IS (NQl'] ~ THAN IS (NOT) < IS (HQJ) EQUAL TO IS (NOT) • IS GREATER THAN Q.!\ EQUAL TO IS >• IS LESS THAN Q.!\ EQUAL TO IS <=
[NUMERIC } ALPHABETIC
identifier-! IS (NOT) ALPHABETIC-LOWER ALPHABETIC-UPPER class-name-1
CONDITION-NA}~ CONDITION:
condition-name-!
SWITCH-STATUS CONDITION:
condition-name-!
SIGN CONDITION:
{POSITIVE} arithmetic-expression-! IS [NOT) 'tNEGATIVE
ZERO
NEGATED CONDITION:
NOT condition-1
lidentifier-2 l literal-2 arithmetic-expression-2 index-name-2
274 COBOL 85 Programming
GENERAL FORMAT FOR CONDITIONS
COMBINED CONDITION:
condition-1 {{ :0} condition-2 } •••
ABBREVIATED COMBINED RELATION CONDITION:
relation-condition {{:0} [NQT) [relational-operator] object} •.•
Appendix A: COBOL 85 Language Formats 275
GENERAL FORMAT FOR QUALIFICATION
FORMAT 1:
{ data-name-1 } condition-name-!
FORMAT 2:
data-name-2}
{ file-name-1} cd-name-1
paragraph-name-! { ~} section-name-!
FORMAT 3:
text-name-1 {~;} library-name-!
FORMAT 4:
LINAGE-COUNIER { ~~} file-name-2
FORMAT 5:
{ PAGE-COUNTER} {IN} LINE-COUNTER OF report-name-!
FORMAT 6:
. . . [{IN..} {file-name-l}ll { 01: od-Mmo-1 j J
data-name-3 } {~n data-name-4 [{~~} report-name-2] {
u~n report-name-2 '
276 COBOL 85 Programming
SUBSCRIPTING:
{ condition-name-!} data-name-!
MISCELLANEOUS FORMATS
{integer-! }
( data-name-2 [{±} integer-2) ... ) index-name-1 [{±} integer-3)
REFERENCE MODIFICATION:
data-name-1 (leftmost-character-position: [length))
IDENTIFIER:
data-name-1 [{~} data-name-2] ..• [gn {~~~:~~=~!-! }] - - report-name-1
[ ({subscript} ... ) ) [(leftmost-character-position: [length)))
Appendix A: COBOL 85 Language Formats 277
GENERAL FORMAT FOR NESTED SOURCE PROGRAMS
IDENTIFICATION DIVISION.
PROGBAM-ID. program-name-1 (IS INITIAL PROGRAM].
[ENVIRONMENT DIVISION. environment-division-content]
(DATA DIVISION. data-division-content]
[PROCEDURE DIVISION. procedure-division-content)
([nested-source-program] ...
END PROGRAM program-name-1.]
GENERAL FORMAT FOR NESTED-SOURCE-PROGRAM
IDENTIFICATION DIVISION.
PROGRNM-ID. program-name-2 [IS {I CO~Il-ION I} PROGRMt] INITIAL
[ENVIRO~~ENT DIVISION. environment-division-content]
(DATA DIVISION. data-division-content]
(PROCEDURE DIVISION. procedure-division-content]
[nested-source-program] ...
END PROGRAM program-name-2.
278 COBOL 85 Programming
GENERAL FORMAT FOR A SEQUENCE OF SOURCE PROGRAMS
{IDENTIFICATION DIVISION.
PROGRAM-ID. program-name-) [IS INITIAL PROGRAM].
[ENVIRONMENT DIVISION. environment-division-content]
[~DIVISION. data-division-content]
[PROCEDURE DIVISION. procedure-division-content]
[nested-source-program] ...
IDiJ2 ~ program-name-).}
IDENTIFICATION DIVISION.
PROGRI\M-=ID. program-name-4 [IS INITIAL PROGRAM].
[ENVIRONMENT piVISlON. environment-division-content]
[DATA DIVISIQN. data-division-content]
[PROCEDURE DIVISIQN. procedure•division-content]
[[nested-source-program] •••
END PROGRAM program-name-4.]
Appendix B: COBOL 85 ReservedWords
ACCEPT ACCESS ADD ADVANCING AFTER ALL ALPHABET ALPHABETIC ALPHABETIC-LOWER ALPHABETIC-UPPER ALPHANUMERIC ALPHANUMERIC-EDITED ALSO ALTER ALTERNATE AND ANY ARE AREA AREAS ASCENDING ASSIGN AT AUTHOR
BEFORE BINARY BLANK BLOCK BOTTOM BY
CALL CANCEL
CD CF CH CHARACTER CHARACTERS CLASS CLOCK-UNITS CLOSE COBOL CODE CODE-SET COLLATING COLUMN COMMA COMMON COMMUNICATION COMP COMPUTATIONAL COMPUTE CONFIGURATION CONTAINS CONTENT CONTINUE CONTROL CONTROLS CONVERTING COPY CORR CORRESPONDING COUNT CURRENCY
DATA DATE
279
280 COBOL 85 Programming
DATE-COMPILED DATE-WRITTEN DAY DAY-OF-WEEK DE DEBUG-CONTENTS DEBUG-ITEM DEBUG-LINE DEBUG-NAME DEBUG-SUB-1 DEBUG-SUB-2 DEBUG-SUB-3 DEBUGGING DECIMAL-POINT DECLARATIVES DELETE DELIMITED DELIMITER DEPENDING DESCENDING DESTINATION DETAIL DISABLE DISPLAY DIVIDE DIVISION DOWN DUPLICATES DYNAMIC
EGI ELSE EMI ENABLE END END-ADD END-CALL END-COMPUTE END-DELETE END-DIVIDE END-EVALUATE END-IF
END-MULTIPLY END-OF-PAGE END-PERFORM END-READ END-RECEIVE END-RETURN END-REWRITE END-SEARCH END-START END-STRING END-SUBTRACT END-UNSTRING END-WRITE ENTER ENVIRONMENT EOP EQUAL ERROR ESI EVALUATE EVERY EXCEPTION EXIT EXTEND EXTERNAL
FALSE FD FILE FILE-CONTROL FILLER FINAL FIRST FOOTING FOR FROM
GENERATE GIVING GOBAL GO GREATER GROUP
280
Appendix B: COBOL 85 Reserved Words 281
HEADING LOW-VALUE HIGH-VALUE LOW-VALUES HIGH-VALUES
MEMORY I-0 MERGE I-0-CONTROL MESSAGE IDENTIFICATION MODE IF MODULES IN MOVE INDEX MULTIPLE INDEXED MULTIPLY INDICATE INITIAL NATIVE INITIALIZE NEGATIVE INITIATE NEXT INPUT NO INPUT-OUTPUT NOT INSPECT NUMBER INSTALLATION NUMERIC INTO NUMERIC-EDITED INVALID IS OBJECT-COMPUTER
OCCURS JUST OF JUSTIFIED OFF
OMITTED KEY ON
OPEN LABEL OPTIONAL LAST OR LEADING ORDER LEFT ORGANIZATION LENGTH OTHER LESS OUTPUT LIMIT OVERFLOW LIMITS LINAGE PACKED-DECIMAL LINAGE-COUNTER PADDING LINE PAGE LINE-COUNTER PAGE-COUNTER LINES PERFORM LINKAGE PF LOCK PH
282 COBOL 85 Programming
PIC PICTURE PLUS POINTER POSITION POSITIVE PRINTING PROCEDURE PROCEDURES PROCEED PROGRAM PROGRAM-ID PURGE
QUEUE QUOTE QUOTES
RANDOM RD READ RECEIVE RECORD RECORDS REDEFINES REEL REFERENCE REFERENCES RELATIVE RELEASE REMAINDER REMOVAL RENAMES REPLACE REPLACING REPORT REPORTING REPORTS RERUN RESERVE RESET RETURN REVERSED
REWIND REWRITE RF RH RIGHT ROUNDED RUN
SAME SD SEARCH SECTION SECURITY SEGMENT SEGMENT-LIMIT SELECT SEND SENTENCE SEPARATE SEQUENCE SEQUENTIAL SET SIGN SIZE SORT SORT-MERGE SOURCE SOURCE-COMPUTER SPACE SPACES SPECIAL-NAMES STANDARD STANDARD-1 STANDARD-2 START STATUS STOP STRING SUB-QUEUE-1 SUB-QUEUE-2 SUB-QUEUE-3 SUBTRACT SUM
Appendix B: COBOL 85 Reserved Words 283
SUPPRESS USAGE SYMBOLYC USE SYNC USING SYNCHRONIZED
VALUE TABLE VALUES TALLYING VARYING TAPE TERMINAL WHEN TERMINATE WITH TEST WORDS TEXT WORKING-STORAGE THAN WRITE THEN THROUGH ZERO THRU ZEROES TIME ZEROS TIMES TO + TOP TRAILING * TRUE I TYPE **
> UNIT < UNSTRING UNTIL >= UP <= UPON
Appendix C: Character Sets (ASCII and EBCDIC)
Character code ASCII symbol EBCDIC symbol (decimal)
0 nul nul 1 soh soh 2 stx stx 3 etx etx 4 eot 5 enq ht 6 ack 7 bel del 8 bs vt 9 ht
10 nl 11 vt 12 ff ff 13 cr cr 14 so so 15 si si 16 dle dle 17 del del 18 dc2 dc2 19 dc3 dc3 20 dc4 21 nak nl 22 syn bs 23 etb 24 can can 25 em em 26 sub 27 esc 28 fs fs 29 gs gs 30 rs rs
284
Appendix C: Character Sets (ASCll and EBCDIC) 285
Character code ASCll symbol EBCDIC symbol (decimal)
31 us us 32 sp 33 34 35 £
36 $ 37 % lf 38 & etb 39 esc 40 41 42 * 43 + 44 45 enq 46 eck 47 I bel 48 0 49 1 50 2 syn 51 3 52 4 53 5 54 6 55 7 eot 56 8 57 9 58 59 60 < dc4 61 nak 62 > 63 ? sub 64 @ sp 65 A
66 B
67 c 68 D
69 E
70 F
record record
record
record
record
record
record
record
record
record
record
record
record
record
record
286 COBOL 85 Programming
Character code ASCII symbol EBCDIC symbol (decimal)
71 G 72 H 73 I 74 J 75 K 76 L < 77 M 78 N + 79 0 80 p &
81 Q
82 R
83 s 84 T 85 u 86 v 87 w 88 X 89 y
90 z l 91 [ $ 92 \ * 93 l 94 95 96 97 I 98 a 99 b
100 c 101 d 102 e 103 f 104 g 105 h 106 i 107 j 108 k % 109 1 > 110 m ?
record
record
record
record
record
record
record
Appendix C: Character Sets (ASCll and EBCDIC) 287
Character code ASCll symbol EBCDIC symbol (decimal)
111 n 112 0
113 p 114 q 115 r
116 s 117 t 118 u 119 v 120 w
121 X
122 y £
123 z @
124 125 126 127 128 del 129 a 130 b 131 c 132 d 133 e 134 f
135 g 136 h 137 i
145 j 146 k
147 1 148 m 149 n 150 0
151 p 152 q 153 r
record
record record
record
record
record
288 COBOL 85 Programming
Character code (decimal)
162 163 164 165 166 167 168 169
193 194 195 196 197 198 199 200 201
209 210 211 212 213 214 215 216 217
226 227 228 229 230 231 232 233
ASCII symbol EBCDIC symbol
s t u
v
w
X
y
z
A
B
c D
E
F
G
H
I
J
K
L
M
N
0 p
Q
R
s T
u v w X y
z
Character code (decimal)
240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
Appendix C: Character Sets (ASCII and EBCDIC) 289
ASCII symbol EBCDIC symbol
0 1 2 3 4 5 6 7 8 9
Index
ACCEPT 20, 57, 258 ACCESS MODE 185 ADD 21, 24,258 ADVANCING 23 ADVANCING n LINES 182 ADVANCING PAGE 183 AFTER 120 ALTERNATE RECORD KEY 202 AND96 Area A 7 Area B 7 Arithmetic operators 51 ASCENDING KEY 207,214 AT END 133
BINARY 55
CALL 221, 258 CLOSE 165, 259 Collating sequence 77, 210 Compilation 10 COMPUTATIONAL 56 COMPUTE 50, 259 Condition variables 99 Constants 22 CONTROL FOOTING 236 CONTROL HEADING 237 CONTROLS 235 CONVERTING 148 COPY 151,272 Currency symbol(£$) 56
Data description 251 DATA DIVISION 6, 16, 246 Data item description 17 Data validation 94 DATE 57 DAY 57 DAY-OF-WEEK 57 Debugging !OJ DELETE 189, 201, 259
DELIMITED BY 140 DESCENDING KEY 207, 204 DETAIL LINE 236 DISPLAY 21, 23, 56, 260 DIVIDE 47, 260 DUPLICATES 203 DYNAMIC 185, 195
ELSE 61 END-OF-PAGE 184 Entering a program 9 ENVIRONMENT DIVISION 6, 13, 241 EVALUATE 70,261 Execution 10 EXIT 94,262 EXIT PROGRAM 221, 262 EXTEND 166
File access 160 File definition 161 File error handling 171 File organization !59 File processing 161 File status 161, 186 Floating pictures 55 Fractional numbers 33
GENERATE 238 GIVING 27, 207, 214 GOT069
IDENTIFICATION DIVISION 6, 12,240 IF 60 Indicator area 7 INDEXED 56 INDEXED BY 119 Indexed file 244, 249 Indexed files 195
291
file attributes 195 OPENing and CLOSEing 197 adding a record 198
292 Index
updating a record 199 deleting a record 201 retrieving a record 202 invalid keys 203
Index names ll9 INITIATE 238, 262 INPUT 166 INPUT PROCEDURE 210, 214 INSPECT 145, 262 INVALID KEY 193 I-0 166
LINKAGE SECTION 223 Lists 105 Lists of lists 116 Literals 22 Logical operators 96 Look up tables 130 Looping 82
MERGE 213, 263 MERGE FILE 244, 250 MOVE 29, 36, 263 MULTIPLY 46, 263
Nested IF 64 Nested performs 118 Nested programs 219, 277 NEXT RECORD 192 NEXT SENTENCE 66 NOT 63,96
OCCURS 106 ON OVERFLOW 142 ON SIZE ERROR 77 OPEN 165, 264 OR96 OUTPUT 166 OUTPUT PROCEDURE 210, 214
PACKED-DECIMAL 56 PAGE FOOTING 237 PAGE HEADING 235 PERFORM 80, 264 PERFORM paragraphs 92 PERFORM procedure structure 99 PERFORM n TIMES 82, 264 PERFORM THRU (THROUGH) 93, 264 PERFORM UNTIL 85,265 PERFORM VARYING 87,265 PIC 17 PIC P 34
PIC S 37 PIC V 33 PIC Z 54 PIC. 34 PIC+ 38 PIC- 38 PROCEDURE DIVISION 6, 19,257
RANDOM 195 READ 169, 265 Record definition 164 RECORD KEY 197 Relational operators 63 RELATIVE KEY 185 Relative file 248 Relative files 185
adding a record 188 deleting a record 189 file attributes 185 invalid keys 193 OPENing and CLOSEing 187 retrieving 192 updating a record 189
REMAINDER 4 7 REPLACE 154,272 REPLACING 147, 153 REPORT FILE 245, 250 REPORT SECTION 235 REPORT FOOTING 237 REPORT HEADING 237 Report Writer 231
the report 231 Environment Division 233 Data Division 234 Procedure Division 237
REWRITE 175,266 ROUNDED42
SEARCH 119, 132, 267 Sequence number area 6 SEQUENTIAL FILE 247 Sequential file processing 173
printing a file 180 record insertion 177 record update 175 searching 17 3
SET 119, 267 Signed numbers 37 SIZE-ERROR 43 SORT 205, 268 SORT FILE 244, 250 Sorting 113
Sorting tables 127 SPECIAL-NAMES 24 START 193, 268 STOP 21, 268 STRING 140,269 Structure diagrams 8 SUBTRACT 39, 269 SUPPRESS 238, 269 SYSLIST 24, 234 Syntax format 24
Table definition 122 Tables 122 Table searching 123 TALLYING I 145 TERMINATE 238,269 TEST AFTER 87 TEST BEFORE 87 Testing 11
TIME 57 TYPE 235
UNSTRING 143, 270 UPON 23 USAGE IS 55
Index 293
USE BEFORE REPORTING 238 USING 207, 214 USING BY CONTENT 227 USING BY REFERENCE 223
VALUE86
WITH DEBUGGING MODE 155 WITH POINTER 142 WHEN 71, 133 WRITE 166, 271 Writing a COBOl; program 9
Zero suppression 54