Section courante

A propos

Section administrative du site

Les premiers pas

Pour se lancer en assembleur 370, la méthode la plus accessible consiste à utiliser le système Turnkey MVS de Volker Bandke. Cette distribution pratique intègre l'assembleur gratuit IFOX00 ainsi que de nombreux outils supplémentaires. Une fois que vous avez installé Hercules (un émulateur de mainframe IBM) et le système Turnkey - prenant en charge l'installation des deux - vous pouvez commencer à écrire, assembler et exécuter vos propres programmes en assembleur 370.

Bien que MVS38j (le système d'exploitation inclus dans Turnkey MVS) soit une excellente base, ce n'est pas la seule option. Il existe d'autres systèmes compatibles avec l'architecture S/370 dans le domaine public, comme VM, VSE, ou encore TSS. Cependant, l'approche via la distribution Turnkey est généralement la plus simple pour un débutant, notamment grâce à sa communauté active et sa documentation abondante.

Assemblage, liaison et exécution d'IEFBR14

En général, le premier programme présenté dans un tutoriel de programmation est le programme «Bonjour le monde». Nous avons déjà une introduction à y apporter.

Commençons par quelque chose de plus simple : un programme IEFBR14. Ce programme ne fait presque rien, mais il constitue un bon point de départ pour apprendre l'assembleur 370. Voici le code source de l'assembleur 370 pour IEFBR14 :

  1. IEFBR14 CSECT ,
  2.         SLR   15,15
  3.         BR    14
  4.         END ,

Si vous utilisez le système clef en main, vous pouvez saisir ces informations dans un fichier MVS et le soumettre à MVS à l'aide de la tâche ci-dessous. Cette tâche assemble, édite les liens et exécute notre programme assembleur 370 par lots sous MVS :

  1. //IEFBR14  JOB CLASS=A,MSGCLASS=A,RESTART=ASMF
  2. //*--------------------------------------------------------------------
  3. //IEHPROGM EXEC PGM=IEHPROGM
  4. //SYSPRINT  DD SYSOUT=*
  5. //MVS3380   DD UNIT=3380,VOL=SER=MVS809,DISP=SHR
  6. //SYSIN     DD *
  7.  SCRATCH DSNAME=JMM.S370ASM.LOAD,VOL=3380=MVS809
  8.  UNCATLG DSNAME=JMM.S370ASM.LOAD
  9. //*--------------------------------------------------------------------
  10. //ALLOC    EXEC PGM=IEFBR14
  11. //LOAD      DD DSN=JMM.S370ASM.LOAD,
  12. //             UNIT=3380,VOL=SER=MVS809,
  13. //             SPACE=(CYL,(20,0,15)),
  14. //             DCB=(RECFM=U,BLKSIZE=32760),
  15. //             DISP=(,CATLG)
  16. //*--------------------------------------------------------------------
  17. //ASMF     EXEC PGM=IFOX00,REGION=2048K
  18. //SYSLIB    DD DSN=SYS1.AMODGEN,DISP=SHR
  19. //          DD DSN=SYS1.AMACLIB,DISP=SHR
  20. //SYSUT1    DD DISP=(NEW,DELETE),SPACE=(1700,(900,100)),UNIT=SYSDA
  21. //SYSUT2    DD DISP=(NEW,DELETE),SPACE=(1700,(600,100)),UNIT=SYSDA
  22. //SYSUT3    DD DISP=(NEW,DELETE),SPACE=(1700,(600,100)),UNIT=SYSDA
  23. //SYSPRINT  DD SYSOUT=*
  24. //SYSPUNCH  DD DSN=&&OBJ,UNIT=SYSDA,SPACE=(CYL,1),DISP=(,PASS)
  25. //SYSIN     DD *
  26. IEFBR14  CSECT ,
  27.            SLR   15,15
  28.            BR    14
  29.            END   ,
  30. //*-------------------------------------------------------------------
  31. //LKED     EXEC PGM=IEWL,
  32. //             COND=(5,LT,ASMF),
  33. //             PARM='LIST,MAP,XREF,LET,NCAL,RENT'
  34. //SYSPRINT  DD SYSOUT=*
  35. //SYSLMOD   DD DSN=JMM.S370ASM.LOAD,DISP=SHR
  36. //* SLIB DD DSN=SYS1.LINKLIB,DISP=SHR
  37. //SYSUT1    DD UNIT=SYSDA,SPACE=(TRK,(5,5))
  38. //SYSLIN    DD DSN=&&OBJ,DISP=(OLD,DELETE)
  39. //          DD *
  40.  NAME IEFBR14(R)
  41. //*-------------------------------------------------------------------
  42. //IEFBR14  EXEC PGM=IEFBR14
  43. //STEPLIB   DD DSN=JMM.S370ASM.LOAD,DISP=SHR
  44. //

Le résultat de l'exécution de cette tâche apparaît en bas de cette page.

Examinons chaque étape dans l'ordre et voyons ce que chacune d'elles fait. La première étape, IEHPROGM, supprime et décatalogue une bibliothèque si elle existe. Cette étape génère un code retour différent de zéro, que vous pouvez ignorer si la bibliothèque n'existe pas déjà. L'étape suivante, ALLOC, crée la bibliothèque à nouveau. L'étape d'assemblage, ASMF, lit le code source de l'assembleur 370 et produit un ensemble d'objets. L'étape d'édition de lien, LKED, lit l'ensemble d'objets et produit un module de chargement exécutable. L'étape finale, IEFBR14, exécute notre programme assembleur 370 à partir du module de chargement.

IEHPROGM et le programme IEFBR14 d'IBM sont des utilitaires standard ; nous n'en parlerons donc pas davantage.

Nous commençons à examiner ce travail MVS avec l'étape ASMF, exécutant l'assembleur 370 dont le nom du programme est IFOX00.

L'assembleur 370

Exécution d'IFOX00

Examinons brièvement les DDNAME d'IFOX00 :

Lors de l'exécution de notre JCL, notre assembly reçoit un code de retour zéro de IFOX00, ce qui signifie que le code source a été assemblé correctement. Le message de sortie de notre tâche indique :

IEF142I IEFBR14 ASMF - STEP WAS EXECUTED - COND CODE 0000

Formatage du code source de l'assembleur 370

L'assembleur MVS38j IFOX00, la commande VM «assemble» et la plupart des autres assembleurs 370 que vous rencontrerez ont des exigences assez standard concernant le formatage de votre programme source.

La norme de l'assembleur 370 stipule que les enregistrements source doivent avoir une longueur de 80 octets. Les ensembles de données du code source MVS peuvent être bloqués ou débloqués ; vous souhaiterez probablement les bloquer à l'aide d'attributs DCB tels que RECFM=FB,LRECL=80,BLKSIZE=3200.

Le code source de l'assembleur 370 est généralement en majuscules, bien que les commentaires puissent généralement être en majuscules et en minuscules. Si vous utilisez un assembleur plus moderne, tel que HLASM, la majeure partie du code source peut être en majuscules et en minuscules.

Les instructions source se présentent sous plusieurs formes : commentaires, instructions assembleur et instructions. Les commentaires contiennent un astérisque (*) dans la première colonne. Les colonnes sont généralement numérotées à partir de 1. Presque tout est possible pour les lignes de commentaires : elles sont libres.

Les instructions sont faciles à identifier : elles sont documentées dans les POP et le REFSUM. Tout le reste est une instruction assembleur, fournissant des instructions à l'assembleur.

Chaque instruction assembleur S/370 est divisée en plusieurs champs (relativement libres) : étiquette, code opération, opérande(s), commentaires, colonne de continuation et numéros de séquence.

Si vous utilisez le système clef en main, nous croyons qu'IFOX00 intègre le usermod de Greg Price, permettant l'affichage de lignes source entièrement vides dans le fichier source. Sans le usermod de Greg Price ou un outil similaire, IFOX00 se plaindrait lorsqu'il verrait une ligne entièrement vide.

Sortie assembleur 370

Lorsque nous exécutons IFOX00, il produit la sortie ci-dessous. La sortie d'impression MVS est généralement plus large que celle affichée par la plupart des navigateurs Web ; il faut donc faire défiler la page vers la droite et la gauche pour la voir en entier. L'assembleur numérote ses pages de sortie à l'extrême droite.

                                                                                           EXTERNAL SYMBOL DICTIONARY                                      PAGE    1


SYMBOL   TYPE  ID   ADDR  LENGTH LDID                                                            ASM 0201 02.32 04/26/76

IEFBR14   SD  0001 000000 000004
                                                                                                                                                           PAGE    2


  LOC  OBJECT CODE    ADDR1 ADDR2  STMT   SOURCE STATEMENT                                       ASM 0201 02.32 04/26/76

000000                                1 IEFBR14  CSECT ,
000000 1FFF                           2          SLR   15,15
000002 07FE                           3          BR    14
                                                                          4          END   ,
                                                                                                  ASSEMBLER DIAGNOSTICS AND STATISTICS                     PAGE    3


                                                                                                                                                                                                 ASM 0201 02.32 04/26/76

NO STATEMENTS FLAGGED IN THIS ASSEMBLY
HIGHEST SEVERITY WAS    0
OPTIONS FOR THIS ASSEMBLY
  ALIGN, ALOGIC, BUFSIZE(STD), DECK, ESD, FLAG(0), LINECOUNT(55), LIST, NOMCALL, YFLAG, WORKSIZE(2097152)
  NOMLOGIC, NONUMBER, NOOBJECT, NORENT, RLD, NOSTMT, NOLIBMAC, NOTERMINAL, NOTEST, XREF(SHORT)
  SYSPARM()
WORK FILE BUFFER SIZE/NUMBER =19066/ 1
TOTAL RECORDS READ FROM SYSTEM INPUT          4
TOTAL RECORDS READ FROM SYSTEM LIBRARY        0
TOTAL RECORDS PUNCHED                         3
TOTAL RECORDS PRINTED                        22

Déchiffrer la sortie de l'assembleur

La majeure partie de cette section sur le déchiffrement de la sortie de l'assembleur est également traitée dans le Guide du langage assembleur 370.

Page 1, Dictionnaire des symboles externes

Page 2, la liste des programmes

Page 3, DIAGNOSTICS ET STATISTIQUES ASSEMBLEUR

Nous examinons ensuite l'étape LKED, exécutant l'éditeur de liaison S/370 dont le nom de programme est IEWL. L'éditeur de liaison est parfois appelé LKED, abréviation de LinKage EDitor.

L'éditeur de liaison S/370

Exécution d'IEWL

Examinons brièvement les noms de domaine (DDNAME) d'IEWL.

Sortie de l'éditeur de liaison S/370

     F64-LEVEL LINKAGE EDITOR OPTIONS SPECIFIED LIST,MAP,XREF,LET,NCAL,RENT
              DEFAULT OPTION(S) USED -  SIZE=(165888,55296)
    IEW0000     NAME IEFBR14(R)



                                                    CROSS REFERENCE TABLE


      CONTROL SECTION                       ENTRY

        NAME    ORIGIN  LENGTH                NAME   LOCATION     NAME   LOCATION     NAME   LOCATION     NAME   LOCATION
      IEFBR14       00       4


     ENTRY ADDRESS       00

     TOTAL LENGTH         8
    ****IEFBR14   NOW REPLACED IN DATA SET
    AUTHORIZATION CODE IS         0.
    **MODULE HAS BEEN MARKED REENTERABLE, AND REUSABLE.

Décryptage de la sortie de l'éditeur de liaison

Examinons brièvement la sortie de l'éditeur de liaison. Nous ne pouvons pas expliquer l'éditeur de liaison MVS en détail, car il mériterait un tutoriel à lui seul. Vous remarquerez peut-être que le niveau F de l'assembleur correspond à celui de l'éditeur de liaison. C'est souvent le cas ; ils ont tendance à rester synchronisés, car ils sont très dépendants l'un de l'autre.

Si vous vous reportez au JCL MVS utilisé pour exécuter le programme IEWL, vous remarquerez que nous avons passé des valeurs PARM ; c'est là que l'éditeur de liaison récupère ses options. Les OPTIONS LKED étaient : LIST (afficher les instructions d'entrée de SYSLIN), MAP (produire une table de chargement de module), XREF (produire une référence croisée), LET (marquer le module comme exécutable même s'il contient des erreurs), NCAL (ne pas utiliser la fonction d'appel automatique pour résoudre les symboles non résolus) et RENT (marquer le module comme réentrant). Nous ne mentionnons que quelques-unes de ces options.

Si vous omettez NCAL, le DDNAME de la bibliothèque SYSLIB de l'étape LKED sera ouvert et la recherche de symboles externes pouvant être utilisés pour satisfaire aux exigences d'entrée SYSLIN de LKED sera effectuée. Tout d'abord, SYSLIN est l'emplacement où nous avons placé l'ensemble d'objets de sortie de l'assembleur ; LKED l'a lu comme entrée principale. Nous avons concaténé un jeu de données intégré (DD *) après le jeu d'objets et fourni une instruction NAME avec l'option replace (R). Cette instruction NAME spécifie le nom du module de chargement qui sera stocké dans le répertoire de la bibliothèque de chargement. L'option replace indique qu'il est possible de remplacer le module s'il existe déjà. Notez que les instructions de contrôle LKED ne peuvent pas commencer dans la colonne 1 (pour une raison obscure et probablement inutile), nous avons donc placé le NAME dans la colonne 2. L'éditeur de liens possède son propre manuel, et il serait utile d'en avoir un, ainsi que le manuel des messages LKED.

Il y a maintenant deux colonnes principales : CONTROL SECTION et ENTRY. Nous savons déjà ce que sont une CSECT ou un élément similaire, et un point d'entrée. Sous chacune de ces deux colonnes principales se trouvent des sous-colonnes (faute d'un meilleur terme).

La section de contrôle NAME est notre vieille amie la CSECT IEFBR14. Vient ensuite la colonne ORIGIN, représentant un autre décalage ; cette fois, il s'agit du décalage par rapport au début du module de chargement. LENGTH a la même signification que la longueur du dictionnaire de symboles externes de l'assembleur. Si la longueur d'une CSECT n'est pas divisible par 8, LKED arrondit la CSECT suivante à la limite de mot double supérieure.

Ce comportement de LKED est dû à certaines instructions S/370 nécessitant que certaines de leurs données soient alignées sur une limite de mot double (c'est-à-dire une adresse d'entreposage divisible par 8). Si LKED n'effectuait pas cet alignement de CSECT, lorsque l'assembleur produirait son paquet d'objets afin de placer une définition d'entreposage sur une limite de double mot, la zone de données pourrait ne pas se retrouver sur une limite de double mot dans le programme une fois chargée en entreposage. Vous constaterez donc de temps à autre un « espace mort » dans vos modules de chargement pour satisfaire à cette exigence. Par ailleurs, l'alignement de double mot est la raison pour laquelle le service MVS GETMAIN (allocation d'entreposage) fournit de l'entreposage sur une limite de double mot.

Après avoir lu toutes les entrées, LKED attribue l'adresse d'entrée (là encore un décalage relatif du module de chargement) au module de chargement. Notre instruction END ne spécifiait pas d'adresse de point d'entrée et nous n'avons pas fourni d'instruction ENTRY à LKED ; LKED utilise donc son point d'entrée par défaut, étant la première CSECT rencontrée dans l'entrée principale. Dans ce cas, il s'agit de la CSECT IEFBR14.

La longueur totale du module de chargement est de 8, comme l'exige l'alignement des CSECT (même s'il n'y en a qu'une seule).

****IEFBR14 NOW REPLACED IN DATASET signifie que LKED a respecté notre option (R) sur l'instruction NAME. LKED place le module de chargement de sortie sur le DDNAME SYSLMOD.

Le CODE D'AUTORISATION est un sujet un peu plus avancé. Nous nous contenterons de préciser que MVS fournit une fonction d'autorisation appelée APF (Authorized Program Facility), permettant à un programme d'agir comme une extension du système d'exploitation MVS. Ces programmes sont appelés «Programmes Autorisés» et sont marqués comme candidats à l'octroi de ces privilèges spéciaux en les liant à un code d'autorisation différent de zéro. MVS effectue des vérifications supplémentaires avant d'accorder ce privilège, notamment en vérifiant que le module de chargement provient d'une bibliothèque APF, ce que nous n'aborderons pas maintenant.

MODULE HAS BEEN MARKED... quelques trucs. Vous vous souvenez de notre option LOCATION ? Eh bien, réentrant implique réutilisable, et LKED le précise simplement.

Qu'est-ce qu'un programme réentrant ? C'est un programme pouvant être exécuté par plusieurs tâches sans nécessiter de copie physique supplémentaire. MVS en fait tout un plat, car les techniques de programmation réentrante permettent à MVS (et aux programmes utilisateur) de fournir leurs services avec moins de surcharge. La définition la plus simple (bien que peu précise) est que les programmes réentrants ne modifient pas leur propre stockage. Nous laisserons la définition de «tâche» pour un autre jour.

Sortie IEFBR14

Voilà la sortie de l'éditeur de liens. Où est donc la sortie IEFBR14 ? Il n'y en a pas. Notre programme IEFBR14 n'a ouvert aucun ensemble de données, n'a écrit aucune sortie... rien.

Si vous jetez un oeil à la sortie de la tâche ci-dessous, vous verrez :

IEF142I IEFBR14 IEFBR14 - STEP WAS EXECUTED - COND CODE 0000

Cela signifie que notre programme IEFBR14 a généré un code de retour nul, ce qui signifie traditionnellement «tout s'est bien passé, aucune erreur».

Comment IEFBR14 a-t-il fourni ce code de retour à MVS ? Pour répondre à cette question, il nous faudra en savoir plus sur l'exécution du programme.

Sortie de la tâche MVS

L'exemple suivant présente l'intégralité de la sortie d'impression MVS générée par nos tâches d'assemblage, d'édition liée et d'exécution :

                                                    J E S 2   J O B   L O G


    05.11.01 JOB   12  $HASP373 IEFBR14  STARTED - INIT  1 - CLASS A - SYS BSP1
    05.11.01 JOB   12  IEF403I IEFBR14 - STARTED - TIME=05.11.01
    05.11.01 JOB   12  IEFBR14    ASMF                IFOX00    RC= 0000
    05.11.01 JOB   12  IEFBR14    LKED                IEWL      RC= 0000
    05.11.02 JOB   12  IEFBR14    IEFBR14             IEFBR14   RC= 0000
    05.11.02 JOB   12  IEF404I IEFBR14 - ENDED - TIME=05.11.02
    05.11.02 JOB   12  $HASP395 IEFBR14  ENDED


    ------ JES2 JOB STATISTICS ------


     26 APR 76 JOB EXECUTION DATE


            44 CARDS READ


           181 SYSOUT PRINT RECORDS


             0 SYSOUT PUNCH RECORDS


          0.01 MINUTES EXECUTION TIME
        1     //IEFBR14  JOB CLASS=A,MSGCLASS=A,RESTART=ASMF                          JOB   12
              ***--------------------------------------------------------------------
        2     //IEHPROGM EXEC PGM=IEHPROGM
        3     //SYSPRINT  DD SYSOUT=*
        4     //MVS3380   DD UNIT=3380,VOL=SER=MVS809,DISP=SHR
        5     //SYSIN     DD *
              ***--------------------------------------------------------------------
        6     //ALLOC    EXEC PGM=IEFBR14
        7     //LOAD      DD DSN=JMM.S370ASM.LOAD,
              //             UNIT=3380,VOL=SER=MVS809,
              //             SPACE=(CYL,(20,0,15)),
              //             DCB=(RECFM=U,BLKSIZE=32760),
              //             DISP=(,CATLG)
              ***--------------------------------------------------------------------
        8     //ASMF     EXEC PGM=IFOX00,REGION=2048K
        9     //SYSLIB    DD DSN=SYS1.AMODGEN,DISP=SHR
       10     //          DD DSN=SYS1.AMACLIB,DISP=SHR
       11     //SYSUT1    DD DISP=(NEW,DELETE),SPACE=(1700,(900,100)),UNIT=SYSDA
       12     //SYSUT2    DD DISP=(NEW,DELETE),SPACE=(1700,(600,100)),UNIT=SYSDA
       13     //SYSUT3    DD DISP=(NEW,DELETE),SPACE=(1700,(600,100)),UNIT=SYSDA
       14     //SYSPRINT  DD SYSOUT=*
       15     //SYSPUNCH  DD DSN=&&OBJ,UNIT=SYSDA,SPACE=(CYL,1),DISP=(,PASS)
       16     //SYSIN     DD *
              ***-------------------------------------------------------------------
       17     //LKED     EXEC PGM=IEWL,
              //             COND=(5,LT,ASMF),
              //             PARM='LIST,MAP,XREF,LET,NCAL,RENT'
       18     //SYSPRINT  DD SYSOUT=*
       19     //SYSLMOD   DD DSN=JMM.S370ASM.LOAD,DISP=SHR
              *** SLIB    DD DSN=SYS1.LINKLIB,DISP=SHR
       20     //SYSUT1    DD UNIT=SYSDA,SPACE=(TRK,(5,5))
       21     //SYSLIN    DD DSN=&&OBJ,DISP=(OLD,DELETE)
       22     //          DD *
              ***-------------------------------------------------------------------
       23     //IEFBR14  EXEC PGM=IEFBR14
       24     //STEPLIB   DD DSN=JMM.S370ASM.LOAD,DISP=SHR
              //
    IEF236I ALLOC. FOR IEFBR14 ASMF
    IEF237I 248  ALLOCATED TO SYSLIB
    IEF237I 248  ALLOCATED TO
    IEF237I 149  ALLOCATED TO SYSUT1
    IEF237I 14A  ALLOCATED TO SYSUT2
    IEF237I 190  ALLOCATED TO SYSUT3
    IEF237I JES2 ALLOCATED TO SYSPRINT
    IEF237I 14B  ALLOCATED TO SYSPUNCH
    IEF237I JES2 ALLOCATED TO SYSIN
    IEF142I IEFBR14 ASMF - STEP WAS EXECUTED - COND CODE 0000
    IEF285I   SYS1.AMODGEN                                 KEPT          *--------0
    IEF285I   VOL SER NOS= MVSDLB.
    IEF285I   SYS1.AMACLIB                                 KEPT          *--------0
    IEF285I   VOL SER NOS= MVSDLB.
    IEF285I   SYS76117.T051101.RA000.IEFBR14.R0000002      DELETED       *--------8
    IEF285I   VOL SER NOS= SMP001.
    IEF285I   SYS76117.T051101.RA000.IEFBR14.R0000003      DELETED       *--------7
    IEF285I   VOL SER NOS= SMP002.
    IEF285I   SYS76117.T051101.RA000.IEFBR14.R0000004      DELETED       *--------7
    IEF285I   VOL SER NOS= WORK03.
    IEF285I   JES2.JOB00012.SO0105                         SYSOUT
    IEF285I   SYS76117.T051101.RA000.IEFBR14.OBJ           PASSED        *--------3
    IEF285I   VOL SER NOS= SMP003.
    IEF285I   JES2.JOB00012.SI0102                         SYSIN
    IEF373I STEP /ASMF    / START 76117.0511
    IEF374I STEP /ASMF    / STOP  76117.0511 CPU    0MIN 00.31SEC SRB    0MIN 00.01SEC VIRT  2048K SYS   208K
    ************************************************************************************************************************************
    *     3. Jobstep of job: IEFBR14     Stepname: ASMF        Program name: IFOX00     Executed on 26.04.76 from 05.11.01 to 05.11.01 *
    *         elapsed time  00:00:00,50                      CPU-Identifier:  BSP1           Page-in:      0                           *
    *             CPU time  00:00:00,32               Virtual Storage used:   2048K         Page-out:      0                           *
    *           corr. CPU:  00:00:00,32   CPU time has been corrected by  1 / 1,0  multiplier                                          *
    *                                                                                                                                  *
    *     I/O Operation                                                                                                                *
    *     Number of records read via DD * or DD DATA:      4                                                                           *
    *     248.......0 248.......0 149.......8 14A.......7 190.......7 DMY.......0 14B.......3 DMY.......0                              *
    *                                                                                                                                  *
    *                                          Charge for step (w/o SYSOUT):          0,53                                             *
    ************************************************************************************************************************************
    IEF236I ALLOC. FOR IEFBR14 LKED
    IEF237I JES2 ALLOCATED TO SYSPRINT
    IEF237I 181  ALLOCATED TO SYSLMOD
    IEF237I 240  ALLOCATED TO SYS00031
    IEF237I 149  ALLOCATED TO SYSUT1
    IEF237I 14B  ALLOCATED TO SYSLIN
    IEF237I JES2 ALLOCATED TO
    IEF142I IEFBR14 LKED - STEP WAS EXECUTED - COND CODE 0000
    IEF285I   JES2.JOB00012.SO0106                         SYSOUT
    IEF285I   JMM.S370ASM.LOAD                             KEPT          *--------9
    IEF285I   VOL SER NOS= MVS809.
    IEF285I   SYS1.UCAT.TSO                                KEPT          *--------0
    IEF285I   VOL SER NOS= PUB000.
    IEF285I   SYS76117.T051101.RA000.IEFBR14.R0000005      DELETED       *--------0
    IEF285I   VOL SER NOS= SMP001.
    IEF285I   SYS76117.T051101.RA000.IEFBR14.OBJ           DELETED       *--------4
    IEF285I   VOL SER NOS= SMP003.
    IEF285I   JES2.JOB00012.SI0103                         SYSIN
    IEF373I STEP /LKED    / START 76117.0511
    IEF374I STEP /LKED    / STOP  76117.0511 CPU    0MIN 00.07SEC SRB    0MIN 00.01SEC VIRT   196K SYS   212K
    ************************************************************************************************************************************
    *     4. Jobstep of job: IEFBR14     Stepname: LKED        Program name: IEWL       Executed on 26.04.76 from 05.11.01 to 05.11.01 *
    *         elapsed time  00:00:00,18                      CPU-Identifier:  BSP1           Page-in:      0                           *
    *             CPU time  00:00:00,08               Virtual Storage used:    196K         Page-out:      0                           *
    *           corr. CPU:  00:00:00,08   CPU time has been corrected by  1 / 1,0  multiplier                                          *
    *                                                                                                                                  *
    *     I/O Operation                                                                                                                *
    *     Number of records read via DD * or DD DATA:      1                                                                           *
    *     DMY.......0 181.......9 240.......0 149.......0 14B.......4 DMY.......0                                                      *
    *                                                                                                                                  *
    *                                          Charge for step (w/o SYSOUT):          0,13                                             *
    ************************************************************************************************************************************
    IEF236I ALLOC. FOR IEFBR14 IEFBR14
    IEF237I 181  ALLOCATED TO STEPLIB
    IEF237I 240  ALLOCATED TO SYS00033
    IEF142I IEFBR14 IEFBR14 - STEP WAS EXECUTED - COND CODE 0000
    IEF285I   JMM.S370ASM.LOAD                             KEPT          *--------0
    IEF285I   VOL SER NOS= MVS809.
    IEF285I   SYS1.UCAT.TSO                                KEPT          *--------0
    IEF285I   VOL SER NOS= PUB000.
    IEF373I STEP /IEFBR14 / START 76117.0511
    IEF374I STEP /IEFBR14 / STOP  76117.0511 CPU    0MIN 00.01SEC SRB    0MIN 00.00SEC VIRT     8K SYS   192K
    ************************************************************************************************************************************
    *     5. Jobstep of job: IEFBR14     Stepname: IEFBR14     Program name: IEFBR14    Executed on 26.04.76 from 05.11.02 to 05.11.02 *
    *         elapsed time  00:00:00,09                      CPU-Identifier:  BSP1           Page-in:      0                           *
    *             CPU time  00:00:00,01               Virtual Storage used:      8K         Page-out:      0                           *
    *           corr. CPU:  00:00:00,01   CPU time has been corrected by  1 / 1,0  multiplier                                          *
    *                                                                                                                                  *
    *     I/O Operation                                                                                                                *
    *     Number of records read via DD * or DD DATA:      0                                                                           *
    *     181.......0 240.......0                                                                                                      *
    *                                                                                                                                  *
    *                                          Charge for step (w/o SYSOUT):          0,01                                             *
    ************************************************************************************************************************************
    IEF375I  JOB /IEFBR14 / START 76117.0511
    IEF376I  JOB /IEFBR14 / STOP  76117.0511 CPU    0MIN 00.39SEC SRB    0MIN 00.02SEC
                                                    EXTERNAL SYMBOL DICTIONARY                                      PAGE    1


    SYMBOL   TYPE  ID   ADDR  LENGTH LDID                                                            ASM 0201 05.11 04/26/76

    IEFBR14   SD  0001 000000 000004                                                                                                                PAGE    2


      LOC  OBJECT CODE    ADDR1 ADDR2  STMT   SOURCE STATEMENT                                       ASM 0201 05.11 04/26/76

    000000                                1 IEFBR14  CSECT ,
    000000 1FFF                           2          SLR   15,15
    000002 07FE                           3          BR    14
                                          4          END   ,                                                   ASSEMBLER DIAGNOSTICS AND STATISTICS                         PAGE    3


                                                                                                     ASM 0201 05.11 04/26/76

    NO STATEMENTS FLAGGED IN THIS ASSEMBLY
    HIGHEST SEVERITY WAS    0
    OPTIONS FOR THIS ASSEMBLY
      ALIGN, ALOGIC, BUFSIZE(STD), DECK, ESD, FLAG(0), LINECOUNT(55), LIST, NOMCALL, YFLAG, WORKSIZE(2097152)
      NOMLOGIC, NONUMBER, NOOBJECT, NORENT, RLD, NOSTMT, NOLIBMAC, NOTERMINAL, NOTEST, XREF(SHORT)
      SYSPARM()
    WORK FILE BUFFER SIZE/NUMBER =19066/ 1
    TOTAL RECORDS READ FROM SYSTEM INPUT          4
    TOTAL RECORDS READ FROM SYSTEM LIBRARY        0
    TOTAL RECORDS PUNCHED                         3
    TOTAL RECORDS PRINTED                        22

     F64-LEVEL LINKAGE EDITOR OPTIONS SPECIFIED LIST,MAP,XREF,LET,NCAL,RENT
              DEFAULT OPTION(S) USED -  SIZE=(165888,55296)
    IEW0000     NAME IEFBR14(R)



                                                    CROSS REFERENCE TABLE


      CONTROL SECTION                       ENTRY

        NAME    ORIGIN  LENGTH                NAME   LOCATION     NAME   LOCATION     NAME   LOCATION     NAME   LOCATION
      IEFBR14       00       4


     ENTRY ADDRESS       00

     TOTAL LENGTH         8
    ****IEFBR14   NOW REPLACED IN DATA SET
    AUTHORIZATION CODE IS         0.
    **MODULE HAS BEEN MARKED REENTERABLE, AND REUSABLE.


Dernière mise à jour : Mardi, le 6 décembre 2016