|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : novembre 2007 Messages : 1 ![]() |
Bonjour,
Je suis à la recherche d'une solution pour comparer deux versions de load, je développe sous PACBASE V2.5 pour TSO IBM. La situation est la suivante : - J'ai deux bibliothèques (1 par environnement de tests) où sont stockées mes loads, Loadlib1 et loadlib2. - Je n'ai pas accès aux générés Cobol. Connaissez-vous une solution qui me permettrait de comparer les versions compilées de mes programmes qui appartiennent à ces deux environnements? -> J'ai testé sans succès le SuperCompare de TSO 3.13 -> Y a-t-il une application disponible via JCL qui serait capable de chercher la Session PACBASE et/ou la date de compilation et/ou le User utilisé lors de cette compilation à partir des bibliothèques de load? -> Je me pose la question pour les programmes Batch mais aussi pour les écrans TP. Merci d'avance, Cordialement, Rémi. |
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Guillaume VENTREz/OS Technical Leader Inscription : décembre 2006 Messages : 514 ![]() |
Concernant les loads, comme un load cobol classique tu peux trouver la date decompil en dur dans le load. Si tu sais que le pgm a été compilé en 2007 par exemple, browse ton load et un 'F 2007' devrait te positionner sur la date de compil.
Si tu as PDSMAN, en colonne 'changed' de ton PDS de load tu peux visualiser la date de compil sans browser le load.
__________________
★★ Documentation Mainframe par Guillaume Ventre ★★ |
|
00
|
|
|
#3 |
|
Membre expérimenté
![]() Inscription : octobre 2007 Messages : 449 ![]() |
Les outils pour faire ça ne doivent pas être légion mais un moyen pas trop difficile par programme (Cobol par exemple, REXX ne sait pas lire de l'indéfini, curieux pour ce langage qui a si peu de limites), c'est de lire le load et de s'intéresser non pas à la date de compilation qui ressort différemment en fonction des compilateurs mais à la date de Link-édit, non dépendante du compilateur.
En gros, un load commence par donner les modules et run-time appelés avec leurs adresses de chargement, ces enregistrments de début commencent par des 20 hexa. On trouve ensuite des enregistrements qui débutent par X'8011' ou x'8015' qui se terminent ent par la date et l'heure de linkédit en hexa bien entendu(date en +16 format aaqqq de mémoire, précédée par un x'01' pour > an 2000) On trouve encore d'autre x'80' pour le FMID par exemple et enfin les enregistrement TXT qui correspondent au généré du pgm compilé. ('drapeaux' cités à confirmer par un browse de quelques load sur votre site) Sinon voir du côté des produits installés sur site, Fileaid sait analyser un load sous TSO mais je n'ai pas eu l'occasion de vérifier en Batch. Voir aussi du côté de CBTTAPE, j'ai souvenir d'un sample cobol pour affichage de la date de compilation mais je n'ai pas noté dans quel fichier ça se trouvait. |
|
|
00
|
|
|
#4 |
|
Membre expérimenté
![]() Inscription : octobre 2007 Messages : 449 ![]() |
Pour complément plus précis (vérifié cette fois), je me suis souvenu qu'il est possible de scanner une loadlib par ISRSUPC (le 3.14 TSO, mais en passant par l'option Batch)
Donc on peut construire un JCL simple en s'appuyant sur Sort par exemple comme joint, ICETOOL ou un REXX pour un traitement plus fin. Ca donne ça comme idée pour tests de départ (on se contente de la date, on peut ajouter l'heure) : //LISTE SET LISTE='MYUSER.WORK.LISTE' //SEARCH EXEC PGM=ISRSUPC,PARM=(SRCHCMP,'IDPFX NOSUMS NOPRTCC') //* RECUPERER LA DATE DE LINK-EDIT DEPUIS UN SCAN LOADLIB //NEWDD DD DISP=SHR,DSN=MY.LOADLIB //OUTDD DD DISP=(NEW,PASS),DSN=&&LIST1,SPACE=(TRK,(90,90),RLSE), // UNIT=3390,LRECL=133,RECFM=FB,BLKSIZE=0 //SYSIN DD * SLIST OFF SRCHFOR X'8011',1:2 SRCHFOR X'8015',1:2 //* SRCHFOR X'8014',1:2 EN PLUS DES 8011 MAIS RATTAPER DECALAGE //* //EXTRACT EXEC PGM=SORT FORMAT. DES LIGNES SIGNIFICATIVES //SYSOUT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SORTIN DD DSN=&&LIST1,DISP=(OLD,DELETE) //SORTOUT DD DISP=(,CATLG),DSN=&LISTE,SPACE=(TRK,(90,90),RLSE), // UNIT=3390,LRECL=80,RECFM=FB,BLKSIZE=0 //* 2 ENREGISTREMENTS SI LOAD RELINKEDITE SANS COMPILE (15 PUIS 11) //* SI ON VEUT LES DEUX : SORT FIELDS=(01,10,CH,A,19,2,BI,A),EQUALS //SYSIN DD * SORT FIELDS=(01,10,CH,A),EQUALS SUM FIELDS=NONE OMIT COND=(1,1,CH,EQ,C' ') OUTREC FIELDS=(1,10,C'DATE LINK=',34,3,PD,TO=ZD,LENGTH=5,80:C' ') //* |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 1 ![]() |
Bonjour,
normalement dans le début de ton module tu dois retrouver la date de linkedit en format julien (aajjj) sinon avec amblist (listload) tu peux également obtenir ces infos |
|
|
00
|
|
|
#6 |
|
Membre expérimenté
![]() Inscription : octobre 2007 Messages : 449 ![]() |
AMBLIST est une idée mais à part mettre en oeuvre du REXX ou un ensemble de steps ou procédures pour récupérer la directory et demander une liste pour chaque membre je ne vois pas bien. Ca risque de mouliner pas mal et de produire pas mal d'écritures marginales. Si on peut faire un LISTLOAD sans préciser Member=, merci d'indiquer comment, je ne connais pas. Si c'est le cas, cette solution serait moins 'bricolée', sinon celle que j'ai proposée devrait facilement lister toutes les dates, aux alias définis dans des loadlib systèmes près.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com