RPG & PRTF / DSPF


Le langage DDS a été utilisé pour concevoir la base de données (aujourd'hui IBM préconise plutôt SQL)

Il reste indispensable pour concevoir des états (PRTF) et des écrans (DSPF)

  Rappel, chaque ligne est découpée comme suit :  


                1 1        223   33333      4
     6          7 9        890   45678      5
     A..........T.NOM+++++++RLG+++TD+U......FONCTION+++++++++++++++++++++++

PRTF

Un PRTF est composé de formats

DEFINITION D'UN FORMAT                                           

A NxxNxxNxxR Format----R lg S dB DébMot-clé
A R TITRE TEXT('Titre de l'état')
A SKIPB(2)



Saut et espacement

Les 99 conditions possibles sont les mêmes que celles utilisées par le langage RPG (indicateurs)
   et sont transmises du pgm vers le PRTF à chaque WRITE

DEFINITION D'UNE CONSTANTE                                           

A NxxNxxNxxR Format----R lg S dB DébMot-clé
A xx'constante à imprimer'

DEFINITION D'UNE VARIABLE                                           

A NxxNxxNxxR Format----R lg S dB DébMot-clé
A MAZONE R xx
*ou
A MAZONE 4 0 xx
A

 xx est la position (n° colonne) dans la ligne en cours et peut être noté +xx (décalage par rapport à l'info précédente)

   A                                      REF(REPERTP1)            
*
A R TITRE TEXT('FORMAT TITRE')
A SKIPB(02)
A 5'NOM du PGM' HIGHLIGHT
A 15'Le :'
A + 2DATE EDTCDE(Y)
A 50'LISTE DU PERSONNEL'
A 80'Page :'
A + 2PAGNBR EDTCDE(Z)
A SPACEA(2)
A 10'Matricule'
A 20'Nom'
A 45'Prénom'
A 70'Situation'
A 100'Salaire'
A SPACEA(2) *
A R LIGNE TEXT('1 EMPLOYE')
A SPACEA(1)
A MATRIC R 9
A NOM R 19
A PRENOM R 44
* information conditionnée
* (si 50 est faux)
A N50 LIBSIT 20 69
* (si 50 est vrai)
A 50 69' SITUATION EN ERREUR'
A SALBRT R 99EDTCDE(3)
A R TOTAL TEXT('TOTAL ETAT')
A SPACEB(3)
A 50'Nb d''employés'
A NBEMP 60 + 3EDTCDE(Z)

Report Designer.




RDI contient un outil permettant de concevoir des états (PRTF) en mode visuel : Report Designer.

Il fonctionne sur les principes suivant :


, ici sur un format.

 

Vous devez travailler à partir de la palette en glisser/déposer.

Par exemple pour définir une nouvelle constante

 

 

Quand vous lâchez la souris, la constante est créée

Saisissez alors votre texte

 

Le processus est le même pour une variable

 

Si vous faites référence à la base de données (sur le fichier, Afficher dans une table/Zones), un drag & drop est possible



Indiquez ensuite les propriétés de cette nouvelle zone :

  • son nom
  • son type
  • les mots-clés associés

 

 

ici, pour une zone référencée, la longueur de substitution


la référence elle même

 

Les attributs Gras et soulignement

 

Les couleurs

Dans tous les cas :

Les indicateurs

 

Liste des mots-clés

Le bouton "Accéder à la page" permet d'aller à l'onglet ou se trouve ce mot-clé.


Un onglet Source (en bas de la feuille de travail) permet de voir et d'éditer directement au niveau du source SDD.

     La compilation devient alors possible et se déroule comme avec RDi en règle générale.


Utilisation en RPG

En GAP III


En RPG-IV

En format libre



NB : le RPG "allume" l'indicateur associé à OFLIND pour vous signaler la fin de page.

   C'est à vous de "l'éteindre" après avoir changé de page -> format avec SKIP(n° de ligne < à la ligne actuelle)



DSPF

Un DSPF est composé de formats

Là aussi, les 99 indicateurs sont transmis à chaque entrée/sortie. Ils sont le moyen :

Les terminaux historiques (5250) possédaient une petite unité arithmétique et logique permettant qq traitements, mais pas de mémoire vidéo.

Un octet était alors occupé physiquement devant chaque information, nommé l'attribut d'affichage :

Format de DSPF
   A NxxNxxNxxR Format----R lg  S dB LiCoMot-clé    
*
A R TITRE TEXT('FORMAT TITRE')
A OVERLAY
A ERASE(autre-format)
A CA03(03)
A CF11(11)

Soit un format "Jaune" affiché à l'écran
si vous cherchez à afficher "Orange"

Sans Recouvrement Avec Recouvrement


par contre si les formats se chevauchent, le plus ancien est effacé systèmatiquement

-->

Définition d'une zone

   A NxxNxxNxxR Format----R lg  T dB LiCoMot-clé    
*
A R TITRE TEXT('FORMAT TITRE')
A 1 2'Nom-Du-Pgm'
A NUMERO 6 Y 0I 512EDTCDE(3)
A 50 ERRMSG('Numéro non trouvé' 50)

Types de zones

Mots-clé niveau zone :

MOTS-CLÉS PARTICULIERS :


Remarques importantes sur le fonctionnement du gestionnaire d'écran.

• ON DEFINIT L'EMPLACEMENT D'UNE ZONE OU D'UNE CONSTANTE SUR L'ECRAN EN PRECISANT LA LIGNE ET LA POSITION OU S'AFFICHERA LE 1er CARACTERE (pas l'attribut)

• 2 ZONES CONSECUTIVES A L'ECRAN DOIVENT ETRE SEPAREES PAR AU MOINS un ESPACE

• ON DOIT SPECIFIER TYPE Y POUR LES ZONES NUMERIQUES SI L'ON NE VEUT PAS QUE LE SIGNE OCCUPE UNE POSITION.

• LE FORMAT OCCUPE LA TOTALITE DE L'ESPACE ECRAN SITUE ENTRE LA LIGNE
LA PLUS HAUTE ET LA LIGNE LA PLUS BASSE (important pour les recouvrements)

•LE CHEVAUCHEMENT DE DEUX INFOS (constante ou variable aux mêmes positions)
EST ACCEPTE PAR LE COMPILATEUR EN CAS DE CONDITIONNEMENT UNIQUEMENT.




Screen Designer.




RDI contient un outil permettant de concevoir des écrans (DSPF) en mode visuel : Screen Designer.

Il a un mode de fonctionnement proche de Report Designer :

 

A l'ouverture, un nouvel espace de travail est proposé, propre à Screen Designer.

Pour créer un format, dans la zone de conception, ouvrir la palette :

Contenu de la palette :

Contrôles de type format écran

format d'écran standard

Format d'écran de type sous-fichier (vus plus loin dans ce cours)

Cliquer sur  et cliquer ensuite sur la zone de conception :

Un format nommé RECORD1 est créé.

Le nom du format peut être modifié en accédant à la vue propriétés.

Pensez à préciser les touches de fonction autorisées (CA ou CF)


ici CA03(03), Attention le bouton Indicateurs... sert à conditionner

Dans Mots-clés, ajoutez :

Ensuite, en utilisant la palette, nous allons ajouter des éléments à notre format.

Voici le contenu de la palette pour un écran :

 

Zone multi ligne, multi colonne (CNTFLD)

Zone de type date

Zone (caractère ou numérique)

Zone de type heure

Zone de type horodatage

 

Date du jour : DATE

Message (MSGCON, rare)

Nom du système : SYSNAME

Constante texte, simple constante

Heure en cours : TIME

Nom de l'utilisateur en cours : USER

Ce qui donne :

Aller dans les propriétés pour affiner la constante. Ne pas oublier de garder la constante sélectionnée sinon les propriétés ne seront pas les bonnes.

 

Une petite variante toutefois. Après avoir cliqué sur la zone de conception, la constante est en mode modification, c'est-à-dire que du texte peut être saisie.

 

Ce qui donne :

 ou  

 

Aller dans les propriétés pour donner un nom à la zone. Ne pas oublier de garder la zone sélectionnée sinon les propriétés ne seront pas les bonnes.

Pour faire référence à une zone de la base de données, utilisez l'onglet approprié :



Ou bien faites du "Drag & Drop" depuis la vue table affichant une liste de zones

Onglet suivant, gestion des attributs (DSPATR)

 

Enfin l'onglet Mot-clé, permet de gérer directement par mot-clé.

Certains mots-clés font référence à l'un des onglets précédents.

Ils activent, alors le bouton "Accéder à la page"


La vue structure permet de choisir l'élément actif, particulièrement pour activer les mots-clés niveau fichier (DSPSIZ, taille de l'écran) par exemple


En cliquant sur l'onglet Source, l'option de compilation devient accessible comme avec Report Designer.

 

Utilisation en RPG

En GAP III


En RPG-IV

En format libre



NB :Nous réalisons souvent des opérations WRITE puis READ, l'ordre EXFMT enchaine les 2 opérations.


Sous fichiers



 

Il s'agit de pouvoir charger en mémoire un nombre élevé de lignes (SFL1=sous fichier en mémoire),
  qui s'affiche ensuite à l'écran par page, via le format de contrôle (CTL1)

 

Exemple

Source

Le format d'enregistrement (SFL1) représente une ligne en mémoire et à l'écran

A          R SFL1                      SFL 
A            RAISOC        45   O  6  9 
A            DEPCLI         2   O  6 56 
A            FIELD           L  O  6 62 

les positions (ligne/colonne) sont les position d'affichage de la première ligne à l'écran.


Le format de contrôle (CTL1), contrôle l'affichage du sous fichier, il peut lui même contenir :

Il fait le lien avec le sous fichier (SFLCTL) et définit les caractéristiques d'affichage

A          R CTL1                      SFLCTL(SFL1)  
A SFLSIZ(0011)
A SFLPAG(0010)
A 30 SFLDSPCTL
A 30 SFLDSP
A 30 SFLEND(*SCRBAR)
A N30 SLFCLR

Sous RDI, glissez un enregistrement de type sous fichier

Affichez les propriétés du format de contrôle (CTL1)

L'onglet "Contrôle de sous-fichier" contient

L'onglet "mot-clé de commande" contient

Utilisation en RPG

Il existe une autre manière de gérer les sous-fichier, afin de répartir la charge de constitution de la liste en mémoire

 Chargement Page à Page

 A          R SFL1                       SFL                      
A RAISOC 45 O 6 9 A DEPCLI 2 O 6 56 A FIELD L O 6 62
*
*
A R CTL1 SFLCTL(SFL1)
A SFLSIZ(0011)
A SFLPAG(0010)
A 30 SFLDSP
A 30 SFLDSPCTL
A N30 SFLCLR
*
* 32 = fin de sous fichier (je n'ai plus rien à montrer)
A 32 SFLEND(*SCRBAR)
A N32 ROLLUP(80)
A CA12(12)
A 4 5'ENTETE DU SOUS-FICHIER'
* LIGNE = afficher la page qui contient cette ligne
A LIGNE 4S 0H SFLRCDNBR

Gestion du Rollup (page suivante)

Chargement d'une page


Vous remarquerez

 

© Volubis