Cobol (Common Business Oriented Language) : History
Cobol (Common Business Oriented Language) : History
History.
Developed by 1959 by a group called COnference on Data Systems Language
(CODASYL). First COBOL compiler was released by December 1959.
Speciality.
Coding Sheet.
1 7 12 72 80
COL-A COLUMN-B
Language Structure.
Character Digits (0-9), Alphabets (A-Z), Space (b), Special Characters (+ - * / ( ) = $ ; “ > < . ,)
Word One or more characters- User defined or Reserved
Clause One or more words. It specifies an attribute for an entry
Statement
One or more valid words and clauses
Sentence
One or more statements terminated by a period
Paragraph
One or more sentences.
Section
One or more paragraphs.
Division
One or more sections or paragraphs
Program
Made up of four divisions
Divisions in COBOL.
There are four divisions in a COBOL program and Data division is optional.
1.Identification Division.
2.Environment Division.
3.Data Division.
4.Procedure Division.
Identification Division.
IDENTIFICATION DIVISION.
PROGRAM-ID. PROGRAM NAME.
AUTHOR. COMMENT ENTRY.
INSTALLATION. COMMENT ENTRY.
DATE-WRITTEN. COMMENT ENTRY.
DATE-COMPILED. COMMENT ENTRY.
SECURITY. COMMENT ENTRY.
Security does not pertain to the operating system security, but the information that is passed to the user of
the program about the security features of the program.
Environment Division.
When your program moves from one computer to another computer, the only section
that may need to be changed is ENVIRONMENT division.
Configuration Section.
It supplies information concerning the computer on which the program will be compiled (SOURCE-
COMPUTER) and executed (OBJECT-COMPUTER). It consists of three paragraphs – SOURCE
COMPUTER, OBJECT-COMPUTER and SPECIAL-NAMES. This is OPTIONAL section from
COBOL 85.
SOURCE-COMPUTER. IBM-4381 (Computer and model # supplied by
manufacturer)
WITH DEBUGGING MODE clause specifies that the debugging lines in the program
(statements coded with ‘D’ in column 7) are compiled.
SPECIAL-NAMES. This paragraph is used to relate hardware names to user-specified mnemonic names.
4. New class can be defined using CLASS keyword. (CLASS DIGIT is “0” thru “9”)
When your program moves from one computer to another computer, the only section
that may need to be changed is ENVIRONMENT division.
Configuration Section.
It supplies information concerning the computer on which the program will be compiled (SOURCE-
COMPUTER) and executed (OBJECT-COMPUTER). It consists of three paragraphs – SOURCE
COMPUTER, OBJECT-COMPUTER and SPECIAL-NAMES. This is OPTIONAL section from
COBOL 85.
WITH DEBUGGING MODE clause specifies that the debugging lines in the program
(statements coded with ‘D’ in column 7) are compiled.
SPECIAL-NAMES. This paragraph is used to relate hardware names to user-specified mnemonic names.
4. New class can be defined using CLASS keyword. (CLASS DIGIT is “0” thru “9”)
Input-Output Section.
It contains information regarding the files to be used in the program and it consists of two paragraphs
FILE-CONTROL & I-O CONTROL. FILE CONTROL. Files used in the program are identified in this
paragraph. I-O CONTROL. It specifies when check points to be taken and storage
areas that are shared by different files.
Data Division.
Numeric literal can hold 18 digits and non-numeric literal can hold
160
characters in it. (COBOL74 supports 120 characters only)
3.
Declaration of variable
FILLER
Level#
It specifies the hierarchy of data within a record. It can take a value
from the set of integers between 01-49 or from one of the special
level-numbers 66 77 88
01 level.
Variable name can have 1-30 characters with at least one alphabet in
it.
Hyphen is the only allowed special character but it cannot be first or
last letter of the name. Name should be unique within the record. If
two
variables with same name are there, then use OF qualifier of high level
grouping to refer a variable uniquely.
Ex: MOVE balance OF record-1 TO balance OF record-2.
FILLER
When the program is not intended to use selected fields in a record
structure, define them as FILLER. FILLER items cannot be initialized or
used in any operation of the procedure division.
PICTURE Clause
Describes the attributes of variable.
Numeric
9 (Digit), V (Implied decimal point), S (Sign)
Numeric Edited
+ (Plus Sign), - (Minus Sign), CR DB (Credit Debit
Sign).
(Period), b (Blank), ‘,’(comma), 0 (Zero), / (Slash)BLANK WHEN ZERO
(Insert blank when data value is 0),Z (ZERO suppression), * (ASTERISK),
$(Currency Sign)
Non Numeric A (alphabet), B (Blank insertion Character), X(Alpha
numeric),
G(DBCS)
Exclusive sets 1.
+ - CR DB2. V ‘.’3. $ + - Z * (But $ Can appear as
first place and * as floating. $***.**)
Refreshing Basics
Nibble.
data
item.
COMP
Double word.
Most significant bit is ON if the number is negative.
COMP-1
VALUE Clause
It is used for initializing data items in the working storage section.
Value of item must not exceed picture size. It cannot be specified for
the
items whose size is variable.
Syntax:
VALUE IS literal.
VALUES ARE literal-1 THRU | THROUGH literal-2
VALUES ARE literal-1, literal-2
01 WS-TEST.
10 WS-VAR1 PIC X(02).
10 WS-VAR2 PIC S9(6) COMP SYNC.
REDEFINES
Example:
01 WS-DATE PIC 9(06).
01 WS-REDEF-DATE REDEFINES WS-DATE.
05
WS-YEAR
PIC 9(02).
05
WS-MON
PIC 9(02).
05
WS-DAY
PIC 9(02).
RENAME
It is used for regrouping of elementary data items in a record. It
should
be declared at 66 level. It need not immediately follows the data item,
which is being renamed. But all RENAMES entries associated with one
logical record must immediately follow that record's last data
description
entry. RENAMES cannot be done for a 01, 77, 88 or another 66 entry.
01 WS-REPSONSE.
05 WS-CHAR143
PIC X(03).
05 WS-CHAR4
PIC X(04).
66 ADD-REPSONSE RENAMES WS-CHAR143.
CONDITION name
OCCURS Clause
OCCURS Clause is used to allocate physically contiguous memory
locations
to store the table values and access them with subscript or index.
Detail
explanation is given in Table Handling section.
LINKAGE SECTION
It is used to access the data that are external to the program. JCL can
send maximum 100 characters to a program thru PARM. Linkage section
MUST
be coded with a half word binary field, prior to actual field. If
length
field is not coded, the first two bytes of the field coded in the
linkage
section will be filled with length and so there are chances of 2 bytes
data truncation in the actual field.
01 LK-DATA
05 LK-LENGTH
PIC S9(04) COMP.
05 LK-VARIABLE
PIC X(08).
LINKAGE section of sub-programs will be explained later.
PROCEDURE DIVISION.
This is the last division and business logic is coded here. It has
user-defined sections and paragraphs. Section name should be unique
within
the program and paragraph name should be unique within the section.
Syntax:
MOVE identifier1/literal1/figurative-constant TO identifier2
(identifier3)
Multiple move statements can be separated using comma, semicolons,
blanks
or the keyword THEN.
If the receiving field width is smaller than sending field then excess
digits, to the left and/or to the right of the decimal point are
truncated.
ROUNDED option
With ROUNDED option, the computer will always round the result to the
PICTURE clause specification of the receiving field. It is usually
coded
after the field to be rounded. It is prefixed with REMAINDER keyword
ONLY
in DIVIDE operation.
ADD A B GIVING C ROUNDED.
DIVIDE..ROUNDED REMAINDER
Caution: Don’t use for intermediate computation.
ON SIZE ERROR
If A=20 (PIC 9(02)) and B=90 (PIC 9(02)), ADD A TO B will result 10 in
Bwhere the expected value in B is 110. ON SIZE ERROR clause is coded to
COMPUTE
2.Exponentiation
3.Multiplication and Division
4.Addition and Subtraction
INITIALIZE
INITIALIZE identifier-1
REPLACING (ALPHABETIC/ALPHANUMERIC/ALPHA-NUMERIC-
EDITED
NUMERIC/NUMERIC-EDITED)
DATA BY (identifier-2 /Literal-2)
ACCEPT
DISPLAY
It is used to display data. By default display messages are routed to
SYSOUT.
Syntax:
DISPLAY identifier1| literal1 (UPON mnemonic name)
Collating Sequence
There are two famous Collating Sequence available in computers. IBM and
IBM Compatible machine use EBCDIC collating sequence whereas most micro
and many mainframe systems use ASCII collating sequence. The result of
arithmetic and alphabetic comparison would be same in both collating
sequences whereas the same is not true for alphanumeric comparison.
IF/THEN/ELSE/END-IF
The most famous decision making statement in all language is ‘IF’. The
syntax of IF statement is given below: IF can be coded without any ELSE
statement. THEN is a noise word and it is optional.
If ORs & ANDs are used in the same sentence, ANDs are evaluated first
from left to right, followed by ORs. This rule can be overridden by
using
parentheses.
The permitted relation conditions are =, <, >, <=, >=, <>
IF identifier is POSITIVE/NEGATIVE/ZERO
IF identifier is NUMERIC/ALPHABETIC/ALPHABETIC-HIGHER/
ALPHABETIC-LOWER
You can define your own classes in the special names paragraph. We have
defined a class DIGIT in our special names paragraph. It can be used in
the following way.
IF identifier is DIGIT
Negated conditions.
Any simple, relational, class, sign test can be negated using NOT.
But it is not always true that NOT NEGATIVE is equal to POSITIVE.
(Example
ZERO)
EVALUATE
With COBOL85, we use the EVALUATE verb to implement the case structure
of
other languages. Multiple IF statements can be efficiently and
effectively
replaced with EVALUATE statement. After the execution of one of the
when
clauses, the control is automatically come to the next statement after
the
END-EVALUATE. Any complex condition can be given in the WHEN clause.
Break
statement is not needed, as it is so in other languages.
General Syntax
EVALUATE subject-1 (ALSO subject2..)
PERFORM STATEMENTS
1.SIMPLE PERFORM.
PERFORM PARA-1.
DISPLAY ‘PARA-1 executed’
STOP RUN.
PARA-1.
Statement1
Statement2.
2.INLINE PERFORM.
When sets of statements are used only in one place then we can group
all
of them within PERFORM END-PERFORM structure. This is called INLINE
PERFORM.
This is equal to DO..END structure of other languages.
PERFORM
ADD A TO B
MULTIPLE B BY C
DISPLAY ‘VALUE OF A+B*C ‘ C
END-PERFORM
3. PERFORM PARA-1 THRU PARA-N.
All the paragraphs between PARA-1 and PARA-N are executed once.
GO TO Usage:
Array Items can be accessed using INDEX or subscript and the difference
between them are listed in the table. Relative subscripts and relative
indexes are supported only in COBOL85. Literals used in relative
subscripting/indexing must be an unsigned integer.
ADD WS-SAL(SUB) WS-SAL(SUB + 1) TO WS-SAL(SUB + 2).
Sl # Subscript
Index
1
Working Storage item Internal Item – No need to declare it.
2
It means occurrence It means displacement
3
INDEX can
only
be modified with SET, SEARCH and PERFORM statements.
Sometimes, you may face a question like how to randomly access the
information in the sequential file of 50 records that contains all the
designation and the respective lower and higher salary information.
Obviously, OS does not allow you to randomly access the sequence file.
You have to do by yourself and the best way is, load the file into a
working storage table in the first section of the program and then
access
as you wish.
Sequential SEARCH
During SERIAL SEARCH, the first entry of the table is searched. If the
condition is met, the table look-up is completed. If the condition is
not
met, then index or subscript is incremented by one and the next entry
is
searched and the process continues until a match is found or the table
has
been completely searched.
SET indexname-1 TO 1.
END-SEARCH
Identifier-1 should be OCCURS item and not 01 item.
Condition-1, Condition-2 compares an input field or search argument
with a
table argument.
Though AT END Clause is optional, it is highly recommended to code
that.
Because if it is not coded and element looking for is not found, then
the
control simply comes to the next statement after SEARCH where an
invalid
table item can be referred and that may lead to incorrect results /
abnormal ends.
Multiple WHEN conditions can be coded. Only one WHEN condition can be
coded.
5.
77 EMPNUMBER-IN
PIC 9(04) VALUE ‘2052’.
PERFORM 100-SEARCH-EMP-SAL VARYING I1 FROM 1 BY 1
UNTIL I1 > 10 OR WS-FOUND
100-SEARCH-EMP-SAL.
SET I2 TO 1.
SEARCH EMP-DETAIL AT END DISPLAY ‘NOT FOUND’ == > Lowest
Occurs
WHEN EMPNUMBER-IN = EMP-NUMBER(I1,I2)
DISPLAY ‘SALARY IS:’ EMP-SALARY(I1,I2)
SET WS-FOUND TO TRUE
== > Search ends
END-SEARCH.
NESTED PROGRAMS, GLOBAL, EXTERNAL
One program may contain other program(s). The contained program(s) may
If you want access any working storage variable of PGMA in PGMB, then
declare them with the clause ‘IS GLOBAL’ in PGMA. If you want to access
any working storage variable of PGMB in PGMA, declare them with the
clause
‘IS EXTERNAL’ in PGMB. Nested Programs are supported only in COBOL85.
If there is a program PGMC inside PGMB, it cannot be called from PGMA
unless it’s program id is qualified with keyword COMMON.
Syntax:
SORT SORTFILE ON ASCENDING /DESCENDING KEY sd-key-1 sd-key2
USING file1 file2 / INPUT PROCEDURE IS section-1
GIVING file3
MERGE
- Optional.
- Optional.
- Optional.
INSPECT identifier-1 REPLCING CHARACTERS
BY identifier-2 BEFORE|AFTER INITIAL identifier-3|literal-1
STRING
STRING command is used to concatenate one or more strings.
Syntax:STRING identifier-1 / literal-1, identifier-2/ literal-2
DELIMITED BY (identifier-3/literal-3/SIZE)
INTO identifier-4
END-STRING.
END-STRING.
The receiving field must be an elementary data item with no editing
symbols and JUST RIGHT clause.
With STRING statement, specific characters of a string can be replaced
whereas MOVE replaces the full string.
01 AGE-OUT PIC X(12) VALUE ’12 YEARS OLD’.
STRING ‘18’ DELIMITED BY SIZE INTO AGE-OUT. => 18 YEARS OLD.
Syntax: String(Starting-Position:Length)
MOVE ‘18’ TO AGE-OUT(1:2) does the same as what we did with STRING
command.
When it is used in array elements, the syntax is
Array-element (occurrence) (Starting-Position:Length)
UNSTRING
UNSTRING command is used to split one string to many strings.
Syntax:
UNSTRING identifier-1
[DELIMITED BY (ALL/) identifier2/literal1 [,OR (ALL/)
(identifier-3/literal-2),..]]
INTO identifier-4 [,DELIMITER IN identifier-5, COUNT IN
identifier-6]
[,identifier-7 [,DELIMITER IN identifier-8, COUNT IN
identifier-9]
01 WS-DATA PIC X(12) VALUE ‘10/200/300/1’.
UNSTRING WS-DATA DELIMITED BY ‘/’
INTO WS-FLD1 DELIMITER IN WS-D1 COUNT IN WS-C1
WS-FLD2 DELIMITER IN WS-D2 COUNT IN WS-C2
COPY Statement
A COPY statement is used to bring a series of prewritten COBOL entries
that have been stored in library, into a program.
1.Common routines like error routine, date validation routine are coded
in
a library and bring into the program by COPY.
This reduces coding and debugging time. Change in layout needs change
in
copybook only. It is enough if we just recompile the program for making
the new copy effective.
If the same copybook is used more than once in the program, then there
will be “duplicate data declaration” error during compilation, as all
the
fields are declared twice. In this case, one copybook can be used with
REPLACING verb to replace high-level qualifier of the all the variables
with another qualifier.
Example:
COPY CUSTOMER REPLACING ‘CUST1-‘ BY ‘CUST2-‘.
VAR2.
PGM2 is called here. WS-VAR1 and WS-VAR2 are working storage items.
WS-VAR1 is passed by reference. WS-VAR2 is passed by Content. BY
REFERENCE
is default in COBOL and need not be coded. BY CONTENT LENGTH phrase
permits the length of data item to be passed to a called program.
Sub-Program Changes:
WS-VAR1 and WS-VAR2 are working storage items of main program.
As we have already mentioned, the linkage section is used for accessing
external elements. As these working storage items are owned by main
program, to access them in the sub-program, we need to define them in
the
linkage section.
LINKAGE SECTION.
01 LINKAGE SECTION.
05 LK-VAR1 PIC 9(04).
05 LK-VAR2 PIC 9(04).
In addition to define them in linkage section, the procedure division
should be coded with these data items for address-ability.
PROCEDURE DIVISION USING LK-VAR1,LK-VAR2
initial state.
CONTENT
WS-VAR1(BY CONTENT keyword is needed)
2
5
Size of load module will be large
Size of load module will be less.
6
Fast Slow compared to Static call.
7
Less flexible. More flexible.
8
Sub-program will not be in initial stage the next time it is called unless you explicitly use
INITIAL or you do a CANCEL after each call. Program will be in initial state every time it is called.
INTRINSIC FUNCTIONS:
LENGTH
Returns the length of the PIC clause. Used for finding length of
group
item that spanned across multiple levels.
MAX
DATE
statement.
2.Definition. The layout of the file and its attributes are defined in
the
FILE SECTION of DATA DIVISION.
This can be coded only for input files. If OPTIONAL is not coded, then
the input file is expected to present in JCL. If not, an execution
error
will occur.
If OPTIONAL is coded, then if the file is not mapped in JCL, it is
considered as empty file and the first read results end of file.
The file can also be dynamically allocated instead of static allocation
in
JCL.
FILENAME is the logical name used inside the program and DDNAME is the
logical name in the JCL, mapped with physical dataset. DDNAME can be
prefixed with ‘S-‘ to indicate QSAM file, ‘-AS’ to indicate ESDS file
and
with no prefix to indicate KSDS/RRDS file.
JCL Step executing the program should have a dataset with DDNAME as
label
//DDNAME DD DSN=BPMAIN.EMPLOYEE.DATA,DISP=SHR
SELECT Statement-ORGANIZATION
It can be SEQUENTIAL (PS or VSAM ESDS), INDEXED (VSAM KSDS), RELATIVE
(VSAM RRDS). Default is Sequential.
RANDOM.
in
the procedure division.
RESERVE Clause.
RESERVE clause [RESERVE integer AREA ] can be coded in the SELECT
statement. The number of buffers to be allocated for the file is coded
here.
By default two buffers will be allocated if the clause is not coded.
Since
similar option is available in JCL, this is not coded in program.
RESERVE 1 AREA allocates one buffer, for the file in the SELECT
statement.
Defining the file in FILE SECTION - FD
FD FILENAME
RECORDING MODE IS V/VB/F/FB
RECORD CONTAINS M CHARACTERS (TO N CHARACTERS)
BLOCK CONTAINS X CHARACTERS/RECORDS (TO Y
CHARACTERS/RECORDS)
FD-RECORD CONTAINS
It specifies the length of the record in terms of bytes. (It will be
RECORD contains m to n CHARACTERS for variable format files)
FD-BLOCK CONTAINS
It specifies the physical record size. It can be mentioned as number of
logical records OR number of characters, that is multiple of logical
record length. It is suggested to code BLOCK CONTAINS 0 RECORDS so that
system will decide the optimum size for the file based on the device
used
for storing the file. BLOCK CONTAINS clause is treated as comments for
VSAM files.
Advantage of Blocking:
1.I-O time is reduced as n numbers of records are read into main memory
buffer during an I-O.
2.Inter record gap is removed and the gap exist only between blocks. So
memory wastage due to IRG is avoided.
FD-RECORDING MODE IS
It can be F (FIXED) V(VARIABLE) FB(FIXED BLOCK) VB(VARIABLE BLOCKED)
Variable record file identification:
If there is no recording mode/record contains clause, it is still
possible
to identify variable length records. If there is an OCCURS depending on
clause or there are multiple 01 levels and every 01 level is of
different
size, then the file would be of variable length. Multiple 01 level in
File
section is an example for implicit redefinition.
optional.
FD-DATA RECORD IS Clause
It is used to name the data record(s) of the file. More than one
record
can be coded here.
OPEN STATEMENT
Syntax:
OPEN OPENMODE FILENAME
OPENMODE can be INPUT OUTPUT I-O EXTEND
INPUT
- File can be used ONLY-FOR-READ purpose.
OUTPUT
- File can be used ONLY-FOR-WRITE purpose.
I-O
- File can be used FOR READ, WRITE and REWRITE purpose.
EXTEND
- File can be used FOR appending records using WRITE.
CLOSE statement.
The used files are closed using CLOSE statement. If you don’t close the
files, the completion of the program closes all the files used in the
program.
Syntax:
CLOSE FILENAME
When you close the file, the tape is normally rewound. The NO REWIND
clause specifies that the TAPE should be left in its current position.
CLOSE statement with REEL option closes the current reel alone. So the
next READ will get the first record of next REEL. This will be useful
when
you want skip all the records in the first reel after n number of
records
processing.
OUT-FILE1 POSITION 1
OUT-FILE3 POSITION 3.
The files OUT-FILE1 and OUT-FILE3 used in the program are part of a
same
TAPE and they exist in first and third position in the tape.
Alternatively, this information can be passed from JCL using LABEL
parameter.
READ statement
READ statement is used to read the record from the file.
Syntax:
END-READ
If INTO clause is coded, then the file is directly read into working
storage section record. It is preferred as it avoids another move of
file-section-record to working-storage-record followed by simple READ.
READ-INTO is not preferred for variable size records where the length
of
the record being read is not known.
KEY IS clause is used while accessing a record randomly using
primary/alternate record key.
AT END and NOT AT END are used during sequential READ of the file.
INVALID KEY and NOT INVALID KEY are used during random read of the
file.
Before accessing the file randomly, the key field should have a value
before READ.
WRITE Statement
Write statement is used to write a new record in the file. If the file
is
opened in EXTEND mode, the record will be appended. If the file is
opened
in OUTPUT mode, the record will be added at the current position.
Syntax:
WRITE FILE-RECORD [FROM ws-record]
[INVALID KEY imperative statement1]
END-WRITE
FROM clause avoids the explicit move of working storage record to file
section record before WRITE.
REWRITE Statement
REWRITE is used to update an already read record. To update a record in
afile, the file should be opened in I-O mode.
Syntax:
REWRITE FILE-RECORD [FROM ws-record]
[INVALID KEY imperative statement1]
END-REWRITE
START Statement
START FILENAME
KEY is EQUAL TO/NOT LESS THAN/GREATER THAN
key-name
[INVALID KEY imperative statement1]
END-START.
DELETE Statement
DELETE is used to delete the most recently read record in the file. To
delete a record, the file should be opened in I-O mode.
Syntax:
Let us assume that we don’t have any error handling in our program. In
this case, for example, if you don’t have a specific record in the
file,
the random read of that record would immediately terminate the program
with error ‘record not found’.
PROCEDURE DIVISION.
DECLARATIVES.
USE-PROCEDURE SECTION.
If SAME RECORD AREA is coded, then the buffer is not shared but only
the
record area is shared. So more than one file can be in open state. We
should be careful while filling in the record area of the output file.
This may destroy the record read most recently.
Syntax: SAME RECORD AREA FOR file-1 file-2 file-3.
SAME SORT AREA allows more than one sort/merge work files to use the
same
area. The sort work files are automatically allocated when file is
opened
and de-allocated when file is closed. As the sort file is
automatically
opened and closed during a SORT and two sort files cannot be opened at
atime, this clause may not be useful.
ENTRY statement
Matching Logic
If you have been given two files of similar type, say master and
transaction file and you are requested to update the master file with
transaction file information for existing records and prepare a report
of
new transactions and deleted transactions, then you should go for what
is
called Matching logic. This is also known as co-sequential processing.
Sort both the files on key and compare the keys. If the keys are
matching
then update the file. If you find any record that is found in
transaction
but not in master file, then that is new addition and the reverse is
deletion. If the master key is greater than transaction key, then that
corresponds to the first case and reverse is the second case.
This can be easily done in JCL using ICETOOL. Refer JCL section.
FILE STATUS CODES
0
Successful OPEN/READ/WRITE Operation
0
Successful completion
2
Duplicate key was detected which is allowed as per definition of
AIX.
4
Length of record just READ didn’t conform to the fixed length
attributes for the file.
5
Referenced Optional file is not present during OPEN. If open mode is
I-O or EXTEND, then file will be created.
7
Sequential READ was attempted for a relative file and RRN is larger
than the maximum that can be stored in the relative key data item.
0
SYSPRINT
PARM (Compiler listing)
(Compiler
Options)
SYSIN
SYSLIN(Object Module)
(Source)
SYSLIB
PARM
(Copybook Library) (Link
edit Options)
SYSLMOD
(Load Module)
SYSPRINT
SYSLIB
(Link edit messages) (Subroutine Library)
COMPILATION JCL:
//SMSXL86B JOB ,'COMPILATION JCL',
MSGCLASS=Q,MSGLEVEL=(1,1),CLASS=C
Compiler Options
The default options that were set up when your compiler was installed
are
in effect for your program unless you override them with other options.
To
Aspect
Compiler Option
Source Language
LIST/OFFSET: LIST and OFFSET are mutually exclusive. If you use both,
LIST will be ignored. LIST is used to produce listing a listing of the
assembler language expansion of your code. OFFSET is used to produce a
condensed Procedure Division listing.
With OFFSET, the procedure portion of the listing will contain line
MAP: Use MAP to produce a listing of the items you defined in the
Data
Division.
Pic s9(8) Comp. 05 ws-return-code Pic s9(8) Comp. 05 ws-reason-code Pic s9(8)
Comp. 05 ws-info-code Pic s9(8) Comp. 05 ws-cppl-address Pic s9(8) Comp. 05 ws-flags