Sous-fichiers en RPG

BoTTom |    Changer de couleur
                            SOUS-FICHIERS.                          
 
 Il s'agit d'un fichier en mémoire associé à un fichier écran :
 
   le pgm charge (remplit complètement) le fichier temporaire.
 
   le système affiche un extrait des lignes du sous-fichier (une page)
     et gère les défilement avant/arrière.
 
      ____________
     <____________>                  -----------------
     | 1  clou    |                  ! les articles  !
     | 2  vis     |                  !               !
     | 3  marteau |                  !  1   clou     !
     | 4  pinces  |                  !  2   vis      !
     | 5  pelle   |                  !      A suivre !
  !->| 6  pioche  |                  !---------------!
  !  | 7  truelle |                 /               /
  !  |____________|                /---------------/
  !
                                      format de contrôle (affichage)
  format d'enregistrement (mémoire)


|    Changer de couleur
                UTILISATION DES SOUS-FICHIERS DANS UN PROGAMME GAP. 
 
  DEFINITION DU SOUS-FICHIER. 
 
  Rappel de la définition SDD du DSPF
 
     A          R FE                        SFL
     A            ZON1      R        O  5  4
     A            ZON2      R        O  5 12
     A            ZON3      R        O  5 25
     A            ZON4      R        O  5 50
      *
      *
     A          R FC                        SFLCTL(FE)
     A                                      SFLSIZ(0016)
     A                                      SFLPAG(0015)
     A  30                                  SFLDSP
     A  30                                  SFLDSPCTL
     A N30                                  SFLCRL
     A  30                                  SFLEND
     A                                  4  5'ENTETE DU SOUS-FICHIER'
     A                                      DSPATR(UL)


|    Changer de couleur
                UTILISATION DES SOUS-FICHIERS DANS UN PROGAMME GAP. 
 
  DEFINITION DU SOUS-FICHIER. 
 
                   !--------------------------- ########################### 
                   v                            # Format d'enregistrement # 
     A          R FE                        SFL # Définit une ligne du    # 
     A            ZON1      R        O  5  4    # sous-fichier(elles sont # 
     A            ZON2      R        O  5 12    # toutes identiques),les  # 
     A            ZON3      R        O  5 25    # n° de colonnes et la    # 
     A            ZON4      R        O  5 50    # première ligne          # 
      *                                         #                         # 
      *                                         ########################### 
     A          R FC                        SFLCTL(FE)
     A                                      SFLSIZ(0016)
     A                                      SFLPAG(0015)
     A  30                                  SFLDSP
     A  30                                  SFLDSPCTL
     A N30                                  SFLCRL
     A  30                                  SFLEND
     A                                  4  5'ENTETE DU SOUS-FICHIER'
     A                                      DSPATR(UL)


|    Changer de couleur
                UTILISATION DES SOUS-FICHIERS DANS UN PROGAMME GAP. 
 
  DEFINITION DU SOUS-FICHIER. 
 
 
          ########################################################### 
     A    #               Format de contrôle                        # 
     A    #                                                         # 
     A    # Défini les caractéristiques du sous-fichier. (1)        # 
     A    #  peut contenir des zones sans recouvrir le sous fic.(2) # 
     A    #                                                         # 
      *   ########################################################### 
      *
     A          R FC                        SFLCTL(FE) <----(1)
     A                                      SFLSIZ(0016)
     A                                      SFLPAG(0015)
     A  30                                  SFLDSP
     A  30                                  SFLDSPCTL
     A N30                                  SFLCRL
     A  30                                  SFLEND
     A                                  4  5'ENTETE DU SOUS-FICHIER' <---(2)
     A                                      DSPATR(UL)


|    Changer de couleur
                UTILISATION DES SOUS-FICHIERS DANS UN PROGAMME GAP. 
 
  DEFINITION DU SOUS-FICHIER. 
 
 
          ########################################################### 
     A    #               Format de contrôle                        # 
     A    #                                                         # 
     A    # SFLSIZ nb initial d'enregistrements.                    # 
     A    # SFLPAG nb d'enregistrements par page.                   # 
     A    #                                                         # 
      *   ########################################################### 
      *
     A          R FC                        SFLCTL(FE)
     A                                      SFLSIZ(0016) <---- 
     A                                      SFLPAG(0015) <---- 
     A  30                                  SFLDSP
     A  30                                  SFLDSPCTL
     A N30                                  SFLCRL
     A  30                                  SFLEND
     A                                  4  5'ENTETE DU SOUS-FICHIER'
     A                                      DSPATR(UL)


|    Changer de couleur
                UTILISATION DES SOUS-FICHIERS DANS UN PROGAMME GAP. 
 
  DEFINITION DU SOUS-FICHIER. 
 
 
          ########################################################### 
     A    #               Format de contrôle                        # 
     A    #                                                         # 
     A    # SI SFLSIZ est plus grand que SFLPAG il sera incrémenté  # 
     A    #  automatiquement en cas de besoin.  .                   # 
     A    #                                                         # 
      *   ########################################################### 
      *
     A          R FC                        SFLCTL(FE)
     A                                      SFLSIZ(0016) <---- 
     A                                      SFLPAG(0015) <---- 
     A  30                                  SFLDSP
     A  30                                  SFLDSPCTL
     A N30                                  SFLCRL
     A  30                                  SFLEND
     A                                  4  5'ENTETE DU SOUS-FICHIER'
     A                                      DSPATR(UL)


|    Changer de couleur
                UTILISATION DES SOUS-FICHIERS DANS UN PROGAMME GAP. 
 
  DEFINITION DU SOUS-FICHIER. 
 
 
          ########################################################### 
     A    #               Format de contrôle                        # 
     A    #                                                         # 
     A    # SFLDSP conditionne l'affichage du sous-fichier          # 
     A    #                                                         # 
     A    #                                                         # 
      *   ########################################################### 
      *
     A          R FC                        SFLCTL(FE)
     A                                      SFLSIZ(0016)
     A                                      SFLPAG(0015)
     A  30                                  SFLDSP       <---- 
     A  30                                  SFLDSPCTL
     A N30                                  SFLCRL
     A  30                                  SFLEND
     A                                  4  5'ENTETE DU SOUS-FICHIER'
     A                                      DSPATR(UL)


|    Changer de couleur
                UTILISATION DES SOUS-FICHIERS DANS UN PROGAMME GAP. 
 
  DEFINITION DU SOUS-FICHIER. 
 
 
          ########################################################### 
     A    #               Format de contrôle                        # 
     A    #                                                         # 
     A    # SFLDSPCTL conditionne l'affichage des zones du format   # 
     A    #  de contrôle.                                           # 
     A    #                                                         # 
      *   ########################################################### 
      *
     A          R FC                        SFLCTL(FE)
     A                                      SFLSIZ(0016)
     A                                      SFLPAG(0015)
     A  30                                  SFLDSP
     A  30                                  SFLDSPCTL    <---- 
     A N30                                  SFLCRL
     A  30                                  SFLEND
     A                                  4  5'ENTETE DU SOUS-FICHIER'
     A                                      DSPATR(UL)


|    Changer de couleur
                UTILISATION DES SOUS-FICHIERS DANS UN PROGAMME GAP. 
 
  DEFINITION DU SOUS-FICHIER. 
 
 
          ########################################################### 
     A    #               Format de contrôle                        # 
     A    #                                                         # 
     A    # SFLCLR provoque la mise à blanc du sous-fichier si      # 
     A    #  la condition associée est VRAIE lors d'un WRITE.       # 
     A    #                                                         # 
      *   ########################################################### 
      *
     A          R FC                        SFLCTL(FE)
     A                                      SFLSIZ(0016)
     A                                      SFLPAG(0015)
     A  30                                  SFLDSP
     A  30                                  SFLDSPCTL
     A N30                                  SFLCRL       <---- 
     A  30                                  SFLEND
     A                                  4  5'ENTETE DU SOUS-FICHIER'
     A                                      DSPATR(UL)


|    Changer de couleur
                UTILISATION DES SOUS-FICHIERS DANS UN PROGAMME GAP. 
 
  DEFINITION DU SOUS-FICHIER. 
 
 
          ########################################################### 
     A    #               Format de contrôle                        # 
     A    #                                                         # 
     A    # SFLEND provoque l'apparition du + ou de A suivre ...    # 
     A    #  sur toutes les pages, sauf la dernière si la           # 
     A    #  condition est vraie.                                   # 
      *   ########################################################### 
      *
     A          R FC                        SFLCTL(FE)
     A                                      SFLSIZ(0016)
     A                                      SFLPAG(0015)
     A  30                                  SFLDSP
     A  30                                  SFLDSPCTL
     A N30                                  SFLCRL
     A  30                                  SFLEND(*MORE)  <----  
     A                                  4  5'ENTETE DU SOUS-FICHIER'
     A                                      DSPATR(UL)


|    Changer de couleur
                UTILISATION DES SOUS-FICHIERS DANS UN PROGAMME GAP. 
 
  DEFINITION SOUS SDA. 
 
   Ajoutez un nouveau format (option 1) de type SFL :
 
                           Ajout d'un nouveau format
 
 Fichier . . . . . :   QDDSSRC                Membre . . . . . . :   ECRAN1
   Bibliothèque  . :     FORMATION0           Type de source . . :   DSPF
 
 Indiquez vos choix et appuyez sur ENTREE.
 
   Nouveau format  . . . . . . . . . . . . .   FE           Nom
 
   Type  . . . . . . . . . . . . . . . . . .   SFL          RECORD, USRDFN
                                                            SFL,    SFLMSG
                                                            WINDOW, WDWSFL
                                                            PULDWN, PDNSFL
                                                            MNUBAR
   Format de contrôle de sous-fichier  . . .   FC           Nom
 


|    Changer de couleur
 
 ne renseignez pas les mots clés pour FE, par contre pour FC, indiquez :
 
                Sélection des mots clés de contrôle de sous-fichier
 
  Format de contrôle de sous-fichier . . . . : FC
 
  Indiquez vos choix et appuyez sur ENTREE.
 
                                      O=Oui
    Mots clés généraux  . . . . . . .         <- SLFDSP, SFLCLR, SFLEND
    Mise en page de sous-fichier . . .        <- SFLPAG, SFLSIZ
    Messages de sous-fichier . . . . .    
 
    Sélection mots clés pour le format        <- CAxx, OVERLAY, etc...
 
 
 En validant vous retrouverez la liste des formats, concevez ensuite
  les images par l'option 12.
 
 
 


|    Changer de couleur
                UTILISATION DES SOUS-FICHIERS DANS UN PROGAMME GAP. 
 
  DECLARATION DU SOUS-FICHIER. 
 
  Le sous-fichier fait partie du fichier écran il sera donc 
  défini avec le fichier écran. 
 
  Pour ajouter 1 enregistrement à un sous-fichier on se doit 
  d'indiquer le numéro de l'enregistrement (la gestion 
  d'un sous-fichier ressemble à la gestion d'un fichier 
  en accès direct). 
 
  Pour cela on associera grâce à une spécif F de continuation 
  une zone qui contiendra le numéro de l'enregistrement 
  du sous-fichier.(Ici cette zone est appelée RANG).
 
 
 
 
 
 
 


|    Changer de couleur
                UTILISATION DES SOUS-FICHIERS DANS UN PROGAMME GAP. 
 
  DECLARATION DU SOUS-FICHIER. 
 
  Le sous-fichier fait partie du fichier écran il sera donc 
  défini avec le fichier écran. 
 
  Pour ajouter 1 enregistrement à un sous-fichier on se doit 
  d'indiquer le numéro de l'enregistrement (la gestion 
  d'un sous-fichier ressemble à la gestion d'un fichier 
  en accès direct). 
 
  Pour cela on associera grâce à une spécif F de continuation 
  une zone qui contiendra le numéro de l'enregistrement 
  du sous-fichier.(Ici cette zone est appelée LIGNE).
 
  FECRAN   CF  E                    WORKSTN 
  F                                        RANG  KSFILE FE  
                                          /              ! 
                                         /               V 
                      zone qui contiendra                nom du format 
                      le rang de l'enregistrement        d'enregistrement 


|    Changer de couleur
 
  GESTION DES SOUS-FICHIERS. 
 
 
   4 GRANDES ETAPES MARQUENT LA GESTION DES SOUS-FICHIERS 
 
  1 LA REMISE A BLANC : elle permet de supprimer tous les enregistrements 
                        d'un sous-fichier. 
 
  2 LE REMPLISSAGE    : il permet à partir des renseignements de la base 
                        de données d'alimenter le sous-fichier. 
 
  3 L'AFFICHAGE       : il permet la visualisation des données placer 
                        dans le sous-fichier. 
 
  4 LA LECTURE        : elle permet la lecture des données saisies par 
                        l'utilisateur dans le sous-fichier. 
 
 
 
 
 


|    Changer de couleur
 
  REGARDONS POUR CHACUNE DES 3 PREMIERES ETAPES LE MODULE CORRESPONDANT. 
 
  1 LA REMISE A BLANC : elle permet de supprimer tous les enregistrements 
                        d'un sous-fichier. 
 
  Ce module consiste a mettre en fontion l'indicateur 
  associe à la fonction SFLCLR, à écrire le format 
  de contrôle, à mettre hors fonction l'indicateur 
  associe à la fonction SFLCLR, et à remettre à zéro 
  la zone qui contient le numéro de rang. 
 
  C                     MOVE *OFF      *IN30  (SFLCLR) 
  C                     WRITEFC  
  C                     MOVE *ON       *IN30  (SFLDSP SFLDSPCTL) 
  C                     Z-ADD0         RANG    40                 (4 dt 0)
 
 
 
 
 
 


|    Changer de couleur
 
  REGARDONS POUR CHACUNE DES 3 PREMIERES ETAPES LE MODULE CORRESPONDANT. 
 
  2 LE REMPLISSAGE    : il permet à partir des renseignements de la base 
                        de données d'alimenter le sous-fichier. 
 
  Ce module consiste a additionner 1 à la zone 
  qui contient le rang et à ecrire le format D'ENREGISTREMENT 
 
 
  C                     ADD  1         RANG                          == 
  C                     WRITEFE                                      90 
                                                                     ! 
                                                                     V 
                                                       ON quand le sous-
                                                      fichier est plein
                                                      (SI SFLSIZ = SFLPAG)
 
 
 
 
 


|    Changer de couleur
 
  REGARDONS POUR CHACUNE DES 3 PREMIERES ETAPES LE MODULE CORRESPONDANT. 
 
  3 L'AFFICHAGE       : il permet la visualisation des données placées
                        dans le sous-fichier. 
 
  Ce module consiste à mettre en fontion le ou les indicateurs 
  associé(s) à la fonction SFLDSP et SFLDSPCTL (si ce n'est déja fait)
  et à écrire le format DE contrôle.
 
 
  C                     EXFMTFC  
 
 
 (c'est le module le plus simple)
 
 
 
 
 
 
 


|    Changer de couleur
 
           LECTURE DES ENREGISTREMENTS D'UN SOUS-FICHIER 
 
  Il est possible ensuite de lire les enregistrements 
   du sous-fichier grâce aux 2 instructions ci-dessous 
 
  READC 
 
  Permet de lire seulement les enregistrements modifiés 
  d'un sous-fichier. (READ Change) 
 
  CHAIN 
 
  permet de lire un enregistrement d'un sous-fichier 
  en fournissant le numéro de rang en FACTEUR 1.
 
 
 
 
 
 
 


|    Changer de couleur
 
   READC 
 
  EMPLOI DU READC 
 
  Prenons un exemple 
  Supposons le sous-fichier suivant. 
 
     ##################################################################### 
     ##                                                                 ## 
     ##                   INTERROGATION FICHIER ARTICLE                 ## 
     ##                                                                 ## 
     ##          NOART     LIBELLE  QUANTITE    PRIX UNITAIRE           ## 
     ##       _  010        CLOU      100           1,00                ## 
     ##       _  020        VIS       150           2,00                ## 
     ##       _  030        ECROU     050           1,50                ## 
     ##       _  040        TIGE      175           1,25                ## 
     ##                                                                 ## 
     ##  ROLLUP   PAGE SUIVANTE                                         ## 
     ##  ROLLDOWN PAGE PRECEDENTE                                       ## 
     ##                                                                 ## 
     ##################################################################### 


|    Changer de couleur
 
   READC 
 
    ###################################################################### 
    ## On a donné la possibilite à l'opérateur                          ## 
    ## de rentrer un caractère devant chaque enregistrement.            ## 
    ##                                                                  ## 
    ###################################################################### 
     ##################################################################### 
     ##                                                                 ## 
     ##                   INTERROGATION FICHIER ARTICLE                 ## 
     ##                                                                 ## 
     ##          NOART     LIBELLE  QUANTITE    PRIX UNITAIRE           ## 
     ##       _  010        CLOU      100           1,00                ## 
     ##       _  020        VIS       150           2,00                ## 
     ##       _  030        ECROU     050           1,50                ## 
     ##       _  040        TIGE      175           1,25                ## 
     ##                                                                 ## 
     ##  ROLLUP   PAGE SUIVANTE                                         ## 
     ##  ROLLDOWN PAGE PRECEDENTE                                       ## 
     ##                                                                 ## 
     ##################################################################### 


|    Changer de couleur
 
   READC 
 
    ###################################################################### 
    ## Le programme devra si un caractère est saisi, lire               ## 
    ## l'enregistrement modifié et affiché les informations             ## 
    ## complétes de l'enregistrement ainsi sélectionné.                 ## 
    ###################################################################### 
     ##################################################################### 
     ##                                                                 ## 
     ##                   INTERROGATION FICHIER ARTICLE                 ## 
     ##                                                                 ## 
     ##          NOART     LIBELLE  QUANTITE    PRIX UNITAIRE           ## 
     ##       _  010        CLOU      100           1,00                ## 
     ##       _  020        VIS       150           2,00                ## 
     ##       _  030        ECROU     050           1,50                ## 
     ##       _  040        TIGE      175           1,25                ## 
     ##                                                                 ## 
     ##  ROLLUP   PAGE SUIVANTE                                         ## 
     ##  ROLLDOWN PAGE PRECEDENTE                                       ## 
     ##                                                                 ## 
     ##################################################################### 


|    Changer de couleur
 
   READC 
 
  SYNTAXE 
                                                       ==
   C                     READCFE                       60 
                              /                         ! 
                             /                          V 
                         nom du format           sera ON lorsqu'il n'y aura
                         d'enregistrement        plus d'enregistrements
                                                 modifiés à lire.
 
 
 
 
 
 
 
 
 
 
 


|    Changer de couleur
 
   READC  
 
  SYNTAXE 
 
   C                     READCFE                       60 
 
  Si l'utilisateur peut sélectionner plusieurs enregistrements 
  il faut placer la lecture dans une boucle qui s'arrete
  lorsqu'il n'y a plus d'enregistrements modifiés. 
 
  s'il s'agit d'une variable de type option, il faut aussi tester
   son contenu.
   (si l'utilisateur à choisi cet enregsitrement, puis effacé, l'option
    est à blanc)
 
   C                     READCFE                       60
   C           *IN60     DOWEQ*OFF
   C                     ..... (traitement)
   C                     READCFE                       60 
   C                     ENDDO
                                                                             


|    Changer de couleur
 
 Si vous souhaitez répartir la charge de traitement de la constitution
  de la liste, le procédé est le suivant :
 
  - chargement d'une page (valeur de SFLPAG)
 
  - affichage
 
  - si rollup (il faut intercepter la touche de fonction)
 
       - chargement d'une page
 
       - affichage de cette page
         (il faut donc avoir le choix de la page à afficher)
 
 
 - dernier point, la gestion du SFLEND (à suivre ... ou Fin.)
 
    doit être gérée en partie par le programme
 
 
  Extrait du DSPF :


|    Changer de couleur
 
     A          R FE                        SFL
     A            ZON1      R        O  5  4
     A            ZON2      R        O  5 12
     A            ZON3      R        O  5 25
     A            ZON4      R        O  5 50
      *
      *
     A          R FC                        SFLCTL(FE)
     A                                      SFLSIZ(0016)
     A                                      SFLPAG(0015)
     A  30                                  SFLDSP
     A  30                                  SFLDSPCTL
     A N30                                  SFLCRL
      *
      *    32 = fin de sous fichier (je n'ai plus rien à montrer)
     A  32                                  SFLEND
     A N32                                  ROLLUP(80)
     A                                      CA12(12)
     A                                  4  5'ENTETE DU SOUS-FICHIER'
      * NOLIG = afficher la page qui contient cette ligne
     A            NOLIG          4S 0H      SFLRCDNBR


|    Changer de couleur
     C                     EXSR RAZSF
     C                     WRITEPIED
     C           *IN12     DOUEQ*ON
      * rollup ou première fois
     C           *IN80     IFEQ *ON
     c           RANG      OREQ 0
     C                     EXSR UNEPAG
     C                     ENDIF
     C                     EXFMTFC
     C                     ENDDO
     C                     ENDIF
      *
     C           UNEPAG    BEGSR
     C                     DO   15
     C                     EXSR ECRSF
     C           CODE      READEFICH1F1                  32
     C           *IN32     IFEQ *ON
     C                     LEAVE
     C                     ENDIF
     C                     ENDDO
     C                     Z-ADDRANG      NOLIG
     C                     ENDSR


|    Changer de couleur
 
 Remarques :
 
  il ne s'agit que de l'extrait de pgm gérant le sous fichier
 
     le chargement d'une page doit être réalisé au premier passage
     (RANG = 0) et à chaue demande (ROLLUP, soit *IN80)
 
 
  MABSF correspond au s/pgm de mise à blanc du sous fichier (SFLCLR)
 
  ECRSF au sous programme d'écriture (+1 dans RANG et WRITE)
 
  vous remarquerez le "DO 15" , directement lié à la valeur de SFLPAG
 
  l'indicateur 32 sur le READE.
 
  ainsi que le fait que l'on réalise une lecture de plus que d'écriture
   (READE en fin de boucle après le WRITE FE), afin d'anticiper sur la
   prochaine page.
 
   L'indication "à suivre..." est alors significative.





©AF400