Skip to content

CMNSSIDN - LINK EDIT Control Preparation

Program CMNSSIDN prepares link edit control statements for the link edit step in stage, recompile, and relink.

If there are no link edit control statements for the object or load being processed, program CMNSSIDN fabricates the necessary statements and passes them to the subsequent link edit step. The fabricated link edit control statement are not kept after the link edit step.

If you provide link edit control statements in a package staging library or in a baseline member, CMNSSIDN processes those control statement, sometimes modifying them, and passes them to the subsequent link edit step. The control statements in the staging or baseline member are not changed.

Note

File tailoring for skeleton CMN$$LNK may add INCLUDE statements for CICS language interface modules to the link edit control passed from program CMNSSIDN and input the SYSLIN ddname for the linkage editor.

Whether CMNSSIDN modifies existing link edit control statements, or how it fabricates control statements from scratch, is determined by:

  • Object created by previous compile or recompile processing.

  • CMNSSIDN program execution parameters included in the JCL when skeleton CMNSSIDN is file tailored.

  • CMNSSIDN program SYSIN keyword options included in the JCL when skeleton CMNSSIDN is file tailored.

CMNSSIDN Input

  • Object code in a sequential file from a compile step.

  • Link edit control statements from a dynamically allocated staging or baseline library.

  • Optional program execution parameters.

  • Keyword options read through SYSIN.

Output

Link edit control statements ready for a link edit step.

Sample JCL

This is a sample job fragment that illustrates what a CMNSSIDN step can look like. This JCL was created from skeleton CMN$$SSI by ISPF file tailoring.

//SSIDN     EXEC    PGM=CMNSSIDN, *** PROCESS LINK-EDIT CONTROL CARDS
//                  COND=(4,LT)
//SYSPRINT  DD      DISP=(,PASS),DSN=&&LIST40S1,
//                  UNIT=SYSDA,SPACE=(CYL,(5,5),RLSE),
//                  DCB=(RECFM=FA,LRECL=133,BLKSIZE=0)
//SYSUDUMP  DD      SYSOUT=*
//ABNLIGNR  DD      DUMMY
//OBJ       DD      DUMMY
//LCT       DD      DISP=(,PASS),DSN=&&LCT,
//                  UNIT=SYSDA,SPACE=(TRK,(1,5)),
//                  DCB=(RECFM=F,LRECL=80,BLKSIZE=0)
//STG       DD      DISP=(,PASS),DSN=&&NULLLCT,
//                  UNIT=SYSDA,SPACE=(TRK,(1,1,1),RLSE),
//                  DCB=(DSORG=PO,RECFM=FB,LRECL=80,BLKSIZE=0)
//SYSIN     DD      *
BAS=CMNTP.S6.V810.BASE.ACTP.LCT
LCT=ACPSRS00
SSI=67BCF0C2
PKG=ACTP000038
RLK=Y
UIL=Y
OPT=CALL

...

DD Statements

This table describes DD statements for CMNSSIDN.

DDNAME I/O Purpose
OBJ Input Sequential file containing object code from a compile step. This DD statement is omitted for relink.
LCT Output Sequential file containing control statements for a linkage edit or binder step.
STG Input Staging library for link edit control members.
SYSIN Input File containing 80-byte keyword option records.
SYSPRINT Output File that displays information from the execution of CMNSSIDN: See Reporting.

...

Program Execution Parameters

The PARM= statement is not required in CMNSSIDN execution JCL. Any parameter that can be input though the program PARM= statement can be input through a SYSIN control statement using the OPT= keyword. If a parameter is input through both the PARM= statement and an OPT= SYSIN control statement, the SYSIN control statement takes precedence.

This table describes program parameters for program CMNSSIDN.

Parameter Use Description
CALL Optional Pass INCLUDE statements found in staging or baseline link edit control member to the output file at ddname LCT. Default: Omitting this parameter and the NCAL parameter is the same as coding CALL.
NCAL Optional Do not pass INCLUDE statements found in staging or baseline link edit control member to the output file at ddname LCT. Default: Omitting this parameter and the CALL parameter is the same as coding CALL.
NAME Optional Pass NAME statements found in staging or baseline link edit control member to the output file at ddname LCT. If no NAME statement is found in a stored link edit control member, or if there is no stored member, fabricate a NAME statement and write to ddname LCT. Default: Omitting this parameter and the NONAME parameter is the same as coding NAME.
NONAME Optional Do not pass NAME statements found in staging or baseline link edit control members to the output file at ddname LCT. Suppress fabrication of NAME statement if no NAME statement is found in a stored link edit control member, or if there is no stored member. Default: Omitting this parameter and the NAME parameter is the same as coding NAME.
DLITASM Optional Generate these link edit control statements and write to the output LCT file.
INCLUDE SYSLIB(DFSLI000)
 ENTRY DLITASM
DLITCBL Optional Generate these link edit control statements and write to the output LCT file.
INCLUDE SYSLIB(DFSLI000)
 ENTRY DLITCBL
DLITPLI Optional Generate these link edit control statements and write to the output LCT file.
INCLUDE SYSLIB(DFSLI000)
 ENTRY DLITPLI
OBJECT Optional Change object processing as follows:
- Copy object code from ddname OBJ to ddname LCT.
- Fabricate SETSSI and IDENTIFY statements and write to ddname LCT.
- Copy any non-object from ddname OBJ to ddname LCT.
Non-object in an object deck is usually a NAME link edit control statement generated by the Easytrieve compiler or by the COBOL compiler when the NAME option is used.
Use the OBJECT parameter when staging or recompiling Easytrieve source or COBOL source when the NAME option of the COBOL compiler is used.

...

SYSIN Control Statements

CMNSSIDN keyword options are input to the program through the SYSIN ddname.

  • Keyword options must start in position 1.

  • A SYSIN record should contain only one keyword option.

  • Blank SYSIN records are not permitted.

  • Comment records are designated by * in position 1.

This table describes keyword options input to CMNSSIDN through the SYSIN ddname.

Option Use Description
* in Position 1 Optional Denotes a comment
BAS=library Required Specifies a baseline library for link edit control members.
CST=Y Optional Forces CMNSSIDN use the first CSECT name in the object
LCT=member Required Specifies a link edit control member to input to program CMNSSIDN.
Default: If you omit this control statement, the output load module name will be set to TEMPNAME.
NID=csect Optional Suppresses generation of an IDENTIFY statement for the specified CSECT. Up to 64 NID= control statements can be input to CMNSSIDN.
OPT=parameter Optional Inputs program execution parameters through the SYSIN ddname. Program execution parameters are described in "Program Execution Parameters." Example: OPT=NCAL
Note: Each OPT= keyword specifies only one CMNSSIDN execution parameter, but there can be multiple OPT= keyword option records input to SYSIN. The following are functionally equivalent:
PARM='NAME,CALL,OBJECT'
...and...
//SYSIN  DD *
OPT=NAME
OPT=CALL
OPT=OBJECT
PKG=packageID Required Specifies the package ID of the component being processed. The package ID is part of the ChangeMan ZMF fingerprint that CMNSSIDN creates for the IDENTIFY statement that is fabricated and written to ddname LCT.
Default: If you omit this control statement, the package ID in the fingerprint is set to 10 spaces.
RLK=Y Optional Indicates that there is no object input to CMNSSIDN.
Default: The default for this option is RLK=N.
RMB=csect Optional Indicates that package audit auto resolve has found a CSECT that must be replaced in the composite load module named in LCT=member. If there is no link edit control for LCT=member, then CMNSSIDN fabricates a REPLACE statement for the specified CSECT and writes the statement to ddname LCT. See INCLIB and CMNSSIDN.
SSI=hexvalue Required Specifies the hexadecimal value in the SETSSI statement written to ddname LCT. This number is also included in the ChangeMan ZMF fingerprint in the IDENTIFY statement fabricated by CMNSSIDN and written to ddname LCT.
Default: If you omit this control statement, the SETSSI in the fingerprint is set to zeros.
UIL=Y Optional Indicates when CMNSSIDN fabricates a REPLACE link edit control statement, it will fabricate an INCLUDE INCLIB(member) rather than INCLUDE SYSLIB(member) and write it to ddname LCT. See INCLIB and CMNSSIDN.
Default: The default for this option is UIL=N.

...

INCLIB and CMNSSIDN

Skeleton CMN$$ILL builds a library concatenation at ddname INCLIB for relink job JCL. INCLIB contains staging, promotion, and baseline libraries for the relink target load library type.

However, ddname INCLIB is not always referenced when a relink is executed. CMNSSIDN fabricates an INCLUDE INCLIB(member) statement when:

  1. A relink job is initiated by package audit auto resolve to replace one or more statically linked subprograms in composite load module member.

  2. There are no link edit control statements for member in baseline or staging libraries. (The composite load module member was created with the Automatic Call Library facility of the linkage editor when member source was staged or recompiled.)

Return Codes and Error Messages

This table describes user abend codes for program CMNSSIDN.

Code Cause
S000 U0005 Unable to open //SYSPRINT.
S000 U0006 Unable to open //SYSIN.
S000 U0007 Unable to open //OBJ when PARM=OBJECT or OPT=OBJECT in //SYSIN is specified.
S000 U0008 Unable to open //LCT.
S000 U0009 Read error on baseline or staging LCT member.

...

Reporting

Program CMNSSIDN reports input keyword options, program execution parameters, what link control statement libraries it used, and the output link edit control statements it wrote to output ddname LCT. The report is written to the SYSPRINT ddname.

This is an example of the report.

********************************************************************************
* DDNAME: SSIDN.SYSPRINT *
********************************************************************************
ChangeMan(R) ZMF    CMNSSIDN - 8.1.0 TUESDAY FEBRUARY 24, 2015 20:46:47
PARM=''
SYSIN: BAS=CMNTP.S6.V810.BASE.ACTP.LCT
SYSIN: LCT=ACPSRC1A
SYSIN: SSI=67BCDAA5
SYSIN: PKG=ACTP000038
SYSIN: RLK=
SYSIN: UIL=
SYSIN: OPT=CALL
Options compiled from PARM/SYSIN follow:
 NAME       - Allow "NAME" directive.
 CALL       - Allow "INCLUDE" directives.
END OF DATA ON "OBJ" DETECTED
STAGING "LCT" OPENED
STAGING "LCT" MEMBER NOT FOUND
ATTEMPTING TO ALLOCATE BASELINE "LCT"
BASELINE "LCT" ALLOCATED
BASELINE "LCT" OPENED
BASELINE "LCT" MEMBER NOT FOUND
FABRICATING LCT CARDS FROM SCRATCH
    <...+....1....+....2....+....3....+....4....+....5....+....6....+....7.>.
LCT:    SETSSI      67BCDAA5
LCT:    IDENTIFY    ACPSRC1A('ACPSRC1A/67BCDAA5/ACTP000038')
LCT:    NAME        ACPSRC1A(R)

...

CMNSSIDN Examples

- Stage simple program without link edit control member

Input LCT

None

Output LCT

FABRICATING LCT CARDS FROM SCRATCH 
    <...+....1....+....2....+....3....+....4....+....5....+ 
LCT:     SETSSI 67BCDAA5 
LCT:     IDENTIFY ACPSRC1A('ACPSRC1A/67BCDAA5/ACTP000038') 
LCT:     NAME ACPSRC1A(R)

...

- Stage simple program with link edit control member

Input LCT

    <...+....1....+....2....+....3....+....4....+....5....+
LCT:    NAME ACPSRS5C(R)

...

Output LCT

PROCESSING MEMBER IN BASELINE "LCT"
    <...+....1....+....2....+....3....+....4....+....5....+
LCT:     SETSSI 53F61C58
LCT:     IDENTIFY ACPSRS5C('ACPSRS5C/53F61C58/ACTP000082')
LCT:     NAME ACPSRS5C(R)

...

- Relink composite load using link edit control member

Input LCT

    <...+....1....+....2....+....3....+....4....+....5....+
LCT: INCLUDE SYSLIB(ACPSRS5A)
LCT: INCLUDE SYSLIB(ACPSRS5B)
LCT: INCLUDE SYSLIB(ACPSRS5C)
LCT: INCLUDE SYSLIB(ACPSRS00)
LCT:    NAME ACPSRC50(R)

...

Output LCT

PROCESSING MEMBER IN BASELINE "LCT"
    <...+....1....+....2....+....3....+....4....+....5....+
LCT: INCLUDE SYSLIB(ACPSRS5A)
LCT: INCLUDE SYSLIB(ACPSRS5B)
LCT: INCLUDE SYSLIB(ACPSRS5C)
LCT: INCLUDE SYSLIB(ACPSRS00)
LCT:        SETSSI 53F7E98A
LCT:    NAME ACPSRC50(R)

...

- Relink initiated by audit auto resolve for composite load without link edit control member (link edited with Automatic Call Library facility)

Input LCT

None

Output LCT

FABRICATING LCT CARDS FROM SCRATCH
    <...+....1....+....2....+....3....+....4....+....5....+
LCT: REPLACE ACPSRS1B
LCT: INCLUDE INCLIB(ACPSRC1A)
LCT:    SETSSI 53F7EADF
LCT:        NAME ACPSRC1A(R)

...