EGL Development User Group

EGL Development User Group

EGL Development User Group

The EGL Development User Group is dedicated to sharing news, knowledge, and insights regarding the EGL language and Business Developer product. Consisting of IBMers, HCL, and users, this community collaborates to advance the EGL ecosystem.

 View Only
Expand all | Collapse all

EGL NEWCOPY in Rational COBOL Runtime for zSeries

Discussion Topic

Discussion TopicTue February 02, 2016 04:51 PM

Discussion Topic

Discussion TopicTue February 02, 2016 05:23 PM

Discussion Topic

Discussion TopicTue February 02, 2016 05:30 PM

Discussion Topic

Discussion TopicTue February 02, 2016 06:07 PM

Discussion Topic

Discussion TopicFri February 19, 2016 05:11 PM

Discussion Topic

Discussion TopicTue February 23, 2016 08:22 AM

Discussion Topic

Discussion TopicTue February 23, 2016 05:12 PM

  • 1.  EGL NEWCOPY in Rational COBOL Runtime for zSeries

    Posted Mon June 02, 2008 01:42 AM
    Hi all,
    Is there a way to do EGL NEWCOPY in Rational COBOL Runtime for zSeries V6.0.1 through batch.
    SystemAdmin


  • 2.  Re: EGL NEWCOPY in Rational COBOL Runtime for zSeries

    Posted Mon June 02, 2008 07:19 AM
    You should be able to run the EGL NEWCOPY utility in batch. Try searching the IBM Rational COBOL Runtime Guide for zSeries for: ELABNEW. That should take you directly to the information you are looking for. If you migrated from VisualAge Generator, I believe that ELABNEW works the same in both VAGen and EGL.
    SystemAdmin


  • 3.  Re: EGL NEWCOPY in Rational COBOL Runtime for zSeries

    Posted Fri December 11, 2015 01:05 AM

    When the developer builds a program in RBD it produces the COBOL program and LIBxx programs in z/OS.

    I have noticed that the EGL RBD  Developer uses CEMT SET PROG(progname) NEW  and CEMT SET SET PROGRAM(LIB*) NEW  etc in CICS in order to make a newcopy. Is there another  way to NEWCOPY all the related objects in CICS in a single command. 

     

    The ELABNEW program has option 1 ,(Program Library Service),  will this NEWCOPY all the related program objects, or is there another way to do this,

    mascaroni


  • 4.  Re: EGL NEWCOPY in Rational COBOL Runtime for zSeries

    Posted Fri December 11, 2015 08:30 AM

    I am not entirely sure I follow you on this question.

    My confusion:

    - RBD does not have a "built-in" newcopy that is automatic during generation

    - You say it generates a LIBxx, but I would assume this means have library parts (in the source) and you are generating both programs AND libraries.   I don't know of any specific generated files that are always start with LIBxx

     

    But to answer your question, no..there is not an option to do a newCopy for ALL the generated parts for a program or deployment descriptor, etc because each is a little different.

    The way it can be done automatically is to modify the build scripts on the host to invoke ELABNEW or to do it via native CICS methods.   Each generated file (library, program, services, etc) gets built (compiled, etc) separately so if the newcopy of part of the build script for each then after generation ends "each" part would have had a NEWCOPY done.

     

    markevans


  • 5.  Re: EGL NEWCOPY in Rational COBOL Runtime for zSeries

    Posted Thu January 28, 2016 03:29 AM

    Are there any other options to using ELABNEW to perform a newcopy of CICS related objects?

    Is it possible to modify the HOST/zOS templates and invoke say a rexx procedure to also do other actions related to a generation?

    TIA

    NoelQ


  • 6.  Re: EGL NEWCOPY in Rational COBOL Runtime for zSeries

    Posted Thu January 28, 2016 04:10 AM

    Please allow me to clarify.

    I would like to be able to perform a NEWCOPY of CICS related objects at build time in one step.

    Some of our legacy systems perform builds/generates and NEWCOPY in a single stream.

    I have tried adding some steps to the templates on the host (eg, FDATCL....) but to no avail.

     

    TIA
     

    NoelQ


  • 7.  Re: EGL NEWCOPY in Rational COBOL Runtime for zSeries

    Posted Thu January 28, 2016 12:16 PM

    Hi,

    I am sorry...I think I sent you on a path that would not work.   ELABNEW is a "CICS" program, so it cannot be invoked directly from batch.   If you write a front end that runs as a batch program and then invokes it using EXCI, then it could be used.   I may try to create an example for this, but for now:

     

    To answer your question... external to EGL, there are ways to issue CICS commands from JCL using the modify command, through REXX (I am told), and other utilities.  I don't have this on my machine or not authorized to do it.  But in working with your systems/CICS systems programmers, you may be able to set this up.

     

    The trick to invoking this JCL is to "call" out from the build scripts.   The EGL Build Server provides a "CALL" command to enable this.  See the following section of the EGL Generation Guide in the knowledge center:

    http://www-01.ibm.com/support/knowledgecenter/SSMQ79_9.5.0/com.ibm.egl.gg.doc/topics/gegl_cobol_pseudojclcallstatement.html

    So, in the build script, you just add a step in the build scripts to use the CALL.

     

    The call can invoke a separate job and that job can do whatever you want.  Any symbolics in the called JCL will be substituted with values just like the ones in the build scripts.

     

    So, simple example (using IEBCOPY)

    - In the pds that holds the build scripts, you can add a new member... lets call it IEBCOPY

    - In IEBCOPY, you could have the following:

    //MEVANSA  JOB CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1),USER=MEVANS,
    //      NOTIFY=MEVANS                                         
    //COPY     EXEC PGM=IEBCOPY                                   
    //INDD     DD DISP=SHR,DSN=MEVANS.V75.ZOSCICS.LOAD            
    //OUTDD1   DD DISP=SHR,DSN=MEVANS.VAG.MVSCICS.LOAD            
    //SYSPRINT DD SYSOUT=*                                        
    //SYSIN    DD *                                               
     COPY INDD=((INDD,R)),OUTDD=OUTDD1                            
     SELECT MEMBER=(&MBR)

    //                                        

    In each of the build scripts, you would include the following at the bottom.  If the member is in the same PDS that is specified in the CCUPROC DD of the CCUMVS job, then the PDS name is not required).


    //COPY CALL MEMBER=MEVANS.V751.$PROCLIB(IEBCOPY),WAIT=YES

    In the example above, the &MBR will be replaced by the build server before the JCL is submitted.  It uses the name of the part being generated.  To be safe, you may want to use &EZEALIAS if your names are getting aliased to something different.

     

    Also, I found that the build server appends a CCU0 step onto the step in the JCL to send back the return code.   This appended step refers to a &CCULIB symbolic.  Its value needs to be the name of the load module holding the EGL COBOL Runtime load modules (PDS ending in SELALMD).   So, you can create the CCULIB symbolic to be used in the job or the easiest is to add it to the build descriptor symbolic parameter options.

     

    So, the above is the basic process.   From Google, I found an example of commands in JCL to do a new copy when the "modify (or F)" command is used.    I am sure there are other ways.

                                            
    //IEFBR     EXEC PGM=IEFBR14                              
    // F CICSC05,'CEMT SET PROG(<name>) NEW'                   
    //  
                                                         

    This only works if the JCL can invoke a "console" command to CICS.  

     

    Finally, a note:

    - EGL datatables can be made Resident.   This is not the same as CICS Residency as EGL manages the contents/use counts in shared memory.  The shared memory is initially created by copying the contents from the load module.    Therefore, doing a newcopy on an EGL datatable will only refresh the load module.  It will not refresh the contents that EGL and your programs are referring to.   That is one of the functions ELABNEW and the online EGL new copy transaction (ELAN) will do and one will need to be used.   

     

    Let me know if you have any questions.

     

    Mark

    markevans


  • 8.  Re: EGL NEWCOPY in Rational COBOL Runtime for zSeries

    Posted Sun January 31, 2016 05:33 PM

    Hi Mark,

    I'm attempting to create a batch ELAN, see attached.  Is there anything more I should do?

    Here's the accompanying run JCL.

    //CICEXCI    PROC  CICS=CICSXX, APPLID OF CICS REGION         //             OUTC='X',                                      //             CICSHLQ=SYS3,                                  //             SRVCLIB=HLQ.XXXXXXX.YYYY, SYSIN DATASET NAME   //             SRVCMEM=ZZZZZZZ SYSIN MEMBER NAME              //*                                                           //ELAN       EXEC  PGM=ZZCBELAN,PARM='&CICS'                  //STEPLIB     DD   DISP=SHR,DSN=DEV.DEVT.LOAD                 //            DD   DSN=&CICSHLQ..SDFHEXCI,DISP=SHR            //SYSPRINT    DD   SYSOUT=&OUTC                               //SYSIN       DD   DSN=&SRVCLIB.(&SRVCMEM.),DISP=SHR          //CICEXCI    PEND                                             //*                                                           //TEST       EXEC  CICEXCI,CICS=CICSD1,                       //             OUTC='X',                                      //             CICSHLQ=SYS3,                                  //             SRVCLIB=HLQ.DEVT.DATA,                         //             SRVCMEM=NEWCOPY

    Regards,

    Julius

     

    jmarb


  • 9.  Re: EGL NEWCOPY in Rational COBOL Runtime for zSeries

    Posted Tue February 02, 2016 04:51 PM

    Julius,

     

    I could not open this file.   It said it was an EGLAR when I downloaded it, but there did not seem to be any contents or anything that could be read.

    Can you send the code as a zip file.  If this is EGL source, then it could be attached as .egl files or exported as an archive file (not EGL Archive file).

     

    And your JCL is reading a SYSIN file/member.   How is the input written to it? and what is in it (if anything)? 

     

    thanks.

    Mark

    markevans


  • 10.  Re: EGL NEWCOPY in Rational COBOL Runtime for zSeries

    Posted Tue February 02, 2016 05:23 PM

    Hi Mark,

     

    It's a handwritten COBOL program.  Here's the file in zip format.  Let me know if it's readable.  It contains 454 lines of code.

     

    Sample  SYSIN data

    ZZA8WEB PROGRAM ZZTSLTK TABLE   

     

    Regards,



    Julius

    jmarb

    Attachments



  • 11.  Re: EGL NEWCOPY in Rational COBOL Runtime for zSeries

    Posted Tue February 02, 2016 05:30 PM

    Julius

    Thanks.  I can read this one.

    Couple of more questions:

    a.) how do you populate the SYSIN file? 

    - I am going on the assumption that someone would want the programs being generated (and tables, form groups) to be newcopied, so somehow this list needs to be build dynamically through the build server. 

    b.) Are you having problems getting this to work.  If so, what problems?

    thanks.

    Mark

    markevans


  • 12.  Re: EGL NEWCOPY in Rational COBOL Runtime for zSeries

    Posted Tue February 02, 2016 06:07 PM

    Hi Mark,

     

    Currently, the intent is to use it in our production change control and the SYSIN data will be entered manually.  Eventually it may be incorporated into our build server, so I wonder if there's a caveat if we coded it this way.

    Preliminary results appear to be promising but more test is required.

     

    Regards,

    Julius


     

    jmarb


  • 13.  Re: EGL NEWCOPY in Rational COBOL Runtime for zSeries

    Posted Fri February 19, 2016 05:11 PM

    All,

     

    I got it working so that generation could call to CICS using EXCI and run the ELABNEW program to do the new copy.    I used an EGL program and use the linktype=CICSEXCI for the call.   I have attached the project containing the example program named CALLNEW and the .eglbld file with the COBOL Build descriptor I used (with COBOL in the name), the linkage table, and the resource association.

    The program reads a file named NEWCINP (DD in the build script) and then calls ELABNEW with the right info.  It then uses WRITESTDOUT to write out messages. These will end up in the SYSOUT for that step.

    To use,

    - Setup EXCI in your CICS Region where you want to do the newcopy

    - In that same region, you need to create a copy of CSMI (or modify CSMI) to have a TWASIZE of 1024

    - Modify the COBOL build descriptor and linkage options to match your CICS settings (see knowledge center on EXCI if you need more info on this)

    - Generate this program into the appropriate load module (ZOSBATCH).

     

    This would make the program available so the build server can invoke it.

     

    The next step is to  update the build scripts used when you generate for CICS.  So, also attached are these scripts. The purpose of the four are:

     

    FDATCL -  CICS, non DB2  - used by programs (called/main) - PARTTYPE in script = PROGRAM
    FDAPTCL - CICS, DB2 - used by programs (called/main) - PARTTYPE in script = PROGRAM
    FDALINK - non-CICS, no compile needed, just link used for terminal form groups (FM suffix) - PARTTYPE in script = FORMGROUP
    FDACL - non-CICS, Compile needed - used for EGL Datatables and CICS Print form groups - - PARTTYPE in script = OTHER




    In each of the above scripts, I added the following step at the end:

    //**********************************************************************
    //** CALL NEWCOPY BATCH PROGRAM ... CALL VIA EXCI TO ELABNEW
    //**********************************************************************
    //*
    //CALLNEW     EXEC PGM=CALLNEW,REGION=6M
    //STEPLIB     DD DSN=CEE.SCEERUN,DISP=SHR
    //            DD DSN=CUST.HACZ601.V800.SELALMD,DISP=SHR
    //            DD DSN=MEVANS.V75.ZOSBATCH.LOAD,DISP=SHR
    //            DD DSN=CICSTS.V3R1M0.CICS.SDFHEXCI,DISP=SHR

    //ELAPRINT    DD CCUEXT=&CCUEXTN,DISP=(NEW,DELETE),
    //    UNIT=VIO,SPACE=(TRK,(30,10)),
    //    DCB=(RECFM=FBA,BLKSIZE=1330)
    //SYSOUT      DD CCUEXT=&CCUEXTN,DISP=(NEW,DELETE),
    //    UNIT=VIO,SPACE=(TRK,(30,10)),
    //    DCB=(RECFM=FB,LRECL=121,BLKSIZE=1210)
    //ELASNAP     DD SYSOUT=*,DCB=(RECFM=VBA,BLKSIZE=4096)
    //EZEPRINT    DD SYSOUT=*,DCB=(RECFM=VBA,BLKSIZE=4096)
    //SYSABOUT    DD SYSOUT=*
    //NEWCINP     DD *
    &MBR PROGRAM|FORMGROUP|OTHER
    //

    Where:

    • the program being executed (PGM=) needs to match the name of the program you generated to invoke ELABNEW
    • in STEPLIB, the 3 highlighted datasets are the EGL COBOL Runtime, my PDS with the generated CALLNEW, and the CICS PDS that holds the EXCI execution code.
    • I added a CCUEXTN symbolic so I could direct the output for ELAPRINT and SYSOUT back to the generation client (like other output files).
    • Setup the line in NEWCINP to match the type of PARTTYPE that particular script processes (ONLY one of PROGRAM, FORMGROUP, or OTHER) (see attachments)
    • &MBR will be replaced with the part being generated.
    • Only one blank should be between the two parms

     

    So, then to use this:

    • I did add a CCUEXTN = CCUOUT symbolic to my build descriptor used to generate my real programs.
    • If you don't want to update the "production" build scripts while testing, add the BUILD_SCRIPT_LIBRARY symbolic parameter and specify a PDS name on the host

     

    Note: I tested the CALLNEW originally just using native JCL to make sure all was setup before adding to the build scripts.  
     

    And I know this doc is not as complete as it could be and could probably use some screen shots.   I wanted to get it out and if one or two can try it, then I can do a better write up and put it into the EGL blog.

     

    Obviously, there are various permutations that could be done, but if something else fits better, then hopefully this will give the general idea and can be used as a starter.

     

    Mark

     

    markevans


  • 14.  Re: EGL NEWCOPY in Rational COBOL Runtime for zSeries

    Posted Tue February 23, 2016 02:00 AM

    Hi Mark,

    Test result on RBD 9.5, CICS TS 5.1 with statementTrace=YES.  I hard coded the callink location to our sandbox CICS region (not PROGRAMCONTROLLED).

    If CICS is online

     * 37: Case ( parttype )                                                                                                 
     * 38: IF ( parttype == 'PROGRAM' )                                                                                      
     * 39: elabnew_parm.PGMTYPE = '1';                                                                                       
     * 48: TRY                                                                                                               
     * 47: Call 'ELABNEW'(elabnew_parm);                                                                                     
     CALLNEW: BEFORE SAVED-RTS=0000000000 CALLER-RTS=0000163944                                                              
     CALLNEW: EZERTS-CONTROL-BLOCK=0000163944                                                                                
     CALLNEW: ENTERED PROCEDURE EZESETUP_CALL                                                                                
     CALLNEW: EXITED PROCEDURE EZESETUP_CALL                                                                                 
     CALLNEW: ENTERED PROCEDURE EZESETUP_COMMAREA                                                                            
     CALLNEW: ENTERED PROCEDURE EZEGETMAINREAL BYTES REQUESTED=0000000190                                                    
     CALLNEW: EXITED PROCEDURE EZEGETMAINREAL ADDRESS=0000303296                                                             
     CALLNEW: EXITED PROCEDURE EZESETUP_COMMAREA                                                                             
     CALLNEW: AFTER SAVED-RTS=0000000000 CALLER-RTS=0000163944                                                               
     CALLNEW: EZERTS-CONTROL-BLOCK=0000163944                                                                                
     * 56: IF ( elabnew_parm.RETCODE <= 0 )                                                                                  
     * 57: SysLib.writestdout('Success Message ...                                                                           
     CALLNEW: ENTERED PROCEDURE EZEHEAPACQUIRE INDEX=0000000004 ADDRESS=0249314311 ANCHOR=0249679872                         
     CALLNEW: EXITED PROCEDURE EZEHEAPACQUIRE                                                                                
     CALLNEW: ENTERED PROCEDURE EZEHEAPACQUIRE INDEX=0000000004 ADDRESS=0249314307 ANCHOR=0249679872                         
     CALLNEW: EXITED PROCEDURE EZEHEAPACQUIRE                                                                                
     CALLNEW: ENTERED PROCEDURE EZEHEAPACQUIRE INDEX=0000000004 ADDRESS=0249314303 ANCHOR=0249679872                         
     CALLNEW: EXITED PROCEDURE EZEHEAPACQUIRE                                                                                
     CALLNEW: ENTERED PROCEDURE EZEGETMAIN_STRING                                                                            
     CALLNEW: EXITED PROCEDURE EZEGETMAIN_STRING                                                                             
    Success Message1 = ELA00300I A new copy was requested for part PJA99                                                    
     CALLNEW: ENTERED PROCEDURE EZEHEAPRELEASE INDEX=0000000003 ANCHOR=0249679872

     

    If CICS is offline

    * 50: SysLib.writestdout('e1.message = '  ...                                                                           
     CALLNEW: ENTERED PROCEDURE EZEHEAPACQUIRE INDEX=0000000005 ADDRESS=0249314311 ANCHOR=0249679872                         
     CALLNEW: EXITED PROCEDURE EZEHEAPACQUIRE                                                                                
     CALLNEW: ENTERED PROCEDURE EZEHEAPACQUIRE INDEX=0000000005 ADDRESS=0249314307 ANCHOR=0249679872                         
     CALLNEW: EXITED PROCEDURE EZEHEAPACQUIRE                                                                                
     CALLNEW: ENTERED PROCEDURE EZEHEAPACQUIRE INDEX=0000000005 ADDRESS=0249314303 ANCHOR=0249679872                         
     CALLNEW: EXITED PROCEDURE EZEHEAPACQUIRE                                                                                
     CALLNEW: ENTERED PROCEDURE EZEGETMAIN_STRING                                                                            
     CALLNEW: EXITED PROCEDURE EZEGETMAIN_STRING                                                                             
     
    e1.message = An error occurred in program CALLNEW, function MAIN An error occurred in program CALLNEW on statement numbe
     r 47 EXCI call to program ELABNEW failed. RESP = 88, RESP2 = 203, ABCODE = . Invocation exception                       
     CALLNEW: ENTERED PROCEDURE EZEHEAPRELEASE INDEX=0000000004 ANCHOR=0249679872                                            
     CALLNEW: CALL TO RUNTIME MADE INDEX=0000000004 RTSINDEX=0000000005                                                      
     CALLNEW: EXITED PROCEDURE EZEHEAPRELEASE

     

    Cheers,

    Julius

    jmarb


  • 15.  Re: EGL NEWCOPY in Rational COBOL Runtime for zSeries

    Posted Tue February 23, 2016 08:22 AM

    Julius,

     

    thanks for testing.   To me this is running as expected in both cases.   Do you agree?  Or do you think something is not executing correctly?

     

    Thanks.

     

    Mark

    markevans


  • 16.  Re: EGL NEWCOPY in Rational COBOL Runtime for zSeries

    Posted Tue February 23, 2016 04:59 PM

    Mark,

    It does the newcopy as expected.  What's interesting is, when CICS is offline ELABNEW throws an exception with elabnew_parm.RETCODE = 0.  Is that right?

     

     * 50: SysLib.writestdout('e2.message = '  ...                                                                           
     CALLNEW: ENTERED PROCEDURE EZEHEAPACQUIRE INDEX=0000000005 ADDRESS=0249314311 ANCHOR=0249679872                         
     CALLNEW: EXITED PROCEDURE EZEHEAPACQUIRE                                                                                
     CALLNEW: ENTERED PROCEDURE EZEHEAPACQUIRE INDEX=0000000005 ADDRESS=0249314307 ANCHOR=0249679872                         
     CALLNEW: EXITED PROCEDURE EZEHEAPACQUIRE                                                                                
     CALLNEW: ENTERED PROCEDURE EZEHEAPACQUIRE INDEX=0000000005 ADDRESS=0249314303 ANCHOR=0249679872                         
     CALLNEW: EXITED PROCEDURE EZEHEAPACQUIRE                                                                                
     CALLNEW: ENTERED PROCEDURE EZEGETMAIN_STRING                                                                            
     CALLNEW: EXITED PROCEDURE EZEGETMAIN_STRING                                                                             
     e2.message = An error occurred in program CALLNEW, function MAIN An error occurred in program CALLNEW on statement numbe
     r 47 EXCI call to program ELABNEW failed. RESP = 88, RESP2 = 203, ABCODE = . Invocation exception                       
     CALLNEW: ENTERED PROCEDURE EZEHEAPRELEASE INDEX=0000000004 ANCHOR=0249679872                                            
     CALLNEW: CALL TO RUNTIME MADE INDEX=0000000004 RTSINDEX=0000000005                                                      
     CALLNEW: EXITED PROCEDURE EZEHEAPRELEASE                                                                                
     * 51: SysLib.writestdout('e2.messageid =  ...                                                                           
     CALLNEW: ENTERED PROCEDURE EZEHEAPACQUIRE INDEX=0000000005 ADDRESS=0249314311 ANCHOR=0249679872                         
     CALLNEW: EXITED PROCEDURE EZEHEAPACQUIRE                                                                                
     CALLNEW: ENTERED PROCEDURE EZEHEAPACQUIRE INDEX=0000000005 ADDRESS=0249314307 ANCHOR=0249679872                         
     CALLNEW: EXITED PROCEDURE EZEHEAPACQUIRE                                                                                
     CALLNEW: ENTERED PROCEDURE EZEHEAPACQUIRE INDEX=0000000005 ADDRESS=0249314303 ANCHOR=0249679872                         
     CALLNEW: EXITED PROCEDURE EZEHEAPACQUIRE                                                                                
     CALLNEW: ENTERED PROCEDURE EZEGETMAIN_STRING                                                                            
     CALLNEW: EXITED PROCEDURE EZEGETMAIN_STRING                                                                             
     e2.messageid = ELA09996                                                                                                 
     CALLNEW: ENTERED PROCEDURE EZEHEAPRELEASE INDEX=0000000004 ANCHOR=0249679872                                            
     CALLNEW: CALL TO RUNTIME MADE INDEX=0000000004 RTSINDEX=0000000005                                                      
     CALLNEW: EXITED PROCEDURE EZEHEAPRELEASE                                                                                
     * 52: SysLib.writestdout('sysvar.errorcod ...                                                                           
     CALLNEW: ENTERED PROCEDURE EZEHEAPACQUIRE INDEX=0000000005 ADDRESS=0249314311 ANCHOR=0249679872                         
     CALLNEW: EXITED PROCEDURE EZEHEAPACQUIRE                                                                                
     CALLNEW: ENTERED PROCEDURE EZEHEAPACQUIRE INDEX=0000000005 ADDRESS=0249314307 ANCHOR=0249679872                         
     CALLNEW: EXITED PROCEDURE EZEHEAPACQUIRE                                                                                
     CALLNEW: ENTERED PROCEDURE EZEHEAPACQUIRE INDEX=0000000005 ADDRESS=0249314303 ANCHOR=0249679872                         
     CALLNEW: EXITED PROCEDURE EZEHEAPACQUIRE                                                                                
     CALLNEW: ENTERED PROCEDURE EZEGETMAIN_STRING                                                                            
     CALLNEW: EXITED PROCEDURE EZEGETMAIN_STRING                                                                             
     sysvar.errorcode = 00000000                                                                                             
     CALLNEW: ENTERED PROCEDURE EZEHEAPRELEASE INDEX=0000000004 ANCHOR=0249679872                                            
     CALLNEW: CALL TO RUNTIME MADE INDEX=0000000004 RTSINDEX=0000000005                                                      
     CALLNEW: EXITED PROCEDURE EZEHEAPRELEASE                                                                                
     CALLNEW: ENTERED PROCEDURE EZEHEAPRELEASE INDEX=0000000003 ANCHOR=0249679872                                            
     CALLNEW: CALL TO RUNTIME MADE INDEX=0000000003 RTSINDEX=0000000004                                                      
     CALLNEW: EXITED PROCEDURE EZEHEAPRELEASE                                                                                
     * 56: IF ( elabnew_parm.RETCODE <= 0 )                                                                                  
     * 57: SysLib.writestdout('Success Message ...                                                                           
     CALLNEW: ENTERED PROCEDURE EZEHEAPACQUIRE INDEX=0000000004 ADDRESS=0249314311 ANCHOR=0249679872                         
     CALLNEW: EXITED PROCEDURE EZEHEAPACQUIRE                                                                                

     

    Regards,

    Julius

    jmarb


  • 17.  Re: EGL NEWCOPY in Rational COBOL Runtime for zSeries

    Posted Tue February 23, 2016 05:12 PM

    Julius,

    Thanks for the explanation.

     

    In this case, ELABNEW is not even getting invoked as the CICS LINK itself is failing since CICS is not available (RESP88, RESP2=203 means NO_CICS).     So, it is not ELABNEW returning the RETCODE, but the fact that RETCODE in the passed record is still going to be what it was before the call (=0) was attempted.   The indication that the call itself failed is the "invocation exception".

     

    It could be that I need to change the logic to handle errors better in "callnew".

    Mark

     

    markevans


  • 18.  Re: EGL NEWCOPY in Rational COBOL Runtime for zSeries

    Posted Tue February 23, 2016 07:47 PM

    Mark,

    I've done a few tweaks for our site requirement.  We have several target CICS regions, so I added a new sequential file CICSLOC DD then made the linkage location PROGRAMCONTROLLED.   It seems to work Smile

     

                    // Get cicsloc_rec Parms                try                        get next cicsloc_rec;                onException(e3 anyException)                        writestdout("Error reading CICSLOC file");                        writestdout("e3.message = " + e3.message);                        writestdout("e3.messageid = " + e3.messageid);                        writestdout("sysvar.errorcode = " + sysvar.errorCode);                end                writestdout("CICS location = " + cicsloc_rec.Location);                sysVar.remoteSystemId = cicsloc_rec.Location;

    Julius

    jmarb


  • 19.  Re: EGL NEWCOPY in Rational COBOL Runtime for zSeries

    Posted Wed February 24, 2016 08:35 AM

    Julius,

    Sounds good.

    If the system is known at the generation side, you could change the NEWCINP DD record to include something like %CICSSYS and supply this value via a symbolic parameter in the build descriptor used for generation.  

     

    Mark

    markevans


  • 20.  Re: EGL NEWCOPY in Rational COBOL Runtime for zSeries

    Posted Wed February 24, 2016 06:38 AM

    There is another way to do the CICS NEWCOPY.

    Actually SDSF can run in "batch" mode and thereby receive commands.

    I have added some extra lines to the generation templates members FDABIND, FDSCL, FDALINK, FDATCL like this:

    example (CICSFMSW is the name of a specific CICS):

    //**********************************************
    //CICSCMD1 EXEC PGM=SDSF,REGION=7200K           
    //ISFIN    DD *                                 
    /F CICSFMSW,CEMT S PROG(&MBR) NEW               
    //ISFOUT   DD SYSOUT=*                          
    //**********************************************

    This means the CICS NEWCOPY is executed just after generation of a new module.

     

    Hope this helps

    Morten Hansen, IBM Denmark

    mohaIBMDK


  • 21.  Re: EGL NEWCOPY in Rational COBOL Runtime for zSeries

    Posted Wed February 24, 2016 08:53 AM

    Morten,

    Thanks for posting.  Good to show alternatives. 

    I knew using a /F command was another way to do it...but honestly was having issues determining how to get a console defined for my userid (when trying it via SDSF under TSO).

    Running SDSF in batch was new to me, so good to know that, but when I tried I did not have the appropriate authority.    But I like the approach.

    Knowing I had an EXCI connection defined, I went ahead with the "call CICS" approach.

    I agree if the SDSF or modify command to the console is allowed/setup, this is actually easier.   

    Net both approaches require some system setup, so just have to determine which is best.

    take care.

    Mark.

    markevans