To See Whats Happen - Cobol Call Statistik 
Author Message
 To See Whats Happen - Cobol Call Statistik

Hallo,

system: OS-390-2.10 with COBOL for MVS and COBOL-II

I have this idea: In my LE-370 Environment (test and development) i
want to see which programm is calling other programms.

        Call from - Call to - Call Count
        PGM1            PGM2            500
        PGM3            PGM2            200
and so on

To do this i modify IGZCLNK to get control on each LE-Call.

My applikation design is fixed. Very early i can get control. The
first call in each mainprogramm is a initial-call to build instorage
tables for variable data.

When i replace IGZCLNK with my programm i got system abends 0C1,0C4.
Therefore i must do this:

        ICM R15,B'1111',R15+6
        BSM 0,R15
        DS 2H           her is the adress of my module

to modify IGZCLNK i am building a Loadmodule with my litte programm
including IGZCLNK as statik CALL (V-Const) and BINDER ALIAS. I can not
modify the module in storage, because it is linked with the options:
RES,RENT,REUSE and storage protected

Then i move the first 4 bytes in my programm and modify the first 10
bytes of the IGZ-Module with my little code.

When IGZCLNK gets control, my code is invoked and works fine. After my
work i restore the register and execute the saved small 4 byte code
(X'47F0F028')

First i want to get the name of the calling programm. To get this i
point over register 13 and register 15 to the entrypoint, twice if
ENTRY DLITCBL is coded. On fixed positions there are some eye-catcher
to position to the right position in the module. Differences between
COBOL-II and CEE and my assembler routines. I coded this some time ago
and it works fine too.

Here my litte problem.

IGZCLNK is call with:

        Reg 13: positioning to dynamic storage - savearea
        Reg 14: Return in calling programm
        Reg 15: EPA-Adress of IGZCLNK
        REG 1: is positioning in the Literal-Pool

In front of invoking IGZCLNK the cobol code says something like this:



        MVC TS=3,='Name of Subprogram'
        LA R1,PGMLIT+3882
        LA R15,=V(IGZCLNK)
        BALR R14,R15

how can i positioning into the cobol-areas to get the name of the
called programm. I think its very easy because there are some
performance hints to call programms but i can not see how easy it is.

Yesterday i am testing with XPEDITER and COBOL compile LIST NOOFFSET
to get all this informations. Can anybody help me...

some weeks ago i have build a DL1 and DB2 interface to get the counter
of this calls. This works very fine and helps a lot to get potential
run/time problems.

thank you all

Andreas



Wed, 25 Feb 2004 20:05:46 GMT  
 To See Whats Happen - Cobol Call Statistik

Quote:
>>>>>>>>>>>>>>>>>> Ursprngliche Nachricht <<<<<<<<<<<<<<<<<<


zum Thema To See Whats Happen - Cobol Call Statistik:

Quote:
> Hallo,
> system: OS-390-2.10 with COBOL for MVS and COBOL-II
> I have this idea: In my LE-370 Environment (test and development) i
> want to see which programm is calling other programms.

I think i got it:

its very simple i think:

First i do this to modify IGZCLNKL:

(I am soory about the german comments!)

*--------------------------------------------------------------------
-*
*--- DIE ERSTEN 4 BYTES DES PROGRAMMES IGZCLNK WERDEN IN DAS FELD  
---*
*--- SS22IGZ GEBRACHT -> VOM SS22 ZUM IGZCLNK                      ---*
*--- DANN WERDEN DIE ERSTEN BYTES VOM IGZK                        
---*
*--------------------------------------------------------------------
-*
IGZMOVE1 B     24(R15)
IGZMOVE  MVC   24(0,R1),IGZHDR
IGZHDRL  DC    AL1(IGZHDRE-IGZHDR)
         DS    0F                  VOLLWORTGRENZE
         DS    H                   EIN HALBWORT WEITER
IGZHDR   EQU   *
         ICM   R15,B'1111',30(R15) 4 BYTES ICM START AUF
HALBWORTGRENZE
         BSM   0,R15               2 BYTES BSM
IGZSS22  DS    0A                  4 BYTES ADRESSE
PUQSS22K DS    A
IGZHDRE  EQU   *
PIGZCLNK DC    V(IGZCLNK)          IGZCLNK ORIGINALADRESSE

Then, when i got control the first time, i modify line this:

*------- MODIFY IGZLNK HDR
         L     R1,PIGZCLNK         ADRESSIEREN IGZCLNK
         MVC   SS22IGZ(4),0(R1)    SICHERN DER ERSTEN 4 BYTES
         IC    R14,IGZHDRL         LAENGE ZAP
         EX    R14,IGZMOVE         IGZCLNK AENDERN
         MVC   00(4,R1),IGZMOVE1   IGZCLNK AENDERN

The following is what i want, Register 1 points to an area inside the
Literal-Pool which indicates the style of the call and the offset of
the clear name on the calling program:

there are differences between static and dynamic link also cancel-call

*------- ANALYSE CALLING
         MVC   STABTPRG,=CL8'??'   PROGRAMMNAME
         L     R14,4(R13)          VORHERIGE SAVEAREA
         L     R5,PARAM            REGISTER 1
         XR    R6,R6               LOESCHEN REGISTER 5
         ICM   R6,B'0111',5(R5)    LADEN OFFSET
         AR    R14,R6              PLUS BASIS
         MVI   STABIDNT,STAB_UNBE  SETZEN INDIKATOR UNBEKANNT
         IF    (CLI,0(R5),EQ,X'A6'), ? CALL INDIKATOR MIT PARAMETER
               OR,
               (CLI,0(R5),EQ,X'A2') ? CALL INDIKATOR OHNE PARAMETER
          MVI  STABIDNT,STAB_CALL  SETZEN CALL
         ENDIF
         IF    (CLI,0(R5),EQ,X'62') ? CALL INDIKATOR
          MVI  STABIDNT,STAB_CANC  SETZEN CANCEL
         ENDIF
         IF    (CLI,0(R5),EQ,X'96') ? CALL INDIKATOR STATISCHER CALL
          MVI  STABIDNT,STAB_STAT  SETZEN STATISCH
          LA   R14,KSTATIK
         ENDIF
         MVC   STABTPRG,0(R14)     UEBERTRAGEN PGMNAMEN

i get all my information i want. Including an internal table i can
count all:

Callfrom-Type-Callto - so i can get the full volume of calls anf can
tell my - sorry - softwarespecialist, where they are wrong, and keep
clear resources by imlementation of a small part of instructions (i.e.
IF THEN ELSE....)

This is the output of my little pProgram:

UQSS22K 14:10:56.361430: CallVon   CallNach  Anzahl Calls
UQSS22K 14:10:56.361455: TQAS05K   IEFBR14              6
UQSS22K 14:10:56.361480:           UQAS05K             15
UQSS22K 14:10:56.361504:           UQSS14K              1
UQSS22K 14:10:56.361527:           UQTA05K7             1
UQSS22K 14:10:56.361556:           UQAS05K              8  Cancel
UQSS22K 14:10:56.361586: UQAS05K   CEELOCT              9  Get Current
Local Dat
UQSS22K 14:10:56.361610:           UQAS08K             24
UQSS22K 14:10:56.361635:           UQTA05K2            19
UQSS22K 14:10:56.361659: Summe                         83

i hope this is a interesting work - it is xp - experimantal - and: If
you
have it, you miss it in the past. If you dont know about this, you
never miss it :-)

thanks - Andreas Lerch -

--
You must see a problem - then you can solve it - 2001 - Myself ;-))



Sun, 29 Feb 2004 02:29:13 GMT  
 To See Whats Happen - Cobol Call Statistik

Quote:
>>>>>>>>>>>>>>>>>> Ursprngliche Nachricht <<<<<<<<<<<<<<<<<<


zum Thema To See Whats Happen - Cobol Call Statistik:

Quote:
> Hallo,
> system: OS-390-2.10 with COBOL for MVS and COBOL-II
> I have this idea: In my LE-370 Environment (test and development) i
> want to see which programm is calling other programms.

One final word:

if you do this and you are an systemprogrammer (SMP and Installation)
you can control it - Usermodification.

If you are a small programme - like me - you must hurry every time a
stupid systemprogrammer changes cobol.

Sorry - i know both jobs - i am a application programmer and in the
past i do the smp-work with the mask of a systemprogrammer - both,
appl and sys, must work togehter, to make a good and efficient work.

If i kick off anybody - sorry
if not - smile

hallo world

Andreas



Sun, 29 Feb 2004 02:51:02 GMT  
 To See Whats Happen - Cobol Call Statistik
Well, you made ME smile, Andreas...<G>

(Especially the bit about XORing Register 6 with itself to clear it, when
the comment (translated) says "Clear Register 5"....)

MORAL: Don't put comments in Assembler code unless you intend to maintain
them...<G>

Pete.

Quote:
>>>>>>>>>>>>>>>>>> Ursprngliche Nachricht <<<<<<<<<<<<<<<<<<


zum Thema To See Whats Happen - Cobol Call Statistik:

Quote:
> Hallo,
> system: OS-390-2.10 with COBOL for MVS and COBOL-II
> I have this idea: In my LE-370 Environment (test and development) i
> want to see which programm is calling other programms.

One final word:

if you do this and you are an systemprogrammer (SMP and Installation)
you can control it - Usermodification.

If you are a small programme - like me - you must hurry every time a
stupid systemprogrammer changes cobol.

Sorry - i know both jobs - i am a application programmer and in the
past i do the smp-work with the mask of a systemprogrammer - both,
appl and sys, must work togehter, to make a good and efficient work.

If i kick off anybody - sorry
if not - smile

hallo world

Andreas

-----=  Posted via Newsfeeds.Com, Uncensored Usenet News  =-----
http://www.newsfeeds.com - The #1 Newsgroup Service in the World!
 Check out our new Unlimited Server. No Download or Time Limits!
-----==  Over 80,000 Newsgroups - 19 Different Servers!  ==-----



Mon, 01 Mar 2004 10:52:28 GMT  
 To See Whats Happen - Cobol Call Statistik
Where did you find IGZCLNK source code?

TIA
Max



Mon, 01 Mar 2004 16:36:52 GMT  
 To See Whats Happen - Cobol Call Statistik

Quote:
>>>>>>>>>>>>>>>>>> Ursprngliche Nachricht <<<<<<<<<<<<<<<<<<


To See Whats Happen - Cobol Call Statistik:

Quote:
> Where did you find IGZCLNK source code?

Hello

I learn assembler in the late 70th early 80th, yes more than 20 years
ago - i'm 41 year old - some times, long time ago, i must read dumps
and interpret COBOL generation of Assembler code. Some times i can
'disassembler in mind' some code forward and backward of a
dump-position. Its - in german sorry - 'Erfahrung' (experience) and
'Neugierde' (searching for ..) and some litte code which is generated
by the cobol-compiler LA..ST..BALR..

then i code a small programm to dump the area passe by register 1 -
and -and -and

the rest: investing of time.....

i never change the original module IGZCLNK (now IGZCFCC too), i only
modify the storage in the loaded program :-) Zap-Inflight

have a nice day

i think, i do the right work for which i want.

Andreas



Tue, 02 Mar 2004 01:54:07 GMT  
 To See Whats Happen - Cobol Call Statistik

Quote:
>>>>>>>>>>>>>>>>>> Ursprngliche Nachricht <<<<<<<<<<<<<<<<<<

Am 13.09.01, 02:52:28, schrieb "Peter E. C. Dashwood"

Cobol Call Statistik:

Quote:
> Well, you made ME smile, Andreas...<G>
> (Especially the bit about XORing Register 6 with itself to clear it,
when
> the comment (translated) says "Clear Register 5"....)
> MORAL: Don't put comments in Assembler code unless you intend to
maintain
> them...<G>

My comments are not for me, my comments are for
nonreadingassembleryoungpeopelwhoonlyknowcobolorc - i correct it! ;-)

Andreas



Tue, 02 Mar 2004 01:37:36 GMT  
 To See Whats Happen - Cobol Call Statistik

Quote:
>>>>>>>>>>>>>>>>>> Ursprngliche Nachricht <<<<<<<<<<<<<<<<<<


zum Thema To See Whats Happen - Cobol Call Statistik:

Quote:
> Hallo,
> system: OS-390-2.10 with COBOL for MVS and COBOL-II

Here is my solution - sorry about the 6k attached file - it shows what
i have done

there are 4 different Programms:

UQTA05K* - central manager
UQSS20K  - IMS (CBLTDLI/ASMTDLI) Interface
UQSS21K* - DB2 (DSNHLI) Interface
UQSS22K  - COBOL-II Cobol for MVS Interface

the first call initialized tables, at Termination (normal and
abnormal) the tables are printet

i can see which type of DB-Call is done and where the modules located
in which version.

The details of UQSS2* are only in test the other lines are also in
production.

It saves a lot of time to analyse potetial problems.

I think I do a nice work! (selfpraise <G>)

Thank you to notice me

freundliche gruesse

Andreas

[ liste.txt 5K ]
1
 UQSS20K 08:33:52.087902: LBS-IT - IMS-Interface initialisiert (12.09.2001-09.27)
 UQSS22K 08:33:52.765284: LBS-IT - COBOL-II/390 CALL-Statistik initialisiert (13.09.2001-15.31)
 UQTA05K (12.09.2001-17.06) Datum: 14.09.2001 Jobname: A2640021 Step: EAD85    ProcStep: G        System: S
 UQTA05K 08:33:52.986279: Tabelle: 010203 Anzahl__:        83 Laenge:        9.379 Resident (44576000)
 UQTA05K 08:33:53.227115: Tabelle: 010001 gelesen
 UQTA05K 08:33:53.232212: Tabelle: 010006 gelesen
 UQTA05K 08:33:53.256695: Tabelle: 010146 gelesen
 UQTA05K 08:33:53.262336: Tabelle: 010003 gelesen
 UQTA05K 08:33:53.815282: Tabelle: 010029 Anzahl__:        66 Laenge:       18.282 Resident (44870000) (R)
 UQSS06K 08:34:02.750043: FQS056KE 0000146786 FQS056KA 0000000000 FQS056KB 0000000000 GETMAIN 000000 MAX.ANZ 0000000000
 UQSS05K 08:34:02.757960: FQS054KE 0000219525 FQS054KA 0000000000 FQS054KB 0000000000 GETMAIN 000000 MAX.ANZ 0000000000
 UQTA05K 08:34:03.094010: Tabelle: 010029 A Zugriffe:     1.715 R
 UQTA05K 08:34:03.094026: Tabelle: 010203 A Zugriffe:        84 R
 UQTA05K 08:34:03.094038: Tabelle: 010001 A Zugriffe:         1
 UQTA05K 08:34:03.094050: Tabelle: 010006 A Zugriffe:         1
 UQTA05K 08:34:03.094062: Tabelle: 010146 A Zugriffe:         1
 UQTA05K 08:34:03.094073: Tabelle: 010003 A Zugriffe:         2
 UQSS20K 08:34:03.094126: DBD       Funk  PCB# Status Blank Status falsch letzter Status
 UQSS20K 08:34:03.094151: DQ0BPS    GNP      1          379             2 GE
 UQSS20K 08:34:03.094176: DQ0BPS    GU                   10             0 Blank
 UQSS20K 08:34:03.094200: Summe            391          389             2
 UQSS21K 08:34:03.095156: LBS-IT - DB2-Interface initialisiert (12.09.2001-15.22)
 UQSS22K 08:34:03.095193: CallVon  CallNach Anzahl Calls Bemerkung
 UQSS22K 08:34:03.095217: PQAD85K  UQAS05K             1
 UQSS22K 08:34:03.095241:          UQAS29K             1
 UQSS22K 08:34:03.095265:          UQSS05K       219.526
 UQSS22K 08:34:03.095288:          UQSS06K       146.788
 UQSS22K 08:34:03.095312:          UQTA05K2        1.715
 UQSS22K 08:34:03.095335:          UQTA05K4           84
 UQSS22K 08:34:03.095360:          UQTA05K5            1
 UQSS22K 08:34:03.095386:          UQTA05K7            1
 UQSS22K 08:34:03.095409:          UQZT04K         1.544
 UQSS22K 08:34:03.095464: UQAS05K  CEELOCT             1 Get Current Local Date or Time

 UQSS22K 08:34:03.095488:          UQAS08K             3
 UQSS22K 08:34:03.095511:          UQTA05K2            2
 UQSS22K 08:34:03.095535: UQAS29K  UQAS05K             1
 UQSS22K 08:34:03.095558:          UQAS07K             1
 UQSS22K 08:34:03.095582:          UQSS08K             1
 UQSS22K 08:34:03.095605:          UQSS13K             1
 UQSS22K 08:34:03.095628:          UQTA05K1            1
 UQSS22K 08:34:03.095652:          UQTA05K2            3
 UQSS22K 08:34:03.095675: Summe                  369.675
 UQTA05K 08:34:03.106425: Pgmname: PQAD85K  Comp: COBOL2 10.04.2000-14:16  Steplib QLBS.BTCH.TESTLIB
 UQTA05K 08:34:03.140138: Pgmname: UQSS21K  Comp: ASM    12.09.2001-15:22  Steplib QLBS.DYNA.TESTLIB
 UQTA05K 08:34:03.171426: Pgmname: UQTA05K7 Comp: ASM    12.09.2001-17:06  Alias
 UQTA05K 08:34:03.192862: Pgmname: UQTA05K  Comp: ASM    12.09.2001-17:06  Steplib QLBS.DYNA.TESTLIB
 UQTA05K 08:34:03.228482: Pgmname: UQZT04K  Comp: COBOL2 06.09.2001-05:21  Steplib BS.DYNA.PRAXLIB
 UQTA05K 08:34:03.248274: Pgmname: UQSS05K  Comp: ASM    20.06.2001-08:24  Steplib BS.DYNA.PRAXLIB
 UQTA05K 08:34:03.258977: Pgmname: UQSS06K  Comp: ASM    14.06.2001-11:58  Steplib BS.DYNA.PRAXLIB
 UQTA05K 08:34:03.283360: Pgmname: UQAS07K  Comp:  - keine Compile-Info    Steplib BS.DYNA.PRAXLIB
 UQTA05K 08:34:03.301144: Pgmname: UQTA05K2 Comp: ASM    12.09.2001-17:06  Alias
 UQTA05K 08:34:03.315926: Pgmname: UQTA05K  Comp: ASM    12.09.2001-17:06  Steplib QLBS.DYNA.TESTLIB
 UQTA05K 08:34:03.348803: Pgmname: UQTA03K  Comp:  - keine Compile-Info    Steplib BS.DYNA.PRAXLIB
 UQTA05K 08:34:03.367807: Pgmname: UQSS08K  Comp:  - keine Compile-Info    Steplib BS.DYNA.PRAXLIB
 UQTA05K 08:34:03.416276: Pgmname: UQAS08K  Comp:  - keine Compile-Info    Steplib BS.DYNA.PRAXLIB
 UQTA05K 08:34:03.466141: Pgmname: UQAS05K  Comp: COBOL2 10.01.2001-09:27  Steplib BS.DYNA.PRAXLIB
 UQTA05K 08:34:03.492368: Pgmname: UQAS29K  Comp: COBOL2 13.01.2000-13:02  Steplib QLBS.DYNA.TESTLIB
 UQTA05K 08:34:03.502369: Pgmname: UQTA05K4 Comp: ASM    12.09.2001-17:06  Alias
 UQTA05K 08:34:03.510133: Pgmname: UQTA05K  Comp: ASM    12.09.2001-17:06  Steplib QLBS.DYNA.TESTLIB
 UQTA05K 08:34:03.519374: Pgmname: UQTA05K5 Comp: ASM    12.09.2001-17:06  Alias
 UQTA05K 08:34:03.527793: Pgmname: UQTA05K  Comp: ASM    12.09.2001-17:06  Steplib QLBS.DYNA.TESTLIB
 UQTA05K 08:34:03.537726: Pgmname: UQSS22K  Comp: ASM    13.09.2001-15:31  Steplib QLBS.DYNA.TESTLIB
 UQTA05K 08:34:03.562269: Pgmname: UQSS21K1 Comp: ASM    12.09.2001-15:22  Alias
 UQTA05K 08:34:03.574378: Pgmname: UQSS21K  Comp: ASM    12.09.2001-15:22  Steplib QLBS.DYNA.TESTLIB
 UQTA05K 08:34:03.587339: Pgmname: UQSS13K  Comp: ASM    22.05.2001-11:39  Steplib QLBS.DYNA.TESTLIB
 UQTA05K 08:34:03.616793: Pgmname: UQSS20K  Comp: ASM    12.09.2001-09:27  Steplib QLBS.DYNA.TESTLIB
 UQTA05K 08:34:03.648046: Pgmname: UQTA03K  Comp:  - keine Compile-Info    Steplib BS.DYNA.PRAXLIB
 UQTA05K 08:34:03.668872: Pgmname: UQTA05K1 Comp: ASM    12.09.2001-17:06  Alias
 UQTA05K 08:34:03.699163: Pgmname: UQTA05K  Comp: ASM    12.09.2001-17:06  Steplib QLBS.DYNA.TESTLIB
 UQTA05K 08:34:03.714358: Pgmname: UQSS14K  Comp: COBOL2 22.10.1998-13:15  Steplib BS.DYNA.PRAXLIB
 UQTA05K 08:34:03.730406: Pgmname: UQSS16K  Comp: ASM    10.03.1998-11:26  Steplib BS.DYNA.PRAXLIB
 UQTA05K 08:34:03.730471: Ende des Protokolls. Insgesamt:       1.804 Zugriffe



Tue, 02 Mar 2004 22:06:08 GMT  
 To See Whats Happen - Cobol Call Statistik
I used to work with some Japanese microcoders. While they couldn't read
English, per se', they did have a thorough grasp of the storage controller
microcode assembler. On several instances, they'd change the coded
instruction, but neglect to change the comments.

The four letter words that flowed forth from this one "Good 'ol boy" were
truly astounding after he figured out what had happened to his recovery
routine...



Quote:
> Well, you made ME smile, Andreas...<G>

> (Especially the bit about XORing Register 6 with itself to clear it, when
> the comment (translated) says "Clear Register 5"....)

> MORAL: Don't put comments in Assembler code unless you intend to maintain
> them...<G>

> Pete.


>>>>>>>>>>>>>>>>>>> Ursprngliche Nachricht <<<<<<<<<<<<<<<<<<


> zum Thema To See Whats Happen - Cobol Call Statistik:

>> Hallo,

>> system: OS-390-2.10 with COBOL for MVS and COBOL-II

>> I have this idea: In my LE-370 Environment (test and development) i
>> want to see which programm is calling other programms.

> One final word:

> if you do this and you are an systemprogrammer (SMP and Installation)
> you can control it - Usermodification.

> If you are a small programme - like me - you must hurry every time a
> stupid systemprogrammer changes cobol.

> Sorry - i know both jobs - i am a application programmer and in the
> past i do the smp-work with the mask of a systemprogrammer - both,
> appl and sys, must work togehter, to make a good and efficient work.

> If i kick off anybody - sorry
> if not - smile

> hallo world

> Andreas

> -----=  Posted via Newsfeeds.Com, Uncensored Usenet News  =-----
> http://www.newsfeeds.com - The #1 Newsgroup Service in the World!
> Check out our new Unlimited Server. No Download or Time Limits!
> -----==  Over 80,000 Newsgroups - 19 Different Servers!  ==-----



Sun, 07 Mar 2004 23:58:41 GMT  
 
 [ 9 post ] 

 Relevant Pages 

1. To See Whats Happen - Cobol Call Statistik

2. Strange thing happening, have You seen that?

3. Scan backlogs and CPU usage - whats happening here?

4. Whats really happening with Dylan

5. Whats Happening with Y2K?

6. list comprehensions whats happening here

7. COBOL calling C calling COBOL

8. COBOL calling C calling COBOL

9. tso rexx calls cobol calls cobol -> splat

10. Whats the best PC based Cobol?

11. Statistik verstaendlich mit J

12. Incorrect call to routine just started happening

 

 
Powered by phpBB® Forum Software