COBOL Compiler (IGYCRCTL)


IGYCRCTL


ICYCRCTL: creates an object module, which is a non-executable machine language version of the source code.
Example:
//STEP001 EXEC PGM=IGYCRCTL,
//  PARM=’DYN,DATA(31),LIST,NOOFF’
PARM specifies the options, which are being used while compilation. The details are as below:
1.  DYN : It loads called sub-modules dynamically. This result in smaller load modules file. Related Option: NODYN
2.  DATA: It has two formats DATA(24) and DATA(31). Default- DATA(31). Language Environment provides services that control the storage used at RUN-TIME. Specify the DATA(24) compiler option for programs running in 31-bit addressing mode that are passing data parameters to programs in 24-bit addressing mode.  This ensures that the data will be addressable by the called program.                                                         
3.  LIST/NOLIST: Default is NOLIST. Use the LIST compiler option to produce a listing of the assembler-language expansion of your source code.(NOTE: You do not specify the OFFSET option.)
4.  OFFSET/NOOFFSET(OFF/NOOFF): Default – NOOFF. Use OFFSET to produce a condensed PROCEDURE DIVISION listing. With OFFSET, the condensed PROCEDURE DIVISION listing will contain line numbers, statement references, and the location of the first instruction generated for each statement. In addition, the following are produced:
o   Global tables
o   Literal pools
o   Size of the program’s working storage, and its location in the object code if the program is compiled with the NORENT option
5.  SEQ/NOSEQ: It checks for line sequence.
6.  LIB/NOLIB: It specifies that all datasets referenced in //SYSLIB should be opened automatically. (NOLIB is default)
7.  XREF/NOXREF: It produces a sorted cross-reference.
8.  CLI: It produces condensed listing of machine language object code. Default: NOCLI.
9.  QUOTE/APOST: Default – QUOTE – If we used QUOTE, figurative constant [ALL] QUOTE or [ALL]    QUOTES to represent quotation mark If we used APOST, figurative constant [ALL] QUOTE or [ALL] QUOTES to represent on.
10. NUMBER/NONUMBER: Default- NONUMBER. If we used NUMBER, line numbers in source code will be displays in error messages and listings. If we used NONUMBER, line numbers in source code ignored by compiler, and it generates the sequence number for that source.
11. MAP/NOMAP: Default – NOMAP
MAP, to produce listing items defined in DATA DIVISION.
NOMAP, won’t produce listing.
12. OBJECT/ NOOBJECT(OBJ / NOOBJ) : Use OBJECT to place the generated object code on disk or tape to be later used as input for the linkage editor.
If you specify OBJECT, include a SYSLIN DD statement in your JCL for compilation.
The only difference between DECK and OBJECT is in the routing of the data sets:
–   DECK output goes to the data set associated with SYSPUNCH dd name.
–   OBJECT output goes to the data set associated with SYSLIN dd name.
Use the option your installation guidelines recommend.
NOOBJECT and TEST are mutually exclusive.  If you use both, NOOBJECT is ignored.
13. TEST
14. RENT/ NORENT: Default: NORENT
A program compiled as RENT is generated as a reentrant object module; a program compiled as NORENT is generated as a non-reentrant object module.  Either can be invoked as a main program or subprogram.
Note:  You must use RENT for programs to be run under CICS.              
When a reentrant program is to be run with extended addressing, the DATA(24|31) option can be used to control whether dynamic data areas are allocated in unrestricted storage or in storage obtained from below 16 megabytes.  Programs must be compiled with RENT or RMODE(ANY) if they will be run with extended addressing in virtual storage addresses above 16 megabytes.
Note:  DATA(24|31) does not affect programs compiled with NORENT.
RENT/NORENT also affects the RMODE (residency mode) that your program  will run under.  All IBM COBOL for MVS & VM programs are AMODE(ANY).
15 QUOTE/APOST (Q / APOST): Default is:  QUOTE
Use QUOTE if you want the figurative constants QUOTE and ALL QUOTES to represent one or more quotation mark (“) characters.  QUOTE conforms to the COBOL 85 Standard.
Use APOST if you want the figurative constants QUOTE and ALL QUOTES to represent one or more apostrophe (‘) characters.
Note:  Either quotes or apostrophes can be used as literal delimiters, regardless of whether the APOST or QUOTE option is in effect. The delimiter character used as the opening delimiter for a literal must be used as the closing delimiter for that literal.
16. SSRANGE/ NOSSRANGE(SSR¦NOSSR): Default is: NOSSRANGE
Use SSRANGE to generate code that checks if subscripts (including ALL subscripts) or indexes try to reference an area outside the region of the table. Each subscript or index is not individually checked for validity; rather, the effective address is checked to ensure that it does not cause a reference outside the region of the table.  Variable-length items will also be checked to ensure that the reference is within their maximum defined length.
Reference modification expressions will be checked to ensure that:
o   The reference modification starting position is greater than or equal to 1.
o   The reference modification starting position is not greater than the current length of the subject data item.
o   The reference modification length value (if specified) is greater than or equal to 1.
o   The reference modification starting position and length value (if specified) do not reference an area beyond the end of the subject data  item.
If SSRANGE is in effect at compile time, the range-checking code is generated. You can inhibit range checking by specifying CHECK(OFF) as a runtime option. This leaves range-checking code dormant in the object code. Optionally, the range-checking code can be used to aid in resolving any unexpected errors without recompilation.
If an out-of-range condition is detected, an error message is displayed and the program is terminated.
Remember: You will get range checking only if you compile your program with the SSRANGE option and run it with the CHECK(ON) runtime option.
17. OPT/ NOOPT : Use OPTIMIZE to reduce the run time of your object program.  Optimization might also reduce the amount of storage your object program uses.  Because OPTIMIZE increases compile time and can change the order of statements in your program, you should not use it when debugging. If OPTIMIZE is specified without any suboptions, OPTIMIZE(STD) will be in effect.
The FULL suboption requests that, in addition to the optimization performed with OPT(STD), the compiler discard unreferenced data items from the DATA DIVISION and suppress generation of code to initialize these data items to the values in their VALUE clauses. When OPT(FULL) is in effect, all unreferenced 77-level items and elementary 01-level items are          discarded. In addition, 01-level group items are discarded if none of their subordinate items are referenced. The deleted items are shown in the listing. If the MAP option is in effect, a BL number of XXXXX in the data map information indicates that the data item was discarded.

Comments

Popular posts from this blog

COBOL + DB2 complication process.

ABEND list for JCL

difference between jes2 and jes3