Page 2 of 2

Re: How to find a load module by date&time that is compiled?

PostPosted: Wed May 30, 2012 11:44 am
by Mehdi shri
Dear
I work in a datacenter. Some body wrties the cobol program and compiles it. Oother persons test this and give them to runing environment. I am responsible to give loade modules name and date and time of compiling ina a spreadsheet, then if there are equal to loadmodules(in date and time of compiling ) in the specied PDS on spread sheet I must copy this load modules from development PDS (for example from DEVLGROP.ACCTBILL.LOAD to TESTGROP.ACCTBILL.LOAD ).
Because some developer changes and recompile some of this program, therefore loadmodules produced in newer date&time(for compile). This developers doeing wrong but I must prevent this. I must not rely on loaudmodule member name. Therefor compiling date and time is important parameter for me. I responsible to recognizing development and test gropu to be same in thier environment. This picture show our development PDS liberary.

Re: How to find a load module by date&time that is compiled?

PostPosted: Wed May 30, 2012 12:29 pm
by BillyBoyo
Maybe do a Google for COBANAL and talk to your management about whether you can use it at your site.

There are also a couple of licensed products which do what you want, if you management prefers to spend money.

However, since it looks like you are using Cobol II, it doesn't look like they do like that sort of thing...

Only one Cobol program per load?

Re: How to find a load module by date&time that is compiled?

PostPosted: Wed May 30, 2012 9:46 pm
by Mehdi shri
Dear friends
Whit best regards and thank you , The AMBLIST pgm and LISTLOAD control statement lists detail information of any load module that used in main loadmodule. It was very boring for me and I coudn't find any way to do.
Is there any techniques in ISPF ( so I can use it by a JCL )only for comparing members size? For example I use a macro or same things. What I must to do? Which lanquage I must know to write a program for this purpose and use it by JCL?
:( :oops:

Re: How to find a load module by date&time that is compiled?

PostPosted: Wed May 30, 2012 10:44 pm
by BillyBoyo
Are you only interested in Cobol II programs, or any others?

If you do the full LISTLOAD to a dataset, you should be able to use your Sort product to locate and output the details for all Cobol II programs. Remember you'll need the loadmodule name as well.

That is if you are not going to bother with COBANAL, which is free, and already produces what you want and more (again you'd have to cut down the output).

I've even got a Cobol program which does it, but that would cost you money :-)

Re: How to find a load module by date&time that is compiled?

PostPosted: Wed May 30, 2012 11:18 pm
by Mehdi shri
I want to use a macro or same things. What I must to do? Which lanquage I must know to write a program for this purpose and use it by JCL?

Re: How to find a load module by date&time that is compiled?

PostPosted: Wed May 30, 2012 11:38 pm
by BillyBoyo
Use JCL to run AMBLIST, output to a file. Use Sort to extract from that file, loadmodule name, program name, date/time compiled, to a file. Browse the file. If you want to use a macro to browse the file, do so.

Re: How to find a load module by date&time that is compiled?

PostPosted: Thu May 31, 2012 12:01 am
by Pedro
for comparing members size?


The member list for a load module dataset will give you the member size. It will give you also the TTR. The TTR is an offset from the beginning of the dataset. If you replace a member, it's TTR will change. If you capture the member list periodically and then compare with the prior generation, you should be able to figure out which members changed.

note: If you compress a PDS, then likely the TTRs will change, giving many false positives.

Use the LMMLIST service of ISPF to get the member list information.

note: if someone uses AMASPZAP to alter a load module, neither the size nor the TTR will change (nor your eyecatcher dates). I do not think you can detect such a change without saving the entire load module and doing a compare.

Re: How to find a load module by date&time that is compiled?

PostPosted: Thu May 31, 2012 12:44 am
by steve-myers
Pedro wrote:... note: If you compress a PDS, then likely the TTRs will change, giving many false positives.
The TTRs will change after a "compress," but I don't think the order of the members change. The member with the highest TTR before the "compress" will still have the highest TTR after the "compress" and is still the most recently added member.

Re: How to find a load module by date&time that is compiled?

PostPosted: Thu May 31, 2012 1:24 am
by BillyBoyo
The length of the load module and the length of individual parts of the load module are available in the LISTLOAD output from AMBLIST.

It will even tell you about AMASPZAP changes, but I doubt you'll ever see any.

Use AMBLIST to list one loadmodule. Print it. Familiarise yourself with where to find the information you want. Write some Sort cards to include/omit the information you want/don't want.

Once you've got the basics working, try it with two or three modules. Make the output sufficiently fancy for your task.

Run with the whole report.

Re: How to find a load module by date&time that is compiled?

PostPosted: Thu May 31, 2012 2:35 am
by steve-myers
This is part of the directory of a source type PDS -
JES2RJE  00020B 00020B 00020C 0238000D0B 0238000D0C
*****GAS        00020D 00020E 0238000D0D 0238000D0E
CLIST    00020F 00020F 000210 0238000D0F 0238000D10
NEWASM   000211 000211 000212 0238000D11 0238000D12
*****GAS        000213 000214 0238000D13 0238000D14
*****GAS        000215 000216 0238000D15 0238000D16
*****GAS        000217 000218 0238000D17 0238000D18
*****GAS        000219 00021A 0238000D19 0238000D1A
TERSE    00021B 00021B 00021C 0238000D1B 0238000D1C
LISTCAT3 00021D 00021D 00021E 0238000D1D 0238000D1E
*****GAS        00021F 000220 0238000D1F 0238000D20
*****GAS        000221 000222 0238000D21 0238000D22
NEWLOG   000223 000223 000224 0238000D23 0238000D24


The first column after the member name is the directory TTR, the remaining four columns are a calculated TTR for the first and last records followed by the CCHHR of the first and last physical records in the member.

I then "compressed" the dataset and reran the program, and got this result -
JES2RJE  00011D 00011D 00011E 0238000C1D 0238000C1E
CLIST    00011F 00011F 000120 0238000C1F 0238000C20
NEWASM   000121 000121 000122 0238000C21 0238000C22
TERSE    000123 000123 000124 0238000C23 0238000C24
LISTCAT3 000125 000125 000126 0238000C25 0238000C26
NEWLOG   000127 000127 000201 0238000C27 0238000D01