JRNE : Affichage de contenu de journal

Principes

Cette commande permet d'obtenir le détail du contenu d'un journal, affiche en clair le contenu des enregistrements, et rapproche leur contenu avant et après mise à jour. Elle utilise directement la commande RTVJRNE et est donc assez souple.

De nombreuses astuces sont mises en oeuvre, en particulier le contrôle d'invite.

Liste des sources

SourceTypeTexte et commentaires
JRNECMDAffichage de journal
Compiler avec PGM(JRNE1C) HLPPNLGRP(*LIBL/JRNE1H) HLPID(*CMD) PMTOPTCTL(JRNEINV)
JRNEHPNLGRPAide en ligne (compiler par option 14)
JRNE1CCLPProgramme lié à la commande
JRNEINVCLPProgramme de gestion d'invite
JRNE1RPGProgramme principal, fait tout le travail.
L'utilisation des API donne un programme compact pour ce qu'il fait. Il est auto documenté.
JRNE1FMDSPF Ecran associé au RPG.

JRNE : commande

             CMD        PROMPT('Affichage de Journal')

   /* compiler avec PGM(JRNE1C)   */

             PARM       KWD(JRN) TYPE(JRN) PROMPT('Journal')
             PARM       KWD(TYPE) TYPE(*CHAR) LEN(5) RSTD(*YES) +
                          DFT(*TIME) VALUES(*SEQ *TIME *TIMX) +
                          PROMPT('Type de sélection')
             PARM       KWD(DATE) TYPE(*DATE) DFT(*TODAY) +
                          SPCVAL((*TODAY 0000000)) PROMPT('Date début')
             PARM       KWD(TIME) TYPE(*TIME) DFT(*NOW) SPCVAL((*NOW +
                          000000)) PROMPT('Heure début')
             PARM       KWD(USRPRF) TYPE(*NAME) LEN(10) DFT(*ALL) +
                          SPCVAL((*CURRENT) (*ALL)) PROMPT('Profil +
                          utilisateur')

 JRN:        QUAL       TYPE(*NAME) LEN(10) 
             QUAL       TYPE(*NAME) LEN(10) +
                          SPCVAL((*LIBL) (*CURRENT) (*USRLIBL)) +
                          PROMPT('Bibliothèque')

JRNEH : panneau d'aide

:PNLGRP.

:HELP NAME='JRNE'.Affichage de journal.
:p.Cette commande est potentiellement équivalente à :pk.DSPJRN.:epk.
Elle est limitée aux informations enregistrement,
affiche le détail du contenu des fichiers et rapproche les
enregistrements avant et après modification.
:EHELP.

:HELP NAME='JRNE/JRN'.Journal. - Aide.
:XH2.Journal
:P.Saisir le nom du journal à afficher.
Le nom du journal à afficher peut être trouvé en utilisant
:pk.DSPFD:epk. sur l'un des fichiers gérés. Le plus souvent,
tous les fichiers utilisent le même journal.
:EHELP.
:HELP NAME='JRNE/TYPE'.Type d'analyse. - Aide.
:XH2.Type d'analyse
:P.Définit le type de lancement pour la commande
:pk.RCVJRNE:epk.:

:parml.
:pt.*SEQ :pd. accès par numéro de journal,
:pt.*TIME:pd. accès rapide par date et heure,
:pt.*TIMX:pd. accès détaillé par date et heure.
:eparml.


:EHELP.
:HELP NAME='JRNE/DATE'.Date. - Aide.
:XH2.Date
:P.Saisir une date,
ou :pk.*TODAY:epk. pour date du jour.
:EHELP.
:HELP NAME='JRNE/TIME'.Heure - Aide.
:XH2.Heure
:P.Saisir une heure,
ou :pk.*NOW:epk. pour l'heure courante
:EHELP.
:HELP NAME='JRNE/USRPRF'.Profil utilisateur - Aide.
:XH2.Profil utilisateur
:P.Saisir le nom d'un profil utilisateur,
ou :pk.*ALL:epk. pour ne pas faire de sélection sur ce critère.
:EHELP.

:EPNLGRP.

JRNEC : programme de controle

Les erreurs susceptibles de se produire sont renvoyées à la commande qui les gère de manière appropriée.

  /* --------------------------------------------------------*/
  /*  Affichage de postes de journal                         */
  /*                                                         */
  /*  *SEQ   Par numéro de séquence                          */
  /*  *TIME  Par heure                                       */
  /*  *TIMX  Par heure avec toutes options                   */
  /*                                                         */
  /* --------------------------------------------------------*/
             PGM  (&jrnlib &mode &date &time &usr)

             dcl   &jrnlib     *char  20
             dcl   &lib        *char  10
             dcl   &jrn        *char  10
             dcl  &mode *char 5

             DCL        &DATE     *CHAR     7
             DCL        &TIME     *CHAR     6
             DCL        &usr      *CHAR    10
             DCL        &QDATE    *CHAR     6
             DCL        &QTIME    *CHAR     6

             DCL   &ERR      *CHAR   1    VALUE('0')
             DCL   &MSGID    *CHAR   7
             DCL   &MSGF     *CHAR  10
             DCL   &MSGLIB   *CHAR  10
             DCL   &MSGDTA   *CHAR 256

             MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(ERREUR))

             chgvar   &jrn  %sst(&jrnlib   1   10)
             chgvar   &lib  %sst(&jrnlib  11   10)

             RTVSYSVAL  SYSVAL(QDATE) RTNVAR(&QDATE)
             RTVSYSVAL  SYSVAL(QTIME) RTNVAR(&QTIME)
             IF         COND(&DATE *NE '0000000') THEN(do)
             CVTDAT     DATE(&DATE) TOVAR(&QDATE) FROMFMT(*CYMD) +
                          TOSEP(*NONE)
             enddo
             IF         COND(&time *NE '000000') THEN(CHGVAR +
                          VAR(&QTIME) VALUE(&time))

             IF         COND(&USR = '*CURRENT') THEN(RTVJOBA +
                          USER(&USR))

             SNDPGMMSG  MSGID(CPF9897) MSGF(QCPFMSG) +
                          MSGDTA('JRNE' !> &lib !< '/' !! &jrn +
                          !> &mode !> &qdate !> &qtime !> &usr)


             IF         COND(&MODE *EQ '*TIME') THEN(GOTO +
                          CMDLBL(BYTIME))

             IF         COND(&MODE *EQ '*TIMX') THEN(GOTO +
                          CMDLBL(BYTIMX))

             RCVJRNE    ??JRN(&LIB/&JRN) EXITPGM(JRNE1) +
                          ??FROMENT(*FIRST) ??FROMTIME(*N) +
                          ?*ENTTYP(*RCD) DELAY(1 1)
             goto finok
  bytime:


             RCVJRNE    ??JRN(&LIB/&JRN) EXITPGM(JRNE1) +
                          ??FROMTIME(&QDATE &QTIME) ?*ENTTYP(*RCD) +
                          ??USRPRF(&USR) DELAY(1 1)
             goto finok
  bytimx:

             ?          RCVJRNE ??JRN(&LIB/&JRN) EXITPGM(JRNE1) +
                          ??FROMTIME(&QDATE &QTIME) ?*ENTTYP(*RCD) +
                          ??USRPRF(&USR) DELAY(1 1)
             goto finok
             /* L'écran peut ne pas se vider */
 finok:
            rclrsc
            goto finfin

 ERREUR:    IF (&ERR = '1')   GOTO FINFIN
            CHGVAR  &ERR '1'
             RCVMSG     MSGTYPE(*LAST) MSGDTA(&MSGDTA) MSGID(&MSGID) +
                          MSGF(&MSGF) MSGFLIB(&MSGLIB)
             SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGLIB/&MSGF) +
                          MSGDTA(&MSGDTA)  MSGTYPE(*ESCAPE)
 finfin:     ENDPGM

JRNE1 : programme principal

Ce programme est du RPG III.

Se référer à la commande FD, sur ce site, pour plus d'information. Consulter la documentation sur les API. Des adaptations intéressantes sont possibles.


     H*------------------------------------------------------------
     H* Affichage du détail d'un poste de journal
     H* Programme d'Escape d'un RTVJRNE,
     H* avec récup dynamique de dexcription de fichier
     H* et découpage des données
     H*------------------------------------------------------------
     FJRNE7FM CF  E                    WORKSTN
     F                                              KINFDS ECRDS
     F                                        C1RN  KSFILE F1S
     F                                        C2RN  KSFILE F2S
     E                    TZA         5  1               Alpha 5
     E                    RCD      1000  1   RC2     1   Record
     E                    NBA        15  1               Nombre alpha
     E                    NA1        15  1
     E                    NA2        16  1
     E                    VAL        80  1   VA2     1   Valeur affi
     E                    COP     1  10  2   COL    25   Descripteurs maj
     I*  Data structure to retrieve cursor location
     IECRDS       DS
     I                                    B 370 3710D1CURS
     I                                    B 378 3790D1RRN1
     I           SDS
     I                                        1  10 PGMNAM
     I                                      244 253 WS
     I                                      254 263 USER
     I            DS
     I                                        1  120TIMHR
     I                                        1   60H1TIME
     I                                        7  120H1DATE
     I* Traitement des champs numériques
     I            DS
     I                                        1  15 NBA
     I                                    P   9  150NBRP
     I                                        1  150NBRS
     I            DS
     I                                        1  15 NA1
     I                                        1  15 NA1A
     I            DS
     I                                        1  17 NBRAFF
     I                                        1  16 NA2
     I                                        1  16 NA2A
     I                                       17  17 SIGNE
     I* 1er paramètre info journal
     IJRNINF      DS
     I                                       15  15 JOTSX1
     I                                        6  150JOSEQN
     I                                       16  16 JOCODE
     I                                       17  18 JOENTT
     I                                       19  25 JODATE
     I                                       25  25 JOTSX2
     I                                       25  300JOTIME
     I                                       41  50 JOUSER
     I                                       57  66 JOPGM
     I                                       67  76 JOOBJ
     I                                       77  86 JOLIB
     I                                      125 125 JOFLAG
     I                                      1261125 RCD
     IJRNACT      DS
     I                                        1   1 JOACT1
     I                                        2   2 JOACT2
     I                                        3   3 JOACT3
     I*
     I            DS
     I                                        1  65 S2FVAL
     I                                        1  80 VAL
     I                                        1  32 S2A1
     I                                       34  65 S2A2
     I                                       32  32 S2DIF
     I                                        1  17 S2NB1
     I                                       41  57 S2NB2
     I* Libellés alpha longs
     I            DS
     I                                        1  65 S2FVA2
     I                                        1  80 VA2
     I* Erreurs d'appel API
     IERRCOD      DS
     I                                    B   1   40BYTPRO
     I                                    B   5   80BYTAVA
     I                                        9  15 EXCID
     I                                       16  16 RSRVD
     I* Compteurs binaires sur récup caractéristiques User Space
     I            DS
     I                                    B   1   40USLEN
     I                                    B   5   80USPOS
     I                                    B   9  120USSPSQ
     I                                    B  13  160SCSPN2
     I                                    B  17  200SCLEN
     I                                    B  21  240U2LEN
     I                                    B  25  280U2POS
     I                                    B  29  320U3LEN
     I                                    B  33  360U3POS
     I* Compteurs binaires sur caractéristiques récupérées
     I* Ces informations sont récupérées dans la portion fixe
     I* du User Space. La technique est standard pour tous les API
     I* utilisant une liste.
     IUSINFO      DS
     I                                    B   1   40USDEPL
     I                                    B   9  120USNBLS
     I                                    B  13  160USSZLS
     IU2INFO      DS
     I                                    B   1   40U2DEPL
     I                                    B   9  120U2NBLS
     I                                    B  13  160U2SZLS
     IU3INFO      DS
     I                                    B   1   40U3DEPL
     I                                    B   9  120U3NBLS
     I                                    B  13  160U3SZLS
     I* Infos QDBLDBR, Infos fichier, format DBLR0100  (Longueur 320)
     IWHINFO      DS
     I                                        1  10 WHRFI
     I                                       11  20 WHRLI
     I                                       21  30 WHREFI
     I                                       31  40 WHRELI
     I                                       41  41 WHTYPE
     I* Taille du User Space en binaire
     I            DS
     I                                    B   1   40USSIZ
     I* Binary values values for API
     I            DS
     I                                    B   1   40INFOLN
     I* User Space and Object information
     ID1INFO      DS
     I                                        9  18 D1OBJ
     I                                       19  28 D1LIB1
     I                                       29  38 D1TYPE
     I                                       39  48 D1LIBO
     I                                      101 150 D1TXT
     I                                      151 160 D1SRC
     I                                      161 170 D1LIB
     I                                      171 180 D1MBR
     I* L'information Format la plus simple ne contient que le format.
     ID2INFO      DS
     I                                        1  10 D2FMT
     I                                       33  82 D2TXT
     I*  Prefix D2
     I*
     I* Fields information. FLDL0100  is lengh 285
     ID3INFO      DS
     I                                        1  10 D3NAME
     I                                       11  11 D3TYP
     I                                       12  12 D3TYPE
     I                                    B  13  160D3POS
     I                                    B  21  240D3BYTS
     I                                    B  25  280D3DIGS
     I                                    B  29  320D3DECP
     I                                       33  82 D3TXT
     I                                      153 171 D3CH1
     I                                      173 191 D3CH2
     I                                      193 211 D3CH3
     I* Constantes User space
     I              'USPFFD1   QTEMP     'C         C1USP
     I              'FFDFMT              'C         C1ATR
     I              2000                  C         C1SIZ
     I              'USPFFD2   QTEMP     'C         C2USP
     I              'FFDFLD              'C         C2ATR
     I              10000                 C         C2SIZ
     I              '*ALL      '          C         C1AUT
     I              'Database Relations  'C         C1TXT
     I              14                    C         C1LINS
     C*------------------------------------------------------------------------
     C* Paramètres d'appel commande
     C           *ENTRY    PLIST
     C                     PARM           JRNINF           User
     C                     PARM           JRNACT           Action
     C* Traitement de première fois
     C           *IN01     IFEQ '0'
     C                     Z-ADD0         APPSEQ  30
     C                     Z-ADD0         S1LINS  30
     C                     EXSR INI00
     C                     SETON                     01
     C                     ELSE
     C                     ADD  1         APPSEQ
     C                     ENDIF
     C*------------------------------------------------------------------------
     C* Interprétation des codes action
     C*   JOACT1  '0' Pas d'entrée
     C*           '1' Une ligne en entrée
     C*           '2' Un blec d'enregistrements en entrée
     C*           '3' Aucune entrée, changement de récepteur
     C*           '4' journal inactif
     C*           '8' Sortie: passer en mode bloc.
     C*           '9' Sortie: arrêter le balayage
     C*
     C*  JOACT2   'Y'=Il y a une suite   'N'=Fin de liste
     C*
     C           JOACT1    IFEQ '1'                        1 poste reçu
     C           JOACT1    OREQ '2'                        bloc reçu
     C                     MOVE '1'       RCVOK   1        Poste reçu
     C                     ELSE
     C                     MOVE '0'       RCVOK
     C                     END
     C* Limiter les plantages
     C           JOTSX1    IFLT '0'
     C           JOTSX1    ORGT '9'
     C                     Z-ADD0         JOSEQN
     C                     ENDIF
     C           JOTSX2    IFLT '0'
     C           JOTSX2    ORGT '9'
     C                     Z-ADD0         JOTIME
     C                     ENDIF
     C* Le programme doit être appelé plusieurs fois
     C* avant qu'un écran ne soit rempli.
     C                     MOVE ' '       S1SEL
     C                     MOVE JOCODE    S1CODE
     C                     MOVE JOUSER    S1USER
     C                     MOVE JOPGM     S1PGM
     C                     MOVE JOSEQN    S1SEQN
     C                     MOVE JOACT1    S1ACT1
     C                     MOVE JOACT2    S1ACT2
     C                     MOVE JOACT3    S1ACT3
     C                     MOVE JOLIB     S1LIB
     C                     MOVE JOOBJ     S1OBJ
     C                     MOVE JOENTT    S1ENTT
     C                     MOVE JOTIME    S1TIME
     C                     MOVEARCD       S1RCD
     C                     ADD  1         S1LINS
     C                     ADD  1         C1TRN   50
     C                     MOVE '0'       C1END   1
     C                     Z-ADDC1TRN     C1RN    50       Records
     C                     WRITEF1S
     C                     Z-ADDC1TRN     RNB1
     C* On retourne si le remplissage n'est pas complet
     C           S1LINS    IFLT C1LINS                     Ecran non plein
     C           RCVOK     ANDEQ'1'                        Pas de problème
     C           JOACT2    ANDEQ'Y'                        Reste à lire
     C                     RETRN
     C                     ENDIF
     C* First display : list form the beginning
     C                     Z-ADD12        C1SIZE  50
     C                     MOVE 01        ECRAN   20
     C                     MOVE *ALL'0'   CLRIND 29
     C                     MOVE '0'       ERREUR  1
     C                     CALL 'SFLCLR'
     C* Display Loop
  1{ C           ECRAN     DOWNE99
     C                     TIME           TIMHR
 2<--C           ECRAN     CASEQ01        TRT01
 2<--C           ECRAN     CASEQ02        TRT02
  2} C                     ENDCS
  1} C                     ENDDO
     C* Appels successifs par RCVJRNE sans nettoyage
     C                     RETRN
     C*======================================================================
 2---C           TRT01     BEGSR
     C* Use default positioning when error
  1{ C           ERREUR    IFEQ '1'
     C                     Z-ADD0         C1LIN
     C                     Z-ADD0         C1COL
  1} C                     END
     C* Display screen
     C                     WRITEF1
     C                     WRITEMSGC                       Messages
     C                     SETON                     33
  1{ C           C1TRN     IFNE 0
     C                     SETON                     32
  1| C                     ELSE
     C                     SETOF                     32
  1} C                     END
     C                     MOVE C1END     *IN35
     C                     WRITEF1C
     C                     READ F1C                      97
     C                     READ F1                       97
     C                     Z-ADDD1RRN1    C1TOP   50       Top of screen
     C                     Z-ADDC1TOP     RNB1             Sflrcdnbr
     C           D1CURS    DIV  256       C1LIN
     C                     MVR            C1COL
     C* Clear error fields
     C                     MOVEACLRIND    *IN,40
     C                     CALL 'SFLCLR'
     C                     MOVE '0'       ERREUR  1
     C* F3 or F12 to exit program
  1{ C                     SELEC
  1| C           *IN03     WHEQ '1'
     C                     Z-ADD99        ECRAN
     C                     MOVE '03'      P1CRET  2
     C                     MOVE '9'       JOACT1
     C                     SETON                     LR
  1| C           *IN12     WHEQ '1'
     C                     Z-ADD99        ECRAN
     C                     MOVE '12'      P1CRET
     C                     MOVE '9'       JOACT1
     C* Rollup: retour au RCVJRNE pour boucler à nouveau
  1| C           *IN25     WHEQ '1'
     C                     Z-ADD99        ECRAN
     C                     Z-ADD0         S1LINS  30
     C* Sinon, recherche des sélections
     C                     OTHER
     C                     EXSR CTR01
     C                     ENDSL
     C*
     C                     ENDSR
     C*======================================================================
 1---C           CTR01     BEGSR
     C* Affichage du détail pour lignes sélectionnées
     C                     DO   *HIVAL
     C                     READCF1S                      97
     C   97                LEAVE
     C           S1SEL     IFEQ '5'
     C                     Z-ADD02        ECRAN
     C                     MOVE ' '       S1SEL
     C                     MOVE S2DIFF    *IN41
     C                     UPDATF1S
     C                     EXSR SET02
     C                     LEAVE
     C                     ELSE
     C                     MOVE ' '       S1SEL
     C                     MOVE S2DIFF    *IN41
     C                     UPDATF1S
     C                     ENDIF
     C                     ENDDO
     C*
     C                     ENDSR
     C*======================================================================
 1---C           SET02     BEGSR
     C* Zones fixes de l'écran
     C                     MOVE S1CODE    F2CODE
     C                     MOVE S1SEQN    F2SEQN
     C                     MOVE S1ACT1    F2ACT1
     C                     MOVE S1ACT2    F2ACT2
     C                     MOVE S1ACT3    F2ACT3
     C                     MOVE S1LIB     F2LIB
     C                     MOVE S1OBJ     F2OBJ
     C                     MOVE S1ENTT    F2ENT1
     C                     MOVE S1TIME    F2TIME
     C                     MOVE *BLANK    F2ENT2
     C                     MOVE *BLANK    L2ENT2
     C                     MOVEAS1RCD     RCD
     C* Accès au suivant sur état avant modif, avec vérif fichier
     C                     MOVE '0'       F2MAJ   1
     C           S1ENTT    IFEQ 'UB'
     C           S1ENTT    OREQ 'BR'
     C           C1RN      ANDLTC1TRN
     C                     ADD  1         C1RN
     C           C1RN      CHAINF1S                  97
     C           *IN97     IFEQ '0'
     C           F2OBJ     ANDEQS1OBJ
     C                     MOVE '1'       F2MAJ   1
     C                     MOVEAS1RCD     RC2
     C                     MOVE S1ENTT    F2ENT2
     C                     MOVE ' '       S1SEL
     C                     UPDATF1S
     C                     ENDIF
     C                     ENDIF
     C* Clear Subfile
     C                     MOVE '0'       S2CHGD  1
     C                     SETOF                     3233
     C                     SETON                     34
     C                     WRITEF2C
     C                     SETOF                     34
     C                     Z-ADD0         C2TRN   50
     C* Remplissage
     C                     EXSR INIFD
     C*
     C                     MOVE '1'       C2END   1
     C                     Z-ADD1         RNB2
     C*
     C                     ENDSR
     C*======================================================================
 2---C           TRT02     BEGSR
     C* Use default positioning when error
  1{ C           ERREUR    IFEQ '1'
     C                     Z-ADD0         C2LIN
     C                     Z-ADD0         C2COL
  1} C                     END
     C* Display screen to select instrument
     C                     WRITEF2
     C                     WRITEMSGC                       Messages
     C                     SETON                     33
  1{ C           C2TRN     IFNE 0
     C                     SETON                     32
  1| C                     ELSE
     C                     SETOF                     32
  1} C                     END
     C                     MOVE C2END     *IN35
     C                     WRITEF2C
     C                     READ F2C                      97
     C                     READ F2                       97
     C                     Z-ADDD1RRN1    C2TOP   50       Top of screen
     C                     Z-ADDC2TOP     RNB2             Sflrcdnbr
     C           D1CURS    DIV  256       C2LIN
     C                     MVR            C2COL
     C* Clear error fields
     C                     MOVEACLRIND    *IN,40
     C                     CALL 'SFLCLR'
     C                     MOVE '0'       ERREUR  1
     C* F3 or F12 to exit program
  1{ C                     SELEC
  1| C           *IN03     WHEQ '1'
     C                     Z-ADD99        ECRAN
     C                     MOVE '03'      P1CRET  2
     C                     MOVE '9'       JOACT1
     C                     SETON                     LR
  1| C           *IN12     WHEQ '1'
     C                     Z-ADD99        ECRAN
     C                     MOVE '12'      P1CRET
     C                     OTHER
     C                     Z-ADD01        ECRAN
     C                     EXSR CTR01
     C                     ENDSL
     C*
     C                     ENDSR
     C*======================================================================
 5---C           INI00     BEGSR
     C* Vérification de présence du Userspace Format
     C                     MOVE '       ' EXCID
     C*
     C                     CALL 'QUSROBJD'
     C                     PARM           D1INFO
     C                     PARM 180       INFOLN
     C                     PARM 'OBJD0200'FORMAT  8
     C                     PARM C1USP     OBJLIB 20
     C                     PARM '*USRSPC' OBJTYP 10
     C                     PARM           ERRCOD
     C* ... Création si absent
  1{ C           EXCID     IFNE '       '
     C                     Z-ADDC1SIZ     USSIZ
     C                     CALL 'QUSCRTUS'                 API
     C                     PARM C1USP     USP1   20        Nom qualifié
     C                     PARM C1ATR     USATR  10        Attribut
     C                     PARM           USSIZ            Taille en binaire
     C                     PARM ' '       USINI   1        Remplissage
     C                     PARM C1AUT     USAUT  10        Droits
     C                     PARM C1TXT     USTXT  50        Description
  1} C                     ENDIF
     C* Vérification de présence du Userspace Zones
     C                     MOVE '       ' EXCID
     C*
     C                     CALL 'QUSROBJD'
     C                     PARM           D1INFO
     C                     PARM 180       INFOLN
     C                     PARM 'OBJD0200'FORMAT  8
     C                     PARM C2USP     OBJLIB 20
     C                     PARM '*USRSPC' OBJTYP 10
     C                     PARM           ERRCOD
     C* ... Création si absent
  1{ C           EXCID     IFNE '       '
     C                     Z-ADDC2SIZ     USSIZ
     C                     CALL 'QUSCRTUS'                 API
     C                     PARM C2USP     USP2   20        Nom qualifié
     C                     PARM C2ATR     USATR  10        Attribut
     C                     PARM           USSIZ            Taille en binaire
     C                     PARM ' '       USINI   1        Remplissage
     C                     PARM C1AUT     USAUT  10        Droits
     C                     PARM C1TXT     USTXT  50        Description
  1} C                     ENDIF
     C*
     C                     ENDSR
     C*======================================================================
 5---C           INIFD     BEGSR
     C* Code de mise à jour
     C                     Z-ADD1         I1      50
     C           F2ENT1    LOKUPCOP,I1                   97
     C  N97                Z-ADD10        I1
     C                     MOVE COL,I1    L2ENT1
     C           F2ENT2    IFNE '  '
     C           F2ENT2    LOKUPCOP,I1                   97
     C  N97                Z-ADD10        I1
     C                     MOVE COL,I1    L2ENT2
     C                     ENDIF
     C*
 2<--C                     EXSR GETFIL                     Infos fichier
     C                     EXSR GETFMT
     C* Boucle sur les champs du format
     C*---------------------------
  2{ C                     DO   U3NBLS    N3      50       Pour chaque champ
     C*---------------------------
     C           N3        IFGT 100
     C                     LEAVE
     C                     ENDIF
     C                     MOVE '0'       S2DIFF
 4<--C                     EXSR GETFLD
     C                     EXSR TRTFLD
     C                     MOVE D3NAME    S2FLDN
     C                     ADD  1         C2TRN
     C                     Z-ADDC2TRN     C2RN    50       Records
     C* Deux lignes à écrire en cas de libellé long
     C           F2MAJ     IFEQ '1'
     C           F2TYPF    ANDEQ'B'
     C           S2FVAL    IFEQ S2FVA2
     C                     MOVE '='       S2FLDN
     C                     ELSE
     C                     MOVE '1'       S2DIFF
     C                     MOVE S2DIFF    *IN41
     C                     WRITEF2S
     C                     MOVE '*'       S2FLDN
     C                     MOVE S2FVA2    S2FVAL
     C                     ADD  1         C2TRN
     C                     Z-ADDC2TRN     C2RN    50       Records
     C                     ENDIF
     C                     ENDIF
     C                     MOVE S2DIFF    *IN41
     C                     WRITEF2S
     C*---------------------------
  2} C                     ENDDO
     C*---------------------------
     C*
     C                     ENDSR
     C*====================================================================
 2---C           TRTFLD    BEGSR
     C*
     C                     MOVE *BLANK    S2FVAL
     C* Si packé ou numérique, traiter comme num
     C           D3TYP     IFEQ 'P'
     C           D3TYP     OREQ 'S'
     C                     MOVE 'N'       F2TYPF  1        Numérique
     C                     MOVE '1'       F2TOUR  1        1er passage
     C                     EXSR TRTNUM
     C                     MOVELNA2A      S2NB1
     C           F2MAJ     IFEQ '1'
     C                     MOVE '2'       F2TOUR           2eme passage
     C                     EXSR TRTNUM
     C                     MOVELNA2A      S2NB2
     C           S2NB1     IFEQ S2NB2
     C                     MOVE '='       S2DIF
     C                     ELSE
     C                     MOVE '1'       S2DIFF
     C                     MOVE '*'       S2DIF
     C                     ENDIF
     C                     ENDIF
     C                     ELSE
     C* Copie du nombre de caractères nécessaires
     C           D3BYTS    IFLE 32
     C                     MOVE 'A'       F2TYPF
     C                     ELSE
     C                     MOVE 'B'       F2TYPF
     C                     ENDIF
     C                     MOVE *BLANK    VAL
     C                     MOVE *BLANK    VA2
     C                     Z-ADDD3POS     J1      50
     C           1         DO   D3BYTS    J2      50
     C           J2        IFGT 80
     C                     LEAVE
     C                     ENDIF
     C                     MOVE RCD,J1    VAL,J2
     C                     MOVE RC2,J1    VA2,J2
     C                     ADD  1         J1
     C                     ENDDO
     C* Report du second libellé en mise à jour
     C           F2MAJ     IFEQ '1'
     C           F2TYPF    IFEQ 'A'
     C                     MOVEAVA2       S2A2
     C           S2A1      IFEQ S2A2
     C                     MOVE '='       S2DIF
     C                     ELSE
     C                     MOVE '1'       S2DIFF
     C                     MOVE '*'       S2DIF
     C                     ENDIF
     C                     ENDIF
     C                     ENDIF
     C*
     C                     ENDIF
     C*
     C                     ENDSR
     C*====================================================================
 2---C           TRTNUM    BEGSR
     C* Deux passages: un pour 1er et un pour second
     C           D3TYP     IFEQ 'P'
     C                     Z-ADD0         NBRP
     C                     ELSE
     C                     Z-ADD0         NBRS
     C                     ENDIF
     C*
     C                     Z-ADDD3POS     J1
     C           16        SUB  D3BYTS    J2
     C           J2        DOWLE15
     C           F2TOUR    IFEQ '1'
     C                     MOVE RCD,J1    NBA,J2
     C                     ELSE
     C                     MOVE RC2,J1    NBA,J2
     C                     ENDIF
     C                     ADD  1         J1
     C                     ADD  1         J2
     C                     ENDDO
     C* Packé
     C           D3TYP     IFEQ 'P'
     C           NBRP      IFLT 0
     C                     MOVE '-'       SIGNE
     C                     Z-SUBNBRP      NBRP
     C                     ELSE
     C                     MOVE ' '       SIGNE
     C                     END
     C                     MOVE NBRP      NA1A
     C* Etendu
     C                     ELSE
     C           NBRS      IFLT 0
     C                     MOVE '-'       SIGNE
     C                     Z-SUBNBRS      NBRS
     C                     ELSE
     C                     MOVE ' '       SIGNE
     C                     END
     C                     MOVE NBRS      NA2A
     C                     ENDIF
     C*
     C* Ecrire la virgule après...
     C           15        SUB  D3DECP    VAPRES  20
     C* Début copie avec et sans virgule
     C           D3DECP    IFEQ 0
     C                     Z-ADD2         J2
     C                     ELSE
     C                     Z-ADD1         J2
     C                     END
     C*
     C                     MOVE *BLANK    NA2A
     C                     MOVE '1'       TOUT0   1
     C* Ecriture chiffre par chiffre
     C                     DO   15        J1
     C           NA1,J1    IFNE '0'
     C           NA1,J1    ANDNE' '
     C                     MOVE '0'       TOUT0
     C                     ENDIF
     C           J1        IFEQ VAPRES
     C                     MOVE '0'       TOUT0
     C                     ENDIF
     C           TOUT0     IFEQ '0'
     C                     MOVE NA1,J1    NA2,J2
     C                     ENDIF
     C                     ADD  1         J2
     C           J1        IFEQ VAPRES
     C           J2        ANDLE15
     C                     MOVE ','       NA2,J2
     C                     ADD  1         J2
     C                     ENDIF
     C*
     C                     ENDDO
     C*
     C                     ENDSR
     C*====================================================================
 2---C           GETFIL    BEGSR
     C* Description du fichier
     C                     MOVE F2OBJ     P0FILE 10
     C                     MOVE F2LIB     P0LIB  10
     C           P0FILE    CAT  P0LIB     P1FILQ 20
     C*
     C                     MOVE '       ' EXCID
     C*
     C                     CALL 'QUSROBJD'
     C                     PARM           D1INFO
     C                     PARM 180       INFOLN
     C                     PARM 'OBJD0200'FORMAT  8
     C                     PARM P1FILQ    OBJLIB 20
     C                     PARM '*FILE  ' OBJTYP 10
     C                     PARM           ERRCOD
     C*
     C                     MOVE D1LIBO    H1LIB  10
     C                     MOVE D1TXT     H1TXT  50
     C*   Info en cas de problème
  1{ C           EXCID     IFNE ' '
     C           EXCID     CAT  P1FILQ:1  H1TXT
  1} C                     ENDIF
     C* Description des formats du fichier
     C                     CALL 'QUSLRCD'
     C                     PARM C1USP     USP1
     C                     PARM 'RCDL0200'FORMAT  8
     C                     PARM P1FILQ    OBJLIB 20
     C                     PARM '0'       FILOVR  1
     C                     PARM           ERRCOD
     C* Recupération du formatage de la liste en début de userspace
     C                     CALL 'QUSRTVUS'
     C                     PARM C1USP     USP1             User Space
     C                     PARM 125       USPOS            Position
     C                     PARM 16        USLEN            Longueur
     C                     PARM           U2INFO           DS infos User Space
     C* Préparation des pointeurs pour récup de la liste
     C           1         ADD  U2DEPL    U2POS            Depuis
     C** $$ 10 est pris    Z-ADDU2SZLS    U2LEN            Taille poste liste
     C*                               Si U2LEN ne fait pas 10, problèmes
     C                     ENDSR
     C*====================================================================
 3---C           GETFMT    BEGSR
     C* Récupération du nom de format et de la liste des zones
     C*
     C* Nom du format dans user space format, nom + texte
     C                     CALL 'QUSRTVUS'
     C                     PARM C1USP     USP1             User Space
     C                     PARM U2POS     USPOS            Position
     C                     PARM 82        USLEN            Longueur
     C                     PARM           D2INFO           DS infos Format
  1{ C           D2TXT     IFEQ *BLANK
     C                     MOVELH1TXT     D2TXT     P
  1} C                     ENDIF
     C* Positionnement sur le format suivant dans le User Space.
     C                     ADD  U2SZLS    U2POS
     C* Récupération de la liste des champs du format
     C                     CALL 'QUSLFLD'
     C                     PARM C2USP     USP2             Destination Info
     C                     PARM 'FLDL0100'FORMAT  8        Format récupéré
     C                     PARM P1FILQ    OBJLIB 20        Fichier / Bib
     C                     PARM D2FMT     W2FMT  10        Format
     C                     PARM '0'       FILOVR  1        Pas d'override
     C                     PARM           ERRCOD           En cas d'erreur.
     C* Recupération du formatage de la liste des champs
     C                     CALL 'QUSRTVUS'
     C                     PARM C2USP     USP2             User Space
     C                     PARM 125       USPOS            Position
     C                     PARM 16        USLEN            Longueur
     C                     PARM           U3INFO           DS infos User Space
     C* Préparation des pointeurs pour récup du premier champ
     C           1         ADD  U3DEPL    U3POS            Depuis
     C**                   Z-ADDU3SZLS    U3LEN            Taille poste liste
     C*
     C                     ENDSR
     C*====================================================================
 4---C           GETFLD    BEGSR
     C* Récupération des infos concernant un champ
     C                     CALL 'QUSRTVUS'
     C                     PARM C2USP     USP2             User Space
     C                     PARM U3POS     USPOS            Position
     C                     PARM 211       USLEN            Longueur DS
     C                     PARM           D3INFO           DS infos Champs
     C* Positionnement sur le champ suivant
     C                     ADD  U3SZLS    U3POS
     C*
     C                     ENDSR
     C*====================================================================
** COP / COL Codes Opération
BRAvant Rollback                                     1
DLSupprimé                                           2
DRSupprimé pour Rollback                             3
PTAjouté                                             4
PXAjouté par rang                                    5
UBAvant Mise à jour                                  6
UPAprès mise à jour                                  7
URAprès MàJ Rollback                                 8
?? .............                                     9
??Indéterminé                                       10

JRNE1FM : écran d'affichage

Cet écran simple est rattaché au programme JRNE1FM.

     A                                      DSPSIZ(24 80 *DS3)
     A                                      PRINT
     A                                      INDARA
     A                                      CF03(03)
     A                                      CF12(12)
     A* Standard Message subfile
     A          R MSGS                      SFL
     A                                      SFLMSGRCD(24)
     A            MSGKEY                    SFLMSGKEY
     A            PGMNAM                    SFLPGMQ
     A*
     A          R MSGC                      SFLCTL(MSGS)
     A                                      SFLSIZ(2)
     A                                      SFLPAG(1)
     A                                      OVERLAY
     A                                      SFLDSP
     A                                      SFLDSPCTL
     A                                      SFLINZ
     A N34                                  SFLEND
     A            PGMNAM                    SFLPGMQ
     A*
     A          R F1
     A*
     A                                  1  6'JRNE1'
     A                                      COLOR(BLU)
     A            APPSEQ         3S 0O  1 13COLOR(BLU)
     A                                  1 20'Affichage d''un journal'
     A                                      DSPATR(HI)
     A                                  1 69DATE
     A                                      EDTCDE(Y)
     A                                      COLOR(BLU)
     A                                  3  3'5=Détail'
     A                                      COLOR(BLU)
     A                                  5  2'Sel'
     A                                      DSPATR(HI)
     A                                  5 10'Séquence'
     A                                      DSPATR(HI)
     A                                  5 19'Poste'
     A                                      DSPATR(HI)
     A                                  5 25'Biblio.'
     A                                      DSPATR(HI)
     A                                  5 36'Fichier'
     A                                      DSPATR(HI)
     A                                  5 47'Act'
     A                                      DSPATR(HI)
     A                                  5 53'Heure'
     A                                      DSPATR(HI)
     A                                  5 59'User'
     A                                      DSPATR(HI)
     A                                  5 70'Pgm'
     A                                      DSPATR(HI)
     A          R F1S                       SFL
     A*
     A  39                                  SFLNXTCHG
     A            S1RCD       1000A  H
     A            S1SEL          1A  B  6  3
     A            S1CODE         1A  O  6  6
     A            S1SEQN        10Y 0O  6  8EDTCDE(4)
     A            S1ACT1         1A  O  6 19
     A            S1ACT2         1A  O  6 21
     A            S1ACT3         1A  O  6 23
     A            S1LIB         10A  O  6 25
     A            S1OBJ         10A  O  6 36
     A            S1ENTT         2A  O  6 47
     A            S1TIME         6Y 0O  6 50EDTWRD('  :  :  ')
     A            S1USER        10   O  6 59
     A            S1PGM         10   O  6 70
     A          R F1C                       SFLCTL(F1S)
     A*
     A                                      SFLSIZ(0015)
     A                                      SFLPAG(0014)
     A N35                                  ROLLUP(25)
     A                                      BLINK
     A                                      CSRLOC(C1LIN      C1COL)
     A                                      OVERLAY
     A  32                                  SFLDSP
     A  33                                  SFLDSPCTL
     A  34                                  SFLCLR
     A  35                                  SFLEND(*MORE)
     A            RNB1           4S 0H      SFLRCDNBR
     A            C1LIN          3S 0H
     A            C1COL          3S 0H
     A                                 22  4'F3=Exit'
     A                                      COLOR(BLU)
     A                                 22 30'F12=Retour'
     A                                      COLOR(BLU)
     A          R F2
     A*
     A                                  1  6'JRNE1'
     A                                      COLOR(BLU)
     A            APPSEQ         3S 0O  1 13COLOR(BLU)
     A                                  1 20'Détail poste de journal'
     A                                      DSPATR(HI)
     A            F2CODE         1A  O  1 47COLOR(BLU)
     A            F2SEQN        10S 0O  1 49COLOR(BLU)
     A            F2ACT1         1A  O  1 60COLOR(BLU)
     A            F2ACT2         1A  O  1 62COLOR(BLU)
     A            F2ACT3         1A  O  1 64COLOR(BLU)
     A                                  1 69DATE
     A                                      EDTCDE(Y)
     A                                      COLOR(BLU)
     A            F2LIB         10A  O  2  6
     A            F2OBJ         10A  O  2 20DSPATR(HI)
     A            F2TIME         6Y 0O  2 69EDTWRD('  :  :  ')
     A            F2ENT1         2A  O  4 14COLOR(BLU)
     A            L2ENT1        25A  O  4 17COLOR(BLU)
     A            F2ENT2         2A  O  4 45COLOR(BLU)
     A            L2ENT2        25A  O  4 48COLOR(BLU)
     A                                  5  3'Champ'
     A                                      DSPATR(HI)
     A                                  5 14'Valeur'
     A                                      DSPATR(HI)
     A                                  5 23'Nombre>'
     A                                      DSPATR(HI)
     A          R F2S                       SFL
     A*
     A  39                                  SFLNXTCHG
     A            S2DIFF         1A  H
     A            S2FLDN        10A  O  6  3
     A  41                                  DSPATR(HI)
     A            S2FVAL        65A  O  6 14
     A  41                                  DSPATR(HI)
     A          R F2C                       SFLCTL(F2S)
     A*
     A N35                                  ROLLUP(25)
     A                                      BLINK
     A                                      CSRLOC(C2LIN      C2COL)
     A                                      OVERLAY
     A  32                                  SFLDSP
     A  33                                  SFLDSPCTL
     A  34                                  SFLCLR
     A  35                                  SFLEND(*MORE)
     A                                      SFLSIZ(0015)
     A                                      SFLPAG(0014)
     A            RNB2           4S 0H      SFLRCDNBR
     A            C2LIN          3S 0H
     A            C2COL          3S 0H
     A                                 22  4'F3=Exit'
     A                                      COLOR(BLU)
     A                                 22 30'F12=Retour'
     A                                      COLOR(BLU)

Patrick Larreya, Mars 2002.