I don't think that EXCI is truly being used in this case.  Unless the program 
is compiled with the CICS('EXCI') option, or it calls the "callable" EXCI 
routine (DFHXCIS) directly, the fact that you have linked in the EXCI stubs 
doesn't seem to matter.


As for DFHECI, isn't that an older CICS stub for COBOL programs?  For COBOL 
CICS links we include DFHELII.  I don't know if there is any real difference, 
other than that DFHECI has a few entry point labels and DFHELII has "quite a 
few".


The fact is, if you don't have any explicit include of a CICS stub, and you 
have AUTOLINK on, you will end up automatically linking in DFHEAI (the 
"assembler" CICS stub).  This is because SDFHLOAD has declared DFHEI1 (the 
entry point called by a non-EXCI EXEC CICS) as an alias for DFHEAI.


It seems to me that as long as your COBOL program isn't some how attempting to 
invoke an entry point other than DFHEI1, it does not appear to matter which 
CICS stub is actually linked in to the program.


I'm sure there is more to it, but I don't know what.


Here are some binder output examples...


When linking in DFHXCSTB (note, does not have the DFHEI1 label):
                0  DFHXCSTB           CSECT       2AA  SYSLIB    14  DFHXCSTB
       0        0     DFHXCIS            LABEL
     1BC      1BC     DFHXCIE            LABEL

When linking DFHELII (includes DFHEI1 label):
                0  DFHELII            CSECT        28  SYSLIN    02  DFHELII
       0        0     DFHEPIN            LABEL
       8        8     DFHEXEC            LABEL
       8        8     DFHEI1             LABEL
       8        8     DFHEPI             LABEL
       8        8     DFHEI2             LABEL
                      [...a lot more labels...]

When linking DFHECI (includes DFHEI1 label):
                0  DFHECI             CSECT        20  SYSLIN    02  DFHECI
       8        8     DFHEI1             LABEL
       8        8     DLZEI01            LABEL
       8        8     DLZEI02            LABEL
       8        8     DLZEI03            LABEL
       8        8     DLZEI04            LABEL

When autolinking (no explicit binder statement):
              480  DFHEAI          *  CSECT        28  SYSLIB    08  DFHEI1
       8      488     DFHEI1             LABEL


Frank

________________________________
From: IBM Mainframe Discussion List <[email protected]> on behalf of 
Tony Thigpen <[email protected]>
Sent: Sunday, April 23, 2017 2:08 PM
To: [email protected]
Subject: Re: DFHEXLI vs DFHECI

I can verify that it really is an online program. It is in CICS and the
programmer just recompiled it with a small change to verify it was
really the right compile. The change showed up and I looked at the
linkmap (which I included with the last email).

Tony Thigpen

[email protected] wrote on 04/23/2017 12:50 PM:
> Hello Tony
>
> I'm a bit confused ...
> Are You Sure this is a program that runs as a CICS Transaction ?
> Can  You issue CEMT I PROG(xxxxx), or CEMT I TRANS(*) PROG(xxxxxxxx) or  
> better yet issue a CECI LOAD PRPGRAM(xxxxxxxx)
> .
> I suspect its a Batch Submitted program using EXCI to LINK To or Start a 
> transaction
> in a CICS Region.
>
>
> ---------- Original Message ----------
> From: Tony Thigpen <[email protected]>
> To: [email protected]
> Subject: Re: DFHEXLI vs DFHECI
> Date: Sat, 22 Apr 2017 15:53:51 -0400
>
> I had a little time and looked at this closer. I am trying to determine
> what they are really doing and why.
>
> Here is the JCL that they use to compile:
>
> ... translate step
> ... cobol step with output going to
> //SYSLIN   DD DSN=&&LOADSET,DISP=(MOD,PASS),
> //            UNIT=&WORK,SPACE=(80,(250,100))
> ... then
> //COPYLINK EXEC PGM=IEBGENER,COND=(7,LT,COB)
> //SYSUT1   DD DSN=&INDEX..SDFHMAC(DFHEXLI),DISP=SHR
> //SYSUT2   DD DSN=&&COPYLINK,DISP=(NEW,PASS),
> //            DCB=(LRECL=80,BLKSIZE=400,RECFM=FB),
> //            UNIT=&WORK,SPACE=(400,(20,20))
> //SYSPRINT DD SYSOUT=&OUTC
> //SYSIN    DD DUMMY
> //*------------------------------------------------
> //LKED   EXEC PGM=IEWL,REGION=&REG,
> //            PARM='&LNKPARM',COND=(5,LT,COB)
> //SYSLIB   DD DSN=&INDEX..SDFHEXCI,DISP=SHR
> //         DD DSN=&INDEX..SDFHLOAD,DISP=SHR
> //         DD DSN=&LE370HLQ..SCEELKED,DISP=SHR
> //         DD DSN=&INDEX..SDFHCOB,DISP=SHR
> //         DD DSN=&INDEX..SDFHMAC,DISP=SHR
> //         DD DSN=&INDEX..SDFHSAMP,DISP=SHR
> //SYSLMOD  DD DSN=XXXX.&CICS..USER.LOADLIB,DISP=SHR
> //SYSUT1   DD UNIT=&WORK,DCB=BLKSIZE=1024,
> //            SPACE=(1024,(200,20))
> //SYSPRINT DD SYSOUT=&OUTC
> //SYSLIN   DD DSN=&&COPYLINK,DISP=(OLD,DELETE)
> //         DD DSN=&&LOADSET,DISP=(OLD,DELETE)
> //         DD DDNAME=SYSIN
>
> They run the compile using:
> /HBCC08  EXEC CICSCCLH,.....
> //TRN.SYSIN DD *
> ./ INCLUDE HBCC08,LIB=PROD
> /*
> //LKED.SYSIN DD *
>       NAME HBCC08(R)
> /*
> //
>
> It seems that ..SDFHMAC(DFHEXLI) only contains one line:
>     INCLUDE SYSLIB(DFHXCSTB)
>
> DFHXCSTB is in ..SDFHEXCI
>
> It appears that during the link stage, DFHEI1 is being pulled in
> automatically.
>
> BATCH EMULATOR  JOB(HBCC08  ) STEP(HBCC08  ) PGM= IEWL
> PROCEDURE(LKED    )
> IEW2278I B352 INVOCATION PARAMETERS - AMODE(31),RMODE(ANY),LIST,XREF
>
> IEW2322I 1220  1     INCLUDE SYSLIB(DFHXCSTB)
> IEW2322I 1220  2       NAME HBCC08(R)
>                                          C R O S S - R E F E R E N C E  T
> A B L E
>
> _________________________________________
> TEXT CLASS = B_TEXT
>
> ---------------  R E F E R E N C E  --------------------------  T A R G
> E T  ---
>     CLASS                            ELEMENT       |
>
>     OFFSET SECT/PART(ABBREV)          OFFSET  TYPE | SYMBOL(ABBREV)
> SECTION (ABB
>       2A0 HBCC08                         50 V-CON | IGZCBSO
> IGZCBSO
>       30A HBCC08                         BA V-CON | CEESTART
> CEESTART
>       32A HBCC08                         DA V-CON | CEESTART
> CEESTART
>       32E HBCC08                         DE V-CON | CEEBETBL
> CEEBETBL
>       384 HBCC08                        134 V-CON | DFHEI1
> DFHEAI
>       388 HBCC08                        138 V-CON | CEELOCT
> CEELOCT
>      33BC CEEBETBL                        4 V-CON | CEEBXITA
> $UNRESOLVED(
>
> So, what are they really doing by including something from the EXCI
> library instead of the normal INCLUDE?
>
> Tony Thigpen
>
> [email protected] wrote on 04/22/2017 09:59 AM:
>> Hi Tony
>>
>> I found two references to DFHEXLI
>> and also refer to the external interface guide as you mentioned
>>
>> CICS.SDFHPROC(DFHYXTDL)
>>
>> CICS.SDFHPROC(DFHEXTAL)
>>
>> ---------- Original Message ----------
>> From: Tony Thigpen <[email protected]>
>> To: [email protected]
>> Subject: DFHEXLI vs DFHECI
>> Date: Fri, 21 Apr 2017 21:09:07 -0400
>>
>> I am working with a site, and their CICS COBOL compile procs include
>> DFHEXLI instead of DFHECI.
>>
>> I thought DFHEXLI was only for batch programs using the external
>> interface link. But, there is not much information about it when I
>> google it.
>>
>> Can DFHEXLI safely be used for "normal" CICS programs?
>>
>
> ----------------------------------------------------------------------
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to [email protected] with the message: INFO IBM-MAIN
>
> ----------------------------------------------------------------------
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to [email protected] with the message: INFO IBM-MAIN
>
>

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to