You are on page 1of 25

COBOL COMPILATION

The VS COBOL II compiler prepares a VS COBOL II source program for execution by producing a machine-language object module This object module contains the actual machine language !hich implements or carries out the instructions specified in the COBOL source program "The object module produced by the compiler must be processed by the lin#age editor before the program is actually ready for execution $ % single in&ocation of the compiler can compile an indi&idual COBOL source program or a se'uence of t!o or more separate source programs The object programs !hich result from compiling more than one source program at a time may be lin#-edited into a single load module or into t!o or more separate load modules The VS COBOL II compiler pro&ides se&eral additional ser&ices !hile program These include( compiling a

producing a source listing tayloring the content of the source listing "i e ) to include a sorted crossreference of data-names) a map of the *%T% *IVISIO+) a listing of the machine-language instructions that !ere generated) etc $ setting literal delimiters selecting a reser&ed !ord list processing CO,-) B%SIS) and ./,L%C/ statements offering options to control object code generation) object code execution) and the compilers use of &irtual storage producing debugging information at run time pro&iding user-exits

ADV: This is a COBOL compiler option 0ormat( %*V +O%*V %bbre&iations( +one IB1-default( %*V %*V) !hich conforms to the %+SI standard) re'uests that the compiler add 2 byte to the record length to account for the printer control character !hen 3.IT/ !ith the %*V%+CI+4 option is used +O%*V implies that the record length has already been adjusted for the printer control character to account

QUOTE/APOST: This is a COBOL compiler option 0ormat( 56OT/ %,OST %bbre&iations( 5 IB1-default( 56OT/

56OT/) !hich conforms to the %+SI standard) specifies that the double 'uotation mar# "7$ is to be the delimiter character for non-numeric literals %,OST specifies that the single 'uote mar# or apostrophe "8$ delimiter character for non-numeric literals AWO: This is a COBOL compiler option 0ormat( %3O +O%3O %bbre&iations( +O%3O IB1-default( +one %3O specifies that) for any file in the program !hich is physical se'uential !ith bloc#ed V-mode records) the %,,L3.IT/-O+L- clause be in effect "e&en if this clause is not specified in the program$ BUFSIZE: This is a COBOL compiler option "nnn:$ 0ormat( B60SI9/"nnnn$ is to be the

!here nnnn is a decimal number no less than ;<= nnn: is a decimal number in 2: "2>;?$ increments %bbre&iations( B60 IB1-default( ?>@= B60SI9/ specifies the amount of main storage to be allocated to compiler !or# file buffer

each

4enerally) a large buffer siAe !ill impro&e compiler performanceB ho!e&er) B60SI9/ cannot exceed the trac# capacity for the de&ice being used nor can it exceed the maximum allo!ed by data management ser&ices If the SI9/ option is specified along !ith B60SI9/) the amount of storage allocated to buffers is included in the amount of storage a&ailable for compilation as specified by the SI9/ option CMPR2: This is a COBOL compiler option 0ormat( C1,.; +OC1,.; %bbre&iations( +one IB1-default( +OC1,.; C1,.; re'uests that generated object code be compatible !ith generated by VS COBOL II .elease ;

code

+OC1,.; re'uests that generated object code conform to the %+SI 8C< standard "i e ) as implemented by VS COBOL II .elease D) !hich) in some instances) is incompatible !ith .elease ;$ C1,.; "!hich forces on the 0L%41I4 option$ can be used to assist in the migration of programs !ritten under .elease ; to the 8C< standard "i e ) to the .elease D le&el$ See 7.elease ; Compatibility %nd 1igrationE in the VS COBOL II .elease D %,,LIC%TIO+ ,.O4.%11I+4 46I*/ for more information "including a list of elements that are C1,.; sensiti&e and a description of their beha&ior under C1,.; and +OC1,.;$

COMPILE: This is a COBOL compiler option "/$ "S$ 0ormat( CO1,IL/ +OCO1,IL/ +OCO1,IL/"3$ %bbre&iations( C +OC IB1-default( +OCO1,IL/"S$ CO1,IL/ forces a full compilation e&en !hen serious errors are detected %ll diagnostics and object code !ill be generated "e&en though the object code should not be executed if serious errors are detected$ +OCO1,IL/ re'uests a syntax chec# only *iagnostic messages "but no object code$ are produced 3hen +OCO1,IL/ is specified) the follo!ing options ha&e no effect "e&en though listed among the options in effect$ because no object code is generated( */C: 0*61, OBF/CT O00S/T SS.%+4/ T/ST LIST O,TI1I9/

+OCO1,IL/"3$) +OCO1,IL/"/$) and +OCO1,IL/"S$ -for le&el 3 "!arning$) le&el / "error$) and le&el S "se&ere error$ diagnostics) respecti&elyre'uest a conditional full compilation "i e ) diagnostics and object code$) !ith object code generation "but not diagnostics$ to stop !hen an error of the le&el specified "or higher$ is encountered GGG Compiler Options GGG There are ? !ays in !hich options may be passed to the compiler) in order of precedence( Installation defaults that are fixed for your installation ,.OC/SS "or CBL$ statements in the source code FCL parameter Installation defaults that are not fixed listed belo!

0ixed installation defaults may not be o&erridden Installation defaults that are not fixed may be o&erridden by either ,.OC/SSHCBL statements andHor by FCL parameters If conflicting or mutually exclusi&e options are specified on both ,.OC/SSHCBL statements and &ia a FCL parm) then the ,.OC/SSHCBL statement ta#es precedence 0or a list of the default options in effect for your installation) run a compile !ithout specifying any options and loo# at the list of compiler options in effect produced as part of the normal compiler printout "0or a list of the fixed defaults) see your manager or technical support staff $ +ote( The default &alue sho!n in the indi&idual option descriptions is the IB1-supplied default shipped !ith the product "!hich may changed by your installation$ ha&e been

,.OC/SS statements must appear before the I*/+TI0IC%TIO+ *IVISIO+ header and are formatted as sho!n belo!( ,.OC/SS option2)option;)

IDENTIFICATION DIVISION. CBL may be used as a synonym for ,.OC/SS ,.OC/SS can start in columns 2 through == "or C through == if a se'uence field is placed in columns 2 through =$ CBL can start in 2 through I> "or C through I> if a se'uence field is used$ One or more blan#s must separate ,.OC/SSHCBL from the first optionB options must not contain embedded blan#s and must be separated be a comma or a blan# Options may not be continuedB ho!e&er) multiple ,.OC/SSHCBL statements may be used ,.OC/SSHCBL statements may be inhibited by your installation In this case) ,.OC/SSHCBL statements in the source code !ill be flagged !ith a COBOL error message If conflicting &ersions of the same option "i e ) */C: and +O*/C:) +%1/ and +O+%1/) etc $ are specified at the same le&el of precedence "say) for example) &ia a FCL parameter$) then the last one specified ta#es precedence 0or example) specifying( PARM=(DECK,NAME,NODECK) !ould result in +O*/C: being used as the acti&e option The table belo! sho!s ho! mutually exclusi&e options "i e ) LIST and ./+T and +O./S) etc $ are handled !hen specified at the same precedence O,TIO+ S,/CI0I/* ---------------T/ST O,TIO+ I4+O./* --------------0*61, +OOBF/CT +O./S O,TI1I9/ +O./S +O./S LIST 0L%4ST* 0L%4S%% *BCS 0L%41I4 0L%4ST* 0L%4S%% 0L%41I4 *BCS 0L%41I4 0L%41I4 O,TIO+ 0O.C/* O+G ----------------+O0*61, OBF/CT ./S +OO,TI1I9/ ./S ./S +OLIST +O0L%4ST* +O0L%4S%% +O*BCS +O0L%41I4 +O0L%4ST* +O0L%4S%% +O0L%41I4 +O*BCS +O0L%41I4 +O0L%41I4 O00S/T) le&el of

./+T *-+%1 O00S/T C1,.; +OC1,.; 3O.* 0L%4ST* 0L%4S%% *BCS

G6nless in conflict !ith a fixed installation default option

%s an example) suppose 0L%4ST* is set up as a non-fixed system default and that 3O.* is specified as an option &ia a FCL parm Then the options in effect !ould be 3O.* and +O0L%4ST* "because 3O.*) at a higher le&el of precedence than the non-fixed default 0L%4ST*) !ould force +O0L%4ST* on$ Sho!n belo! are the option settings re'uired to conform to the 2@C< COBOL Standards( %*V +OC1,.; +O*BCS *-+%1 +O0%STS.T +O0L%41I4 +O0L%4S%% 0L%4ST* LIB +%1/"%LI%S$ or +%1/"+O%LI%S$ NONUMBER +61,.OC"+O,0*$ or +61,.OC"1I4$ ./SI*/+T T.6+C"ST*$ +O3O.* 93B The chart belo! sho!s !hat you can do !ith compiler options by grouping them into &arious acti&ities and) !ithin each acti&ity) listing the specific tas# associated !ith each option Compiler %cti&ityHTas# Option ------------------------------------------------------ --------Control source listing and diagnostics( ,roduce system dump at compile time *61, Set se&erity le&el of diagnostics 0L%4 Identify .elease ;H.elease D incompatibilities 0L%41I4 0lag non-S%% compatible elements 0L%4S%% 0lag specified non-standard elements 0L%4ST* Select output language L%+46%4/ Set number lines per page for compiler output LI+/CO6+T ,roduce list of generated code LIST ,roduce *%T% *IVISIO+ map 1%, Select line number processing +61B/. ,roduce condensed ,.OC/*6./ *IVISIO+ listing O00S/T Specify se'uence number processing S/56/+C/ ,roduce source listing SO6.C/ Select spacing !ithin source listing S,%C/ Send diagnostics to S-ST/.1 dd statement T/.1I+%L 56OT/ +OS/56/+C/ %+SI

,roduce &erb cross-reference ,roduce sorted cross-reference

VB./0 J./0

,ro&ide debugging information at run time( ,roduce formatted dump for abends Setup for batchHinteracti&e debugging 0*61, T/ST

Set literal delimiters( Set apostrophe as non-numeric delimiter Set 'uote mar# as non-numeric delimiter .ecogniAe shift codes for *BCS %,OST 56OT/ *BCS

Control object code output( Set diagnostic se&erity to stop compilation CO1,IL/ ,roduce object code as C>-column card images */C: 4enerate lin#-edit +%1/ for each object module +%1/ Output object code to S-SLI+ dd statement OBF/CT

OptimiAe object code( Specify %,,L- 3.IT/-O+L- clause %llo! sort product to perform IHO .e'uest optimiAed object code %3O 0%STS.T O,TI1I9/

Control object code generation and execution( ,ro&ide byte for printer control character %*V 4enerate .elease ; compatible code C1,.; .estrict dynamic storage to 2=-meg line *%T% Specify dynamic C%LL *-+%1 Set *IS,L%- output ddname O6T** Specify in&alid sign processing +61,.OC .e'uest reentrant object code ./+T .e'uest Library 1anagement 0eature ./SI*/+T Chec# subscriptsHindexesHref mod expressions SS.%+4/ Set binary field truncation T.6+C .emo&e sign from *IS,L%- fields for comparisons 93B

Control compilers use of &irtual storage( Set buffer siAe B60SI9/ Set amount of storage a&ailable for compilation SI9/

1iscellaneous( Select reser&ed !ord list 3O.* ,rocess CO,-) B%SIS) and ./,L%C/ statements ,ro&ide 6ser-exits /JIT LIB

Some compiler options are specified !ith sub-parameters

These sub-

parameters are specified in parentheses "!ith multiple subparameters) !hen applicable) generally separated by a comma$ immediately follo!ing the option to !hich they apply "!ith no inter&ening or embedded blan#s$ %s examples( *%T%";?$ DATA: This is a COBOL compiler option 0ormat( *%T%";?$ "D2$ %bbre&iations( +one IB1-default( *%T%"D2$ 0or a program compiled !ith the ./+T option !hich is to be executed under J%) the *%T% option specifies !hether dynamic storage "for data areas such as 3O.:I+4 STO.%4/) file buffers) etc $ is to be ac'uired from belo! the 2=-meg line or from unrestricted storage be SI9/"1%J$ 0L%4"3)/$

*%T%";?$ specifies that dynamic storage areas are to allocated from storage belo! the 2=-meg line

*%T%"D2$ specifies that dynamic storage areas are to be allocated from unrestricted storage "i e ) either abo&e or belo! line$

the 2=-meg

*%T%";?$ should be used for programs running under J% in D2-bit addressing mode that are passing data parameters to programs in ;?-bit addressing mode Other!ise) the called program may not be able to address the data being passed DBCS: This is a COBOL compiler option 0ormat( *BCS +O*BCS %bbre&iations( +one IB1-default( +O*BCS *BCS instructs the compiler to recogniAe JK>/K and JK>0K as shift codes for the double byte portion of a non-numeric literal "The double byte portion is syntax chec#edB the literal remains in the alphanumeric category $ If either C1,.; or 0L%4ST* is specified) *BCS is ignored +O*BCS conforms to the %+SI standard DECK: This is a COBOL compiler option 0ormat( */C: +O*/C: %bbre&iations( * +O* IB1-default( +O*/C: */C: re'uests that object code be produced in the form of C>images and output to the S-S,6+CL dd statement

column card

DUMP: This is a COBOL compiler option 0ormat( *61, +O*61, %bbre&iations( *6 +O*6 IB1-default( +O*61, *61, re'uests that a dump be produced !hene&er the compiler abnormally terminates This option is normally used by IB1 personnel in order to diagnose bugs in the compiler itself 3hen *61, is specified) a S-S%B/+*) S-S6*61,) or S-S1*61, dd statement should be included in the compile FCL +O*61, pro&ides a limited set of diagnostic information !hen the compiler abnormally terminates This includes a description of the error) the compiler execution phase at the time of the abend) the line number of the COBOL statement being processed !hen the error occured) and the contents of the general purpose registers DYNAM: This is a COBOL compiler option 0ormat( *-+%1 +O*-+%1 %bbre&iations( *-+ +O*-+ IB1-default( +O*-+%1 *-+%1 specifies that separately compiled programs in&o#ed through the C%ll literal statement "i e ) a C%LL statement !here the program to be called is specifed in the form of a literal$ are to be loaded dynamically at run time +O*-+%1 implies that programs in&o#ed through the C%LL literal !ill be statically lin#ed into the run-unit prior to execution EXIT: This is a COBOL compiler option 0ormat( /JIT"xparm$ +O/JIT %bbre&iations( /J +O/J IB1-default( +O/JIT /JIT) depending upon the sub-parameters specified) instructs the accept source input from a user-supplied exit module from the file defined !ith the S-SI+ dd statement$ accept copy input from a user-supplied exit module "rather file defined !ith the S-SLIB dd statement$ pass printer output to a user-supplied exit module "rather defined !ith the S-S,.I+T dd statement$ statement

compiler to( "rather than than from the than to the file

The xparm sub-parameters "separated by a comma$ must be specified by choosing one option from each of the D pairs of options sho!n belo!( I+/JIT"8instringK)inmod$ or +OI+/JIT +OLIB/JIT +O,.T/JIT

LIB/JIT"8libstringK)libmod$ or ,.T/JIT"8prtstringK)prtmod$ or

!here inmod) libmod) and prtmod are) respecti&ely) the names of the user-supplied load modules to be used in place of S-SI+) S-SLIB) and S-S,.I+T and 8instringK) 8libstringK) and 8prtmodK are optional character strings of up to =? characters "enclosed in apostrophes$ that are to be passsed to the corresponding user-supplied load module I+/JIT) LIB/JIT) and ,.T/JIT may be abbre&iated as I+/J) LIB/J) respecti&ely /JIT may only be specified &ia a FCL parm or as an installation it may not be specified in a ,.OC/SSHCBL statement$ FASTSRT: This is a COBOL compiler option 0ormat( 0%STS.T +O0%STS.T %bbre&iations( 0S.T +O0S.T IB1-default( +O0%STS.T 0%STS.T specifies that) during an internal sort operation) IB1 *0SO.T "or an e'ui&alent sort product$ is to perform the IHO operations on sort input and output files "i e ) SO.T 6SI+4 and 4IVI+4$ This option may impro&e internal sort performance +O0%STS.T) !hich is the %+SI standard) specifies that COBOL is the IHO operations on these files FDUMP: This is a COBOL compiler option 0ormat( 0*61, +O0*61, %bbre&iations( 0*6 +O0*6 IB1-default( +O0*61, 0*61, re'uests that a formatted dump be execution ends in an abnormal termination 3hen 0*61, is specified( the run time execution FCL should include a S-S*BO6T dd statement for 0*61, output if +61B/. is also specified) the se'uence fields in columns 2 through = must be numeric the siAe of the object module is increased "because statement number and data description tables are included as part of the object code$ is used or to perform and ,.TJ) default "i e )

produced

at

run

time

!hen

+o formatted dump !ill be produced if the +OST%/ run time option if any other program in the run-unit !as compiled !ith T/ST FLAG: This is a COBOL compiler option 0ormat( 0L%4"a$ +O0L%4

"a)b$ S) or 6 %bbre&iations( 0 +O0 default( 0L%4"I$

!here a and b are specified as I) 3) /) IB1errors of

0L%4"a$ directs the compiler to produce diagnostic messages for se&erity le&el a or abo&e at the end of the source listing

0L%4"a)b$ directs the compiler to produce diagnostic messages for errors of se&erity le&el a or abo&e at the end of the source listing and to also place diagnostic messages for errors of se&erity le&el b and abo&e directly in the source lising "i e ) directly after the statement in error$ 0L%4"a)b$ has no meaning unless the SO6.C/ option is also specified +O0L%4 directs the compiler to suppress error flagging The le&els of se&erity for diagnostic messages are sho!n belo!( I Informational ".eturn CodeM>$ 3 3arning ".eturn CodeM?$ / /rror ".eturn CodeMC$ S Se&ere ".eturn CodeM2;$ 6 6nreco&erable ".eturn CodeM2=$ FLAGMIG: This is a COBOL compiler option 0ormat( 0L%41I4 +O0L%41I4 %bbre&iations( +one IB1-default( +O0L%41I4 0L%41I4 re'uests that the compiler identify language elements that may be implemented differently in .elease ; than in .elease D "!hich conforms to the 8C< %+SI standard$ +O0L%41I4 conforms to the %+SI standard 0L%41I4 is intended to be used) in conjunction !ith C1,.; "!hich forces on 0L%41I4$) to aid in the migration of programs !ritten under VS COBOL II .elease ; to the .elease D le&el "i e ) to the 8C< standard$ See C1,.; for more information FLAGSAA: This is a COBOL compiler option 0ormat( 0L%4S%% +O0L%4S%% %bbre&iations( +one IB1-default( +O0L%4S%% 0L%4S%% re'uests that the compiler identify "by flagging !ith a !arning message$ language elements that are not Systems %pplication %rchitecture "S%%$ compatible This !ill identify program elements that may restrict program portability across IB1 systems +O0L%4S%% conforms to the %+SI standard The +OC1,.; compiler option must be in effect in order to use 0L%4S%% and the 0L%4ST* option can not be used If 0L%4ST* and 0L%4S%% are both specified along !ith +OC1,.;) 0L%4S%% is ignored

FLAGSTD: This is a COBOL compiler option 0ormat( 0L%4ST*"s$ +O0L%4ST* "smm$ "smm)o$ "s)o$ !here s is specified as 1) I) or L in order to set the le&el or subset of Standard COBOL that is to be considered as conforming mm is specified "as a single character or a combination of any t!o$ as *) +) or S to set the optional modules to be included in the subset o is specified as O to indicate that obsolete language elements are to be flagged %bbre&iations( +one IB1-default( +O0L%4ST* 0L%4ST* is designed to pro&ide information "&ia flagging$ about the type of COBOL elements included in the source program Based on the !ay in !hich the subparameters are coded) this can include flagging for nonconforming) non-standard) andHor obsolete language elements +OC1,.; and the standard set of reser&ed !ords must be in effect use 0L%4ST* The sub-parameters are further described belo!( 0or s( 1 specifies that language elements not from the minimum subset are to be flagged "i e ) I specifies t !t "!#$%!$e e"e&e#ts #'t f('& the minimum or intermediate subset are to be flagged "i e ) as non-conforming standard$ L specifies that language elements offered as as IB1 extension are to be flagged "i e ) standard$ -----------0or mm( * specifies that elements from *ebug module flagged "i e ) as nonconforming standard$ N specifies t !t e"e&e#ts f('& Se$&e#t!ti'# module le&el 2 are not flagged "i e ) as S specifies t !t e"e&e#ts f('& Se$&e#t!ti'# module le&el ; are not flagged "i e ) as "+ote( + is a subset of S $ non-conforming standard$ are to be flagged non-conforming standard$ le&el 2 are not as non-conforming nonas non-conforming standard$ in order to

0or o( O specifies that obsolete language elements "i e ) as obsolete$

Specified elements are flagged !ith an informational message

that(

Identifies the clause) statement) or header that contains the element as !ell as the source program line number and column Identifies the subset or optional module to !hich the element belongs Identifies the element as non-conforming standard) nonconforming non-standard) or obsolete "% language element that is both obsolete and non-conforming is flagged as obsolete only $ higher$ is

0lagging is suppressed !hene&er an error "diagnostic le&el / or detected GGG FCL GGG

Sample FCL re'uired to in&o#e the compiler appears belo!) follo!ed by a description of each dd statement re'uired This is follo!ed by se&eral examples "sho!ing re'uired FCL and selected options$ Sample compiler FCL( HHFS2> /J/C ,41MI4-C.CTL) Compiler ,rogram +ame HH ,%.1M"options$ Optional ,arms HHST/,LIB ** *S+MS-S2 COB;CO1,)*IS,MSL. ,*S Containing Compiler HHS-SLIB ** *S+Mcpylib)*IS,MSL. Copy 1ember Library HHS-S,.I+T ** S-SO6TMG ,rinted Output HHS-ST/.1 ** S-SO6TMG *iagnostic 1essages HHS-S6T2 ** 6+ITMS-S*%)S,%C/M"subparms$ 3or# 0ile HHS-S6T; ** 6+ITMS-S*%)S,%C/M"subparms$ 3or# 0ile HHS-S6TD ** 6+ITMS-S*%)S,%C/M"subparms$ 3or# 0ile HHS-S6T? ** 6+ITMS-S*%)S,%C/M"subparms$ 3or# 0ile HHS-S6T< ** 6+ITMS-S*%)S,%C/M"subparms$ 3or# 0ile HHS-S6T= ** 6+ITMS-S*%)S,%C/M"subparms$ 3or# 0ile HHS-S6TI ** 6+ITMS-S*%)S,%C/M"subparms$ 3or# 0ile HHS-SLI+ ** *S+MNNOBF1O*)*IS,M"1O*),%SS$) Object 1odule Output HH 6+ITMS-S*%)S,%C/M"subparms$ HHS-SI+ ** G Source ,rogram Input source program HG /xplanation of Compiler FCL( ,%.1( FCL parameter used to pass options to the compiler "See descriptions belo! $ STEPLIB DD: ,artitioned data set containing the executable form of the may be installation dependent $ SYSLIB DD: ,artitioned data set containing copy members compiled contain any CO,- or B%SIS statements .e'uired if programs to be compiler "This

SYSPRINT DD: ,ro&ides a definition of the data set that recei&es printed output from the compiler This includes the source listing) diagnostic messages) etc 1ust ha&e ./C01M0 or 0B BL:SI9/ can be any permissable &alue for the output de&ice "up to D;I=>$ that is a multiple of 2DD SYSTERM DD: ,ro&ides definition of a second data set on !hich diagnostic messages are to be output Only re'uired !hen the T/.1I+%L compiler option is specified 1ust ha&e ./C01M0 or 0B BL:SI9/ can be any permissable &alue for the output de&ice "up to D;=I>$ that is a multiple of C2 SYSUT1-SYSUT7: ,ro&ides definitions of &arious compiler !or# files These files must be on direct-access storage de&ices and must ha&e ./C01M0 or 0B BL:SI9/ can be any permissable &alue for the output de&ice "up to D;I=>$ that is a multiple of C> SYSLIN DD: ,ro&ides a definition of the output data set that is used for the object module 1ust ha&e ./C01M0 or 0B BL:SI9/ can be any permissable &alue for the output de&ice "up to D;I=>$ that is a multiple of C> SYSIN DD: ,ro&ides a definition of the input data set that contains the source program"s$ to be compiled 1ust ha&e ./C01M0 or 0B BL:SI9/ can be any permissable &alue for the input de&ice "up to D;=I>$ that is a multiple of C> .ather than specifying all of the re'uired FCL sho!n abo&e) you may prefer to in&o#e the VS COBOL II compiler by executing one of the IB1-supplied cataloged procedures for this purpose "i e ) COB;6C) COB;6CL) COB;CL4) etc $ or some other cataloged procedure pro&ided by your systems programming or technical support staff "Chec# !ith your manager or technical support staff for direction on !hich cataloged procedure to use $ /xamples of the FCL re'uired to in&o#e the compiler "and selected sho!n and described belo!( options$ are

HHFS2> /J/C ,41MI4-C.CTL) Compiler ,rogram +ame HH ,%.1M"LIST)1%,)J./0$ Optional ,arms HHST/,LIB ** *S+MS-S2 COB;CO1,)*IS,MSL. ,*S Containing Compiler HHS-SLIB ** *S+Mcpylib)*IS,MSL. Copy 1ember Library HHS-S,.I+T ** S-SO6TMG ,rinted Output HHS-ST/.1 ** S-SO6TMG *iagnostic 1essages HHS-S6T2 ** 6+ITMS-S*%)S,%C/M"subparms$ 3or# 0ile HHS-S6T; ** 6+ITMS-S*%)S,%C/M"subparms$ 3or# 0ile HHS-S6TD ** 6+ITMS-S*%)S,%C/M"subparms$ 3or# 0ile HHS-S6T? ** 6+ITMS-S*%)S,%C/M"subparms$ 3or# 0ile HHS-S6T< ** 6+ITMS-S*%)S,%C/M"subparms$ 3or# 0ile HHS-S6T= ** 6+ITMS-S*%)S,%C/M"subparms$ 3or# 0ile HHS-S6TI ** 6+ITMS-S*%)S,%C/M"subparms$ 3or# 0ile HHS-SLI+ ** *S+MNNOBF1O*)*IS,M"1O*),%SS$) Object 1odule Output

HH 6+ITMS-S*%)S,%C/M"subparms$ HHS-SI+ ** G Source ,rogram Input source program HG The example abo&e sho!s sample FCL re'uired to execute the compiler follo!ing options( LIST( to re'uest an assembler-language listing of the generated object code 1%,( to re'uest a *%T% *IVISIO+ map J./0( to re'uest a sorted cross-reference listing HHFS2> /J/C ,.OCMCOB;6C) IB1-supplied proc HH ,%.1 COBM"O00S/T)O6T**"*S,O6T$$ Optional ,arms HHCOB S-SI+ ** G Source ,rogram Input source program HG The example abo&e sho!s sample FCL re'uired to execute the compiler &ia the COB;6C FCL procedure supplied by IB1 In this case) the follo!ing options are specified( O00S/T( to re'uest a condensed ,.OC/*6./ *IVISIO+ listing O6T**( to re'uest that execution time *IS,L%- output use a ddname of *S,O6T LANGUAGE: This is a COBOL compiler option 0ormat( L%+46%4/"xxxxxx$ %bbre&iations( L%+4"xx$ IB1-default( L%+46%4/"/+4LISL$ L%+46%4/ specifies the language that !ill be used for compiler messages "i e ) for diagnostic messages) message summary headers) the compilation summary) and &arious headers and notations resulting from the use of compiler options li#e 1%,) J./0) etc $ The language sub-parameters that may be specified are sho!n Sub-parameter %bbre&iation *escription ----------------------------------------------/+4LISL F%,%+/S/ character set$ 6/+4LISL 6/ /+ F%)F, 1ixed case /+4LISL Fapanese "using Fapanese 6pper-case /nglish belo!( !ith the

N'te) T' %se *!p!#ese, t e *!p!#ese N!ti'#!" L!#$%!$e 0eature must be installed

If the L%+46%4/ option is changed using CBL or some initial text !ill be printed in the language compiler execution began LIB: This is a COBOL compiler option

,.OC/SS statements) that !as in effect !hen

0ormat( LIB +OLIB %bbre&iations( +one IB1-default( +OLIB LIB) !hich conforms to the %+SI standard) instructs the compiler honor and process CO,-) B%SIS) and ./,L%C/ statements

that it is to

If CO,- or B%SIS statements are to be processed) the compile FCL must include a dd statement for the library or libraries from !hich the compiler can extract the copied code "i e ) S-SLIB$ as !ell as the S-S6T< !or# file LINECOUNT: This is a COBOL compiler option 0ormat( LI+/CO6+T"nn$ IB1-default( LI+/CO6+T"=>$ %bbre&iations( LC page of the

LI+/CO6+T specifies the number of lines to be printed on each compilation listing

The nn sub-parameter must be an integer bet!een 2> and ;<< This includes D lines !hich are used for titles If LI+/CO6+T is specified as LI+/CO6+T"<>$) ?I lines of source code are printed on each page of the output listing LI+/CO6+T may also be specified as LI+/CO6+T">$ in order to suppress pagination "i e ) no page ejects are generated !ithin the compilation listing$ LIST: This is a COBOL compiler option 0ormat( LIST +OLIST %bbre&iations( +one IB1-default( +OLIST LIST re'uests that the compiler produce a listing of machine language object code "!hich is produced by corresponding assembler-language source code$ LIST also pro&ides information in the output listing about( 4lobal tables Literal pools 3O.:I+4-STO.%4/

the generated printing out the

If compiled !ith the +O./+T option) the 3O.:I+4-STO.%4/ information includes the siAe of 3O.:I+4-STO.%4/ and its location !ithin the object code LIST and O00S/T are mutually exclusi&eB if both are used) LIST is ignored

The assembler-language source listing can be limited "i e ) turned on or off as re'uired$ through the use of GCO+T.OL LIST and GCO+T.OL +OLIST statements placed in the ,.OC/*6./ *IVISIO+ MAP: This is a COBOL compiler option 0ormat( 1%, +O1%, %bbre&iations( +one IB1-default( +O1%, 1%, re'uests that the compiler produce a listing of the items *%T% *IVISIO+ "i e ) a *%T% *IVISIO+ 7mapE$ Other 1%, output includes( 4lobal tables Literal pools +ested program structure "and attributes$ siAe of

defined in the

If compiled !ith the +O./+T option) 1%, information includes the 3O.:I+4-STO.%4/ and its location !ithin the object code

1%, output can be limited "i e ) turned on or off as re'uired$ through the use of GCO+T.OL 1%, and GCO+T.OL +O1%, statements placed in the *%T% *IVISIO+ NAME: This is a COBOL compiler option 0ormat( +%1/ +%1/"%LI%S$ +O+%1/ "+O%LI%S$ %bbre&iations( +one IB1-default( +O+%1/ +%1/ and +%1/"+O%LI%S$ re'uest that a lin#-edit +%1/ card be generated for each object module +%1/"%LI%S$ re'uests that) in addition to a +%1/ card) a lin#-edit %LI%S card be generated for each /+T.- statement contained in the source program NUMBER: This is a COBOL compiler option 0ormat( +61B/. +O+61B/. %bbre&iations( +61 +O+61 IB1-default( +O+61B/. +61B/. instructs the compiler to honor the line numbers embedded in columns 2 through = of each source statement The compiler !ill chec# these columns to ensure that they contain numeric data and !ill se'uence chec# them according to numeric collating se'uence "as opposed to S/56/+C/) !hich chec#s them according to /BC*IC collating se'uence$ 3hen a line number is found to be out of se'uence) a number one greater than the number in the pre&ious line !ill be assigned and se'uence chec#ing then continues !ith the ne!ly assigned line number These line numbers !ill also be referenced in error messages and in 1%,) LIST) and J./0 listings

If +61B/. is specified and CO,- statements are used) the line numbers in the source program should be coordinated !ith those in each referenced CO,member +O+61B/.) !hich conforms to the %+SI standard) specifies that line numbers appearing in columns 2 through = "if any$ are to be ignored In this case) the compiler generates a line number for each line in the source program and uses these generated line numbers as references in error messages and in 1%,) LIST) and J./0 listings NUMPROC: This is a COBOL compiler option 0ormat( +61,.OC",0*$ "+O,0*$ "1I4$ %bbre&iations( +one IB1-default( +61,.OC"+O,0*$ +61,.OC"+O,0*$) !hich conforms to the %+SI standard) specifies that the generated code is to perform in&alid sign processing during run time This !ill result in increased run time and a larger object module +61,.OC",0*$ is a performance option !hich specifies that in&alid sign processing is not to be done It should be used only if the data to be processed agrees exactly !ith the follo!ing IB1 system standards( *%T% 0O.1%T ----------------ST%+*%.* SI4+ 0O.1%T ------------------------------------------

/xternal decimal) Ligh-order ? bits of the sign byte contain unsigned JK0K /xternal decimal) Ligh-order ? bits of the sign byte contain signed o&erpunch JKCK if the number is positi&e or >B JK*K if the number is negati&e /xternal decimal) Separate sign byte contains character 8OK separate sign if the number is positi&e or >B 8-8 if the number is negati&e Internal decimal) Lo!-order ? bits of the lo!-order byte unsigned contain JK0K Internal decimal) Lo!-order ? bits of the lo!-order byte signed contain JKCK if the number is positi&e or >B JK*K is the number is negati&e +61,.OC"1I4$) !hich conforms to the %+SI standard) is designed to aid in migrating from OSHVS COBOL to VS COBOL II It results in the follo!ing sign processing( preferred signs are created only for the recei&ing field in a 1OV/ statement or an arithmetic operation no explicit sign correction is done during input operations some implicit sign correction may be done during data format con&ersion operations

numeric comparisons are performed as a decimal "rather than comparison operation

a logical$

OB ECT: This is a COBOL compiler option 0ormat( OBF/CT +OOBF/CT %bbre&iations( OBF +OOBF IB1-default( OBF/CT OBF/CT re'uests that the generated object code be routed to the statement +OOBF/CT and T/ST are mutually exclusi&eB +OOBF/CT is ignored if specified OFFSET: This is a COBOL compiler option 0ormat( O00S/T +OO00S/T %bbre&iations( O00 +OO00 IB1-default( +OO00S/T O00S/T re'uests that the compiler produce a condensed ,.OC/*6./ *IVISIO+ listing This condensed listing !ill contain line numbers) statement references) and the location "i e ) offset !ithin the object code$ of the first instruction generated for each statement Other O00S/T output includes( 4lobal tables Literal pools the siAe of is ignored

S-SLI+ dd T/ST is

If compiled !ith the +O./+T option) O00S/T information includes 3O.:I+4-STO.%4/ and its location !ithin the object code O00S/T and LIST are mutually exclusi&eB if both are used) LIST OPTIMIZE: This is a COBOL compiler option

0ormat( O,TI1I9/ +OO,TI1I9/ %bbre&iations( O,T +OO,T IB1-default( +OO,TI1I9/ O,TI1I9/ specifies that the object code be generated for maximum efficiency This should result in reduced run time and may also reduce the siAe of the object module Lo!e&er) use of O,TI1I9/ increases compile time O,TI1I9/ is turned off !hene&er a se&ere error is detected O,TI1I9/ and T/ST are mutually exclusi&eB if T/ST is specified) O,TI1I9/ is ignored 4i&en these facts "and the additional compile time consumed by the O,TI1I9/ option$) it might be best to use +OO,TI1I9/ !hile in initial program de&elopment or debugging mode 6se of O,TI1I9/ along !ith +61,.OC",0*$) %3O) applicable$ may result in significant run time sa&ings and 0%STS.T "!hen

OUTDD: This is a COBOL compiler option 0ormat( O6T**"ddname$ IB1-default( O6T**"S-SO6T$ %bbre&iations( O6T time

O6T** may be used to specify a ddname other than S-SO6T for run output produced by the *IS,L%- &erb RENT: This is a COBOL compiler option 0ormat( ./+T +O./+T %bbre&iations( +one IB1-default( +O./+T ./+T specifies that the generated object code is to

be

reentrant object

+O./+T specifies that the program be generated as a nonreentrant module "This option should not be used for CICS programs $

.eentrant object code can be executed only in run units !here all programs ha&e been generated !ith the ./SI*/+T option "./+T automatically forces on ./SI*/+T$ ./+T must be specified if the program !ill be executed under J% in &irtual storage addresses abo&e the 2=-meg line In this case) the *%T% option can be used to control !hether dynamic data areas are allocated in unrestricted storage or from belo! the 2=-meg line ./+T automatically forces on ./SI*/+T and is not &alid !ith +O./SI*/+T *-+%1 automatically forces on ./SI*/+T and is not &alid !ith +O./SI*/+T Outlined belo! are the < &alid combinations of *-+%1) ./SI*/+T) NORENT+NORES+NOD,NAM +onreentrant code) literal is a static call COBOL library subroutines are statically called) C%LL and ./+T(

NORENT+RES+NOD,NAM +onreentrant code) COBOL C%LL literal is a static call NORENT+RES+D,NAM +onreentrant code) COBOL library subprograms are all dynamically called RENT+RES+NOD,NAM .eentrant code) COBOL literal is a static call RENT+RES+D,NAM +onreentrant code) COBOL library subprograms are all dynamically called subroutines and application library subroutines are dynamically called) C%LL subroutines and application library subroutines are dynamically called)

RESIDENT: This is a COBOL compiler option 0ormat( ./SI*/+T +O./SI*/+T %bbre&iations( ./S +O./S IB1-default( +O./SI*/+T ./SI*/+T) !hich conforms to the %+SI standard) specifies that the COBOL Library 1anagement 0eature be in&o#ed This causes most COBOL library subroutines to be loaded dynamically at run time rather than being statically lin#-edited into the run unit "This allo!s for application programs to automatically pic# up any fixes applied to the library subroutines !ithout ha&ing to be lin#-edited again $ This option re'uires that the VS COBOL II subroutine library be included in the FOBLIBHST/,LIB concatenation at run time +O./SI*/+T) if used !hen compiling each COBOL program in the run unit) specifies that the load module contain all re'uired VS COBOL II library subroutines needed for execution In this case) the VS COBOL II subroutine library need not be included in the FOBLIBHST/,LIB concatenation The ./SI*/+T option is automatically in effect !hen the *-+%1 option is specified or !hen the source program uses C%LL identifier "i e ) a C%LL statement !here the program to be called is specified in the form of an identifier rather a literal$ 6se of the VS COBOL II Library in conjunction !ith an OSHVS program compiled !ith the ./SI*/+T option may result in performance degradation at run time 0or more information on the interaction of ./SI*/+T and other options) see the ./+T option SEQUENCE: This is a COBOL compiler option 0ormat( S/56/C+/ +OS/56/+C/ %bbre&iations( S/5 +OS/5 IB1-default( S/56/+C/ S/56/+C/ instructs the compiler to ensure that the source program lines are in ascending /BC*IC collating se'uence based on the information coded in columns 2 through = "Source program lines containing spaces in columns 2 through = are not chec#ed $ If +61B/. is also specified) the se'uence chec#ing is based on "rather than the /BC*IC$ collating se'uence the numeric COBOL significant compiler

If S/56/+C/ is specified and CO,- statements are used) the source program line numbers should be coordinated !ith the line numbers in each referenced CO,- member +OS/56/+C/) !hich se'uence chec#ing SIZE: This is a COBOL compiler option 0ormat( SI9/"nnnn$ conforms to the %+SI standard) suppresses this

"nnn:$ "1%J$ !here nnnn is a decimal number no less than =<<D=> nnn: is a decimal number in 2: "2>;?$ increments !ith a minimum &alue of =?>: 1%J re'uests the largest bloc# of storage a&ailable in the user region %bbre&iations( S9 IB1-default( SI9/"1%J$ SI9/ specifies the amount of main storage to be made a&ailable for the compile process In an J% en&ironment) SI9/"1%J$ !ill cause the compiler to use all the storage in the user region abo&e the 2=-meg line "Storage belo! the 2=meg line !ill be used for compiler modules that must be loaded belo! the line and for !or# file buffers $ SI9/"1%J$ should not be used if there is a need for the compiler specific amount of unused storage in the user region SOURCE: This is a COBOL compiler option 0ormat( SO6.C/ +OSO6.C/ %bbre&iations( S +OS IB1-default( SO6.C/ SO6.C/ re'uests that the compiler produce a listing of the input program "including statements brought in by CO,- or statements$ SO6.C/ must be specified in order to get embedded diagnostics SO6.C/ output can be limited "i e ) turned on or off as through the use of GCO+T.OL SO6.C/ and GCO+T.OL statements placed in the source program SPACE: This is a COBOL compiler option 0ormat( S,%C/"2$ ";$ "D$ %bbre&iations( +one re'uired$ +OSO6.C/ to lea&e a

source ,.OC/SS

IB1-default( S,%C/"2$

S,%C/) !hich is meaningful only !hen SO6.C/ is specified) sets the "single) double) or triple$ spacing to be used bet!een the printed lines in the source code listing SSRANGE: This is a COBOL compiler option 0ormat( SS.%+4/ +OSS.%+4/ %bbre&iations( SS. +OSS. IB1-default( +OSS.%+4/ SS.%+4/ specifies that the generated code is to chec# to ensure

that(

the effecti&e address generated for an index or subscript does not reference an area outside the region of the associated table the current effecti&e length for a &ariable-length item "i e ) OCC6.S */,/+*I+4 O+$ is no greater than its maximum defined length for reference modification expressions( the reference modification starting position is no less than 2 and no greater than the current length of the subject item the reference modification length &alue "if specified$ is no less than 2 the reference modification starting position and length &alue "if specified$ do not reference an area that extends beyond the end of the subject item

If an 7out of rangeE condition is detected) an error message !ill be !ritten to !rite-to-programmer route code 22 "i e ) usually the S-S,.I+T dd statement$ and the program !ill be terminated 3hen running under CICS) these messages are !ritten to a temporary storage 'ueue The SS.%+4/ option can result in some performance degradation The +OSS.%+4/ run time option can be specified at run time in order to inhibit the range chec#ing code generated by specifying SS.%+4/ as as a compile time option In this !ay) the 7dormantE range chec#ing code can be acti&ated at run time "i e ) to assist in resol&ing any unexpected errors$ !ithout ha&ing to recompile TERMINAL: This is a COBOL compiler option 0ormat( T/.1I+%L +OT/.1I+%L %bbre&iations( T/.1 +OT/.1 IB1-default( +OT/.1I+%L T/.1I+%L re'uests that a copy of each diagnostic message be sent S-ST/.1 data set +OT/.1I+%L suppresses this duplicate output TEST: This is a COBOL compiler option 0ormat( T/ST +OT/ST %bbre&iations( T/S +OT/S IB1-default( +OT/.1I+%L T/ST re'uests that the compiler produce object code that can be !ith VS COBOL II batch or interacti&e debug The follo!ing options are forced on !hen T/ST is specified( +O0*61,) +OO,TI1I9/) OBF/CT) and ./S If +61B/. is also specified) the se'uence fields in columns 2 must be numeric through =

to the

executed

If both the 3ITL */B644I+4 1O*/ clause and the 6S/ 0O. */B644I+4 statement are specified) then T/ST is deacti&ated "T/ST !ill appear in the

options listB ho!e&er) a diagnostic message !ill because of the conflict) T/ST is not in effect $

be issued to indicate that) run time

6sing T/ST can result in significant performance degradation at TRUNC: This is a COBOL compiler option 0ormat( T.6+C"ST*$ "O,T$ "BI+$

%bbre&iations( +one IB1-default( T.6+C"ST*$ T.6+C"ST*$) !hich conforms to the %+SI standard) specifies that) for 6S%4/ BI+%.- recei&ing fields) the final result of an arithemetic expression or 1OV/ statement is truncated to the number of digits in the ,ICT6./ clause of the BI+%.- recei&ing field T.6+C"O,T$) !hich is pro&ided as an IB1 extension) is a performance option !hich causes the compiler to assume that data being mo&ed to a 6S%4/ BI+%.- recei&ing field conforms to the associated ,ICT6./ clause 0or this reason) the data !ill be truncated in !hat appears to the compiler to be the most optimal !ay at the time the code is being generated This means that the truncation may be based on the number of digits in the ,ICT6./ clause or it might be based on the actual physical siAe of the binary field in storage "i e ) as a half!ord) full!ord) or double!ord$ If the data being mo&ed has a &alue !ith a larger precision than that defined in the ,ICT6./ clause) an unpredictable truncation of high order digits may occur Since the type of truncation generated for T.6+C"O,T$ is unpredictable) T.6+C"O,T$ should be used only if the data being mo&ed to binary items is guaranteed not to ha&e a &alue !ith a larger precision than that defined by the ,ICT6./ clause for those binary items T.6+C"BI+$) !hich is pro&ided as an IB1 extension) specifies that all binary items "no matter ho! many digits are sho!n in their ,ICT6./ clause$ are to be treated as a half!ord) full!ord) or double!ord "The number of digits in the ,ICT6./ clause is used only to determine the minimal binary field -i e ) half!ord) full!ord) double!ord- re'uried to store the item $ This means) once the physical siAe of the field is determined) that it is treated as a half!ord) full!ord) or double!ord both !hen processed as a sending field and !hen processed as a recei&ing field In this case then) the only !ay to lose significant digits is to mo&e a larger binary field to a smaller binary field "i e ) full!ord to half!ord) etc $ T.6+C"BI+$ should be used !hen there is a possibility of ha&ing more than @ digits in a full!ord or more than ? digits in a half!ord "Specifying a ,ICT6./ clause for a binary item !ith more than ? digits forces it into a full!ord Lo!e&er) a half!ord can contain some numbers of up to < decimal digits and a full!ord can contain some numbers of up to 2> decimal digits $ T.6+C"BI+$ should also be used !hen interfacing !ith other languages or products that ha&e SHDI> format binary data "i e ) ,LH2) 0O.T.%+) SHDI> assembler) CICS) *B;) etc $ 0or the 1OV/ statement sho!n belo!(

MOVE -./00 TO BINFIELD1. !here BI+0I/L*2 is defined as( BINFIELD1 PIC 2(3) COMP. The result of compiling !ith the &arious binary truncation belo!( *ecimal Lex ---------D;I>> I0BC ;I>> D;I>> >%CC I0BC I0BC options is sho!n

Sending Value

.ecei&ed Value T.6+C"ST*$ .ecei&ed Value T.6+C"BI+$

.ecei&ed Value T.6+C"O,T$G D;I>> or or ;I>> >%CC

G*epends upon ho! the compiler generates the truncation logic in particular case VBREF: This is a COBOL compiler option

this

0ormat( VB./0 +OVB./0 %bbre&iations( +one IB1-default( +OVB./0 VB./0 re'uests that the compiler produce a cross-reference sho!ing all &erb types used in the source program and the line numbers of the lines in !hich they appear % summary sho!ing ho! many times each &erb is used is also produced WORD: This is a COBOL compiler option 0ormat( 3O.*"!!!!$ +O3O.* %bbre&iations( 3* +O3* IB1-default( +O3O.* 3O.* instructs the compiler to use an alternati&e reser&ed !ord current compilation

table for the

The !!!! sub-parameter specifies the "up to ?$ characters that are to be appended to 8I4-CK to form the name of the reser&ed !ord table to be used These ? characters may not include the dollar sign "P$ nor any of the character strings listed belo!( %S12 %S1; *I%4 *1%, *O,T 04/+ I+IT LIBO LIB. LST. LVL> LVL2 LVL; LVLD LVLC O,T1 OSC+ ,4/+ .CTL .*,. .*SC .3T S%3 SC%+ SI1* J./0 +O3O.*) !hich conforms to the %+SI standard) is a fixed default "i e ) cannot be changed by an application programmer &ia a FCL parm or ,.OC/SSHCBL statement$

XREF: This is a COBOL compiler option 0ormat( J./0 +OJ./0 %bbre&iations( J +OJ IB1-default( +OJ./0 J./0 re'uests that the compiler produce a sorted cross-reference sho!ing /BC*IC data-names and /BC*IC procedure names "in alphanumeric order$ and the line numbers of the source lines in !hich they are referenced It also includes a listing of *BCS data-names and *BCS procedure names in the same order as they appear in the source program "unless the *BCSJ./0 installation option is selected$ as !ell as a section listing all the program names that are referenced in the source program and the line number in !hich they are defined "!ith external program names identified as such$ In the data-name portion of the J./0 listing) line numbers preceded by the letter 81K indicate the data item is modified by a statement on that line /lementary names !ithin a group item referenced in a 1OV/ CO../S,O+*I+4 statement !ill also be included in the J./0 listing If both J./0 and SO6.C/ are specified) cross-reference information !ill also be embedded in the source listing itself "i e ) at the right hand end of the line to !hich it applies$ This information includes line number references as !ell as an indication that a name is undefined "6+*$) duplicately defined "*6,$) implicitly defined "I1,$) or) if a program name) externally defined "/JT$ J./0 and +OSO6.C/ produce only the sorted cross-reference ZWB: This is a COBOL compiler option 0ormat( 93B +O93B %bbre&iations( +one IB1-default( 93B 93B) !hich conforms to the %+SI standard) specifies that the compiler generate code to remo&e the sign from a signed external decimal field !hen comparing such a field to an alphanumeric field 0or the t!o fields defined belo! "!ith their hex &alues sho!n to 4e5 V!"%e 0I/L*% 0I/L*B --------,IC S@"D$ V%L6/ O2;D ,IC J"D$ V%L6/ 82;DK 020;CD 020;0D considered an une'ual the right$( listing

Compiling !ith 93B !ould result in the t!o fields abo&e being e'ual in &alue !hen comparedB +O93B !ould result in comparison

You might also like