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) |
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) |
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) |
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) |
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) |
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) |
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) |
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) |
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) |
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) |
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 |
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. |
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). |
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 |
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. |
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) |
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) |
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) |
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. |
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 ## ## ## ##################################################################### |
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 ## ## ## ##################################################################### |
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 ## ## ## ##################################################################### |
READC SYNTAXE == C READCFE 60 / ! / V nom du format sera ON lorsqu'il n'y aura d'enregistrement plus d'enregistrements modifiés à lire. |
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 |
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 : |
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 |
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 |
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. |