CA Gen

Expand all | Collapse all

Looking for a way to detect Debug Trace enabled in compiled code - z/OS Batch and Online (CICS) - both NCAL and load modules.

Jump to Best Answer
  • 1.  Looking for a way to detect Debug Trace enabled in compiled code - z/OS Batch and Online (CICS) - both NCAL and load modules.

    Posted 05-29-2020 11:19 AM
    Hello,

    I am looking for a way to reliably identify compiled code that has Debug Trace mode enabled.
    Currently we perform a scan of new code to be promoted in our Changeman libraries.
    it is easy to identify a problem with the source code by scanning for
    SRCHFOR 'Debug trace option selected'

    but, when it comes to compiled and linked load modules, it's not so easy.
    If anyone has suggestions, I am open to receiving them.

    Thanks in advance...

    ------------------------------
    Doug Seaver
    Systems Development Services Specialist
    CA Gen Tool Support
    WisDOT
    Madison, WI, USA
    ------------------------------


  • 2.  RE: Looking for a way to detect Debug Trace enabled in compiled code - z/OS Batch and Online (CICS) - both NCAL and load modules.

    Posted 06-01-2020 12:07 AM
    Hello Doig,
    I found an old issue you logged for Gen 8.0 back in 2012 where my colleague @Letha Johnson advised that browsing the NCAL object for string TIRTRCE ​should only find it when the "Generate debug support" option has been enabled. However, you said at the time that because the compiler options you were using "TEST(NOHOOK,NOSEPARATE,NOEJPD)" forces the inclusion of symbolic debugging information you were still finding TIRTRCE when the "Generate debug support" option had not been enabled. Is that still the case?

    Thanks

    Lynn

    ------------------------------
    Lynn Williams
    Senior Principal Support Engineer
    Broadcom
    Australia
    ------------------------------



  • 3.  RE: Looking for a way to detect Debug Trace enabled in compiled code - z/OS Batch and Online (CICS) - both NCAL and load modules.

    Posted 06-05-2020 12:15 PM
    Lynn,  yes this is still the case.

    ------------------------------
    Doug Seaver
    Systems Development Services Specialist
    CA Gen Tool Support
    WisDOT
    Madison, WI, USA
    ------------------------------



  • 4.  RE: Looking for a way to detect Debug Trace enabled in compiled code - z/OS Batch and Online (CICS) - both NCAL and load modules.

    Posted 06-01-2020 04:59 AM
    Edited by Gary Donoghue 06-01-2020 02:25 PM

    Hi Doug,

    Hope all is well. I assume you are referring to z/OS COBOL source code given your mention of MicroFocus ChangeMan ZMF as the target of some promotion libraries. If this is the case then activating debug in this context will activate a call to CA Gen's proprietary trace module TIRTRCE so, for the compiled code, a scan for that TIRTRCE module (located in the CEHBPLD0 software libraries for Host Encyclopaedia/IT) and its relevant timestamp should provide you with the results you need.

    If you are able to obtain that distinction sufficiently via the compiled code (NCALs) can you clarify why you additionally need to establish this for the executable (fully resolved linked) load modules? 

    Anyway, I hope this helps.

    Kindest Regards

    Gary Donoghue



    ------------------------------
    Senior Consultant/Developer
    Information Engineering Technology
    ------------------------------



  • 5.  RE: Looking for a way to detect Debug Trace enabled in compiled code - z/OS Batch and Online (CICS) - both NCAL and load modules.

    Posted 06-05-2020 08:15 AM

    Hi Gary,

     

    Thanks for the response. You are correct, I am referring to z/OS COBOL.

    Our experience with load module scanning is that we always find a reference to TIRTRCE, when DEBUG TRACE is on or off. I believe there is always a stub with that name, even if DEBUG TRACE is off.

    The reason we want to scan for it in linked code is that we have many action blocks shared across online and batch processing. They are link-edited into two separate libraries and promoted through Changeman that way.

    Occasionally someone forgets to perform the second  link-edit (we have a separate process for linking the NCAL for action blocks that access DB2). So we try to ensure that both executables have trace turned off before going to production.

    Hopefully this makes some sense and helps to clarify why we care.

     

    Regards,

    Doug

     






  • 6.  RE: Looking for a way to detect Debug Trace enabled in compiled code - z/OS Batch and Online (CICS) - both NCAL and load modules.

    Posted 06-01-2020 07:57 AM
    Hello Doug

    I suggest you do the following to find out what COBOL code CA Gen trace always generates regardless of the application code

    1. Create a new action block in the toolset that is completely empty

    2. Change the generation defaults to MVS, no trace

    3. Generate the COBOL code using the Code context menu in the action diagram

    4. Rename the .cbl to .trcN.cbl

    5. Change the generation defaults to MVS, with trace

    6. Generate the COBOL code using the Code context menu in the action diagram

    7. Rename the .cbl to .trcY.cbl

    8. Compare the two generated files

    9. Review the differences to identify those that compilation will keep


    The candidates I come up with are

    1. '+-> '

    2. '+---'

    3. '************************* BOTTOM OF DATA *************
    - '************'.

    4. CALL 'TIRTRCE' USING GLOBDATA

    The first three are character strings that SRCHFOR may find, bearing in mind the string may span multiple records in the NCAL member.

    The last is a static call to TIRTRCE. On that basis AMBLIST, or any third party equivalent, should be able to identify the call.

    Unless all the site's code is dynamic life becomes more difficult when examining members of the load library.


    Geoff


  • 7.  RE: Looking for a way to detect Debug Trace enabled in compiled code - z/OS Batch and Online (CICS) - both NCAL and load modules.

    Posted 06-05-2020 12:41 PM

    For reference, here is an example of one action block in all its forms: generated SRC, NCAL, CICS linked executable, and batch linked executable.

    Generated SRC

    .CMN.SRCLIBD(J1525252) -

    ==>                             

     Generation options:            

     Debug trace option not selected

    ---

    BROWSE    DOTDBDCP.CMN.SRCLIBD(J1525252) - 01.00   Li    CHARS 'TIRTRCE' found (only once)

    Command ===>                                                  Scroll ===> CSR 

          *                                                                        

               03  TIRTRCE-SAVE-AREA.                                              

                   05  TOP-INDX             PIC S9(9) COMP.                        

     

    NCAL

    BROWSE    .CMN.OBJLIBD(J1525252)                                                               Li No CHARS 'tirtrce' found in NCAL

    Command ===>                                                                                                      Scroll ===> CSR 

    *********************************************************** Top of Data ************************************************************

    IEWPLMH ...Ì...................Ì...........ð...........m...h...........\.......Ü...ü.......Q...°..........\.......Ùø...............ð

    õh....õh.&..õh.À..õh.Ì..õh.ð..õh.µ..õh.©..õh.H..õh.ü..õh.0..õh....õh....õh....õh. ..õh.è..õh.Ç..õh.@..õh.°..õh.u..õh.½..õh.ö..õh.\..

     

    ---

    CICS Executable

    BROWSE    .CICS.CMN.LOADLIB(J1525252)                                                          Li    CHARS 'TIRTRCE' found

     Command ===>                                                                                                      Scroll ===> CSR 

    å0~.ì-}M&-A4ì.}U..x4.....µì0A4!0~..Õì-}Y&-A4ì0~àì.~àìù..ì\}.q.}..Ú............C_WSA           .........óµ...9%......................

    TIRTRCE.......... ...........ì201605250239001 1 0 ....å00..CEE...Ç....å00.qóÐ....F............°Ö}. .0.qÕ0<...............ø...´......

    ---

    Batch executable

    BROWSE    CMN.BATCH.LOADLIB(J1525252)                                                         Li    CHARS 'TIRTRCE' found

    Command ===>                                                                                                      Scroll ===> CSR

    }Øì0B½ì0.D.Õì-}¯&-A4å0~.ì-}M&-A4ì.}U..x4..... ì0A4!0~..Õì-}Y&-A4ì0~àì.~àìù..ì\}.q.}..Ú............C_WSA           .........óµ....%.

    ....................TIRTRCE..........h...........ì201508031816001 1 0 ....å00..CEE...½....å00.°Ö}.ì.}<v...v..½..í.{.xM..ì0B¯.Õ..&}.

     

     






  • 8.  RE: Looking for a way to detect Debug Trace enabled in compiled code - z/OS Batch and Online (CICS) - both NCAL and load modules.

    Posted 06-08-2020 02:14 PM
    Doug,
    I did not respond earlier since most of what I was going to tell you was covered by the others in this conversation.
    However since you still have the issue let me add the following:
    When Gen Links the application we always use an IMPORT statement for TIRTRCE (the Gen Trace runtime). Because this is an IMPORT statement it gets resolved at execution if required.
    When I look at the code I install using Gen defaults I only see the TIRTRCE in the code I generated with Debug Support.

    I understand you use different Compile Parms from what I do, and I will run a test with Compiler Option TEST(...) so I can verify the difference. But before I go and do that I wanted to ask you some info about how you build:
    1. Do you always Generate the code with debug trace on and then just not invoke it if not required? Or do you only Generate code with debug trace on when you want to trace?
    2. It sounds like you do not use Gen's install process (correct me if I am wrong)  but you must still be providing Link Statements like IMPORT CODE,"TIRXXXXX","TIRTRCE"? Do you do this for all your applications?
    3. Do you want to know the info about the code being Generated with debug trace on for previous built code or for new generation of the code?

    Please let me know answers to 1 and 2 and I will verify what we do and see if we can come up with a resolution.

    Cheers,
    Teresa

    ------------------------------
    Teresa Bredenkamp
    CA Gen Development
    Broadcom
    ------------------------------



  • 9.  RE: Looking for a way to detect Debug Trace enabled in compiled code - z/OS Batch and Online (CICS) - both NCAL and load modules.

    Posted 06-08-2020 04:56 PM
    1. We only generate with trace when we want to trace. Normally this is "not allowed" for production code (although it can still happen).
    2. We use the Gen install process on the host. whatever IMPORT or other Link statements are included automatically by the clists. It is done for all Gen applications.
    3.We are most interested in previously built code. e.g., I built some code last month and now I am ready to promote my changes through Changeman.
    instead of regenerating, I would like to run some type of scan job to analyze my code to see if TRACE is enabled or not.

    ------------------------------
    Doug Seaver
    Systems Development Services Specialist
    CA Gen Tool Support
    WisDOT
    Madison, WI, USA
    ------------------------------



  • 10.  RE: Looking for a way to detect Debug Trace enabled in compiled code - z/OS Batch and Online (CICS) - both NCAL and load modules.

    Posted 29 days ago
    Doug,
    I used this info to build the same application with and without the Gen Debug option. I did not ask if you are using the Dynamic Link option for Psteps or Action Blocks but this plays a part in what you will find. The Compile option TEST also plays a part as it adds Symbolics to your code -  I used the TEST(NOHOOK,NOSEPARATE,NOEJPD) as I believe you are using. 
    Note that only the elements of the application that contain the  CALL 'TIRTRCE'  include  TIRTRCE in them. 
    This is the same for NCAL and the Executable load modules library. In both libraries, the Dialog Manager/Load Module when using Dynamic Link does not include TIRTRCE while the Pstep and/or Action Blocks ​do. When using Static link the Load Module does contain TIRTRCE (it gets it from the Pstep/Action Blocks).  
    You should be able to see the string '..TIRTRCE...TIRTRCE...IGZCBSO...CEESTART' in the elements that have 'Debug trace option selected', but not in those that do not.  You should only need to rebuild the elements that have TIRTRCE in them - so you do Not need to rebuild the Dialog Manager/Load Module when Dynamic Link is used. 

    I hope this information helps you address your need on this. Let me know if you have more questions.

    ------------------------------
    Teresa Bredenkamp
    CA Gen Development
    Broadcom
    ------------------------------



  • 11.  RE: Looking for a way to detect Debug Trace enabled in compiled code - z/OS Batch and Online (CICS) - both NCAL and load modules.

    Posted 29 days ago

    Thank you!

    I will give this a try later this week or early next and let you know...

     

    �� ����

    Doug

     






  • 12.  RE: Looking for a way to detect Debug Trace enabled in compiled code - z/OS Batch and Online (CICS) - both NCAL and load modules.

    Posted 17 days ago

    Teresa,

     

    So far, in my testing, I am not finding what you describe. I will elaborate a bit more on our environment, and what I am seeing.

     

    We are generating everything in Compatibility Mode, with Dynamic Link for everything we possibly can (exceptions are RI Triggers and Batch Managers, of course). We are also using COBOL 6.1, current PTF level P171018.

    Since we do not regenerate everything, we have a mixed runtime environment of COBOL 6.1 (since Sept. 2017), COBOL 4.2, and COBOL 3.4.1. There might be a few modules older than that, but this covers most of our code.

     

    Here is a sample program that is generated with Debug Trace Enabled, compiled with COBOL 6.1. I will show snippets of the source, listing (showing compile options), NCAL, and CICS load members.

     

    source

           IDENTIFICATION DIVISION.                                               

           PROGRAM-ID.  JWEBE3F1.                                                  

          ****************************************************************        

          *                                                                       

          *                    Source Code Generated by                            

          *                          CA Gen 8.6                                   

          *                                                                       

          *   Copyright (c) 2020 CA Technologies. All rights reserved.            

          *                                                                        

          *    Name: PS_S_E3F1_WEB_SVC_COBOL          Date: 2020/04/23            

          *    Target OS:   MVS                       Time: 15:35:36              

          *    Target DBMS: DB2                       User: DOTOLJ                

          *                                                                       

          *    Generation options:                                                

          *    Debug trace option selected                                         

          *    Data modeling constraint enforcement not selected                  

          *    Optimized import view initialization selected                      

          *    High performance view passing ignored for pstep                    

          *    LAST-STATEMENT-NUM execution selected                              

          *    Enforce default values with DBMS not selected                      

          *    Init unspecified optional fields to NULL not selected               

          *    Dynamic link (z/OS) used bus sys default of "Compatibility"        

          *                                                                    

          ****************************************************************     

     

    listing

    PP 5655-EC6 IBM Enterprise COBOL for z/OS  6.1.0 P171018                 Date 04/23/2020  Time 15:35:40   Page     1              

    Invocation parameters:                                                                                                            

     S,X,MAP,OFF,DATA(31),NOSEQ,OPT(2),RENT,APOST,STGOPT,NONUM,SZ(8192K),NOD,NODYN,OBJ,NOWD,NOSSRANGE,NUMPROC(NOPFD),OPTFILE,SZ(14000),

    NONAME                                                                                                                            

                                                                                                                                       

            IGYOS4013-I   The "SZ" option is no longer supported.                                                                      

                                                                                                                                       

                                                                                                                                       

            IGYOS4076-I   The "FLAGMIG4/NOFLAGMIG4" option is no longer supported.                                                    

                                                                                                                                       

                                                                                                                                       

            IGYOS4013-I   The "SZ" option is no longer supported.                                                                      

                                                                                                                                       

    Options from SYSOPTF:                                                                                                              

     CODEPAGE(37)                                                                                                                     

     DIAGTRUNC                                                                                                                         

     FLAGMIG4                                                                                                                         

     SSRANGE                                                                                                                           

     TEST(NOEJPD)                                                                                                                     

     TRUNC(STD)                                                                                                                        

     XMLPARSE(XMLSS)                                                                                                                  

    Options in effect:                                                                                                                 

    NOADATA                           

     NOADV                             

       AFP(VOLATILE)                   

       APOST                           

       ARCH(11)                         

       ARITH(COMPAT)                   

     NOAWO                             

     NOBLOCK0                          

       BUFSIZE(30720)                  

     NOCICS                            

       CODEPAGE(37)                    

     NOCOMPILE(S)                      

     NOCOPYRIGHT                       

     NOCURRENCY                        

       DATA(31)                        

     NODBCS                            

     NODECK                            

       DIAGTRUNC                        

       DISPSIGN(COMPAT)                

     NODLL                             

     NODUMP                            

     NODYNAM                           

     NOEXIT                            

    NOEXPORTALL                                               

       FASTSRT                                                 

       FLAG(I,I)                                               

     NOFLAGSTD                                                 

       HGPR(PRESERVE)                                          

     NOINITCHECK                                                

       INLINE                                                  

       INTDATE(ANSI)                                           

       LANGUAGE(EN)                                            

       LINECOUNT(60)                                            

     NOLIST                                                    

       MAP(HEX)                                                

    PP 5655-EC6 IBM Enterprise COBOL for z/OS  6.1.0 P171018   

       MAXPCF(60000)                                           

     NOMDECK                                                   

     NONAME                                                    

       NSYMBOL(DBCS)                                           

     NONUMBER                                                   

     NONUMCHECK                                                

       NUMPROC(NOPFD)                                          

       OBJECT                                                  

       OFFSET                                                   

       OPTIMIZE(2)                                             

       OUTDD(SYSOUT)                                      

     NOPARMCHECK                                          

       PGMNAME(COMPAT)                                     

       QUALIFY(COMPAT)                                    

       RENT                                               

       RMODE(AUTO)                                        

     NORULES                                              

     NOSERVICE                                             

     NOSEQUENCE                                           

       SOURCE                                             

       SPACE(1)                                           

     NOSQL                                                

       SQLCCSID                                           

     NOSQLIMS                                             

       SSRANGE(NOZLEN,ABD)                                

       STGOPT                                             

       SUPPRESS                                            

     NOTERM                                               

       TEST(NOEJPD,SOURCE)                                

     NOTHREAD                                             

       TRUNC(STD)                                         

     NOVBREF                                              

       VLR(STANDARD)                                      

       VSAMOPENFS(COMPAT)               

     NOWORD                             

       XMLPARSE(XMLSS)                   

       XREF(FULL)                       

       ZONEDATA(PFD)                    

       ZWB                              

     

    NCAL

    I found 1 instance of TIRTRCE in the NCAL

    BROWSE    DOTDFSD.IEFGEN.OBJLIBD(JWEBE3F1)                                                             Li    CHARS 'TIRTRCE' found

     Command ===>                                                                                                      Scroll ===> CSR 

    *********************************************************** Top of Data ************************************************************

    ....................................................................................................................................

    ì\}.q.}..Ú.......öù.....JWEBE3F1........JWEBE3F1N0003424646PS_S_E3F1_WEB_SVC_COBOL .........CA Gen 8.6COPYRIGHT (C) 2020 CA TECHNOLO

    ....................................................................................................................................

    ....................................................................................................................................

    ......ñáã.äåá+.à èá....à..!...ñáã.äåá+.èñ(á....à..Â...ãñ<<áê....à..¦...ãñ<<áê....à..Ê...ãñ<<áê....e..:...ãñ<<áê....e..ª....ãñ<<áê...

    åá.....ì<....X....Ü.(áëë åá.....àî....,....Ù.(áëë åá.....ìî....,....Ú........ñáã.ëí&&<ñáà.....áè.................H.ã< å..... ë....,.

    .|íè.åê|í&.ëäê|<<..áßë.....&ë..........U...2.|íè.åê|í&.ëäê|<<..áßë.....êã....,.....3.|íè.åê|í&.ëäê|<<..áßë.....((....Ê.....4......M.

    ëã....}......RT..&ëèá&.íëá.ã ñ<íêá....0......PU.. ëß+ä.ïçá+. î ñ< â<á.ëã...........  .. ëß+ä.ïçá+. ääá&èáà.ëã...........  .. ëß+ä.ïç

    T.................S...........T.....S....5=....S...T................S...T...........T.......S....S...T....Z................S...T....

    .ÚcHÉ.ô.su.¡¡..Æð..mcËbÞ.«/BkF}X.ô.ðßå.õot{Å..öB.J'h¼.ºÇ,o.Blp.ÁçÀð>k¸.Nóòcµ{ô~.0F¬.ì*;y;Ñ`@ß#Wä.?$«s¢ì¾d.Fd.F¬...ÿx-..p©\.Þô.fþ.Á.R

    ÷\...h- £.R{ô!£z´ûÅ-+.Ô\f.Q.b.zè.AöJ2 z."mV.ì.´tV.q."ÐV.ì.Ú.oÕÈ8oFÅ...r¤ëiä.û¾ Ûɪ..gD`ìÐ&ý.Â7.K..°..§§ï..Uo.\szA..NlH.Û.y¡oâ¥-âùèRø

    î..ñ+.åê|í&.ëäê|<<..áßë.....êå..|íè.áêê|ê.ç +à<ñ+å.....áî..|íè.ëáêîáê.<ñëè.ä|+èê|<.....áî..|íè.åê|í&.&<è.....êå..|íè.åê|í&.ëäê|<<..á

    .....................ED  ....Ø...........Ø...Ø.......Ø.......................................ED  ....Ø...............Ø.......Ø......

    EBE3F1...IGZXFCAL...TIRTRCE...IGZXPRS...IGZXCMSG...IGZXRTN...IGZXTREN...CEESG004...IGZXBS61........................IEWBCIE...IEWBLIT

    .ç..NONE.......-SØ.À.............ç.............ØSØ.À.............ç.............µSØ.À.............ç..............S..À.............ç..

    ********************************************************* Bottom of Data **********************************************************

     

    CICS load

    I found 3 instances of TIRTRCE in the CICS load member.

    First instance

    BROWSE    DOTDFSD.IEFGEN.CICS.LOADLIB(JWEBE3F1)                                                        Li    CHARS 'TIRTRCE' found

    Command ===>                                                                                                      Scroll ===> CSR

    ....................TIRTRCE.......... ...........ì201605250239001 1 0 ........COBOL61 ....ì0C8ì01H..IGZXTREN......ì0C8ì02...IGZXRTN

     

    Second and third instance

    BROWSE    DOTDFSD.IEFGEN.CICS.LOADLIB(JWEBE3F1)                                                        Li    CHARS 'TIRTRCE' found

     Command ===>                                                                                                      Scroll ===> CSR 

    ..RTAFAIL...TIRFCCAT...RTAFCCAT...RTAFCCAT...TIRFCHR...RTAFCHR...RTAFCHR...TIRFCYYD...RTAFCYYD...RTAFCYYD...TIRFCYYN...RTAFCYYN...RT

    RTAVW2T...RTAVW2T...TIRTRCE...RTATRCE...RTATRCE...JWEBE3F1#C...JWEBE3F1#S...........................................................

    W2SÊ..RTAVW2TÀ..TIRTRCEH..TI$CRUNCÊ..RTATRCEH..TIRCRUNC¦..C_CODE¦..C_@@PPA2¦..C_@@CSINIT¦..C_CEESG003¦..D_INFO¦..D_LINE¦..D_ABREV¦..

    "....}....SYSLIB  ...;.......ã...................f.{...."....J....SYSLIB  ...;.......ã...................g.{...."....K....SYSLIB  ..

    ..SYSLIB  ...;.......ã...................õ.{....".........SYSLIB  ...;.......ã...................}.{....".........SYSLIB  ...;......

     

     

     






  • 13.  RE: Looking for a way to detect Debug Trace enabled in compiled code - z/OS Batch and Online (CICS) - both NCAL and load modules.

    Posted 17 days ago
    Hi Doug,

    When I tested I only used COBOL 4.2. I tried using COBOL 6.2 and option TEST(NOHOOK,NOSEPARATE)  is not valid so I assumed you were using COBOL 4.2. And I used Dynamic Pstep and Dynamic Action Blocks which is different from Compatibility.
    I am not saying this is the cause of the differences you see, I did not think so but it is a possibility.

    I will look at this again except for where COBOL  3.4.1 is concerned and let you know.  


    ------------------------------
    Teresa Bredenkamp
    CA Gen Development
    Broadcom
    ------------------------------



  • 14.  RE: Looking for a way to detect Debug Trace enabled in compiled code - z/OS Batch and Online (CICS) - both NCAL and load modules.

    Posted 17 days ago
    Meanwhile I will see if I can find some COBOL 4.2 code with debug trace on.
    At least there the compile options should be the same or very close.

    ������

    Doug
    douglas.seaver@dot.wi.gov
    558-0725
    266-7770






  • 15.  RE: Looking for a way to detect Debug Trace enabled in compiled code - z/OS Batch and Online (CICS) - both NCAL and load modules.

    Posted 17 days ago

    Just another thought.

    If I find any production COBOL 4.2 code with debug trace enabled, I am just going to regenerate it anyway, so it will end up being COBOL 6.1 code with debug disabled. It took my brain a while to get to that. ��