Sur un formulaire de saisie, on va différencier 3 type de contrôles
1) de valeur
exemple doit contenir 1, 2, 3
2) de cohérence
exemple date de fin > date de debut
3) applicatifs
qui nécessite un accès à une ressource externe
exemple
controler que le client existe
Sur une application de type web, on a un formulaire de saisie et les contrôles 1 et 2 sont faits par javascript
et la partie 3 est faite applicativement
Si on considère maintenant un applicatif 5250, on peut faire une grande partie des contrôles 1 directement dans l’écran ,
la partie 2 et 3 seront faites applicativement
Nous allons prendre un DSPF et faire des controles directement dedans
l’écran DSPF
A*%%TS SD 20241104 105842 PLB REL-V7R4M0 5770-WDS
A*%%EC
A DSPSIZ(24 80 *DS3)
A CA03(03)
A R FMT01
A*%%TS SD 20241104 105842 PLB REL-V7R4M0 5770-WDS
A 4 29'Ecran de saisie'
A 8 15'Code :'
A CODE 4A B 8 24DSPATR(MDT)
A N45 DFTVAL('001')
A CHECK(MF)
A RANGE('0001' '9999')
A 8 30'Zone remplie obligatoire'
A 11 15'Nom :'
A NOM 30A B 11 24CHECK(LC)
A DSPATR(MDT)
A COMP(NE ' ')
A 12 30'Zone obligatoire '
A 13 30'Minuscules autorisées'
A 15 15'Option :'
A OPTION 1N B 15 24VALUES('1' '2' '4')
A N45 DFTVAL('2')
A 15 30'1 Créer'
A 16 30'2 Modifier'
A 17 30'4 Supprimer'
A 22 5'F3=Exit'
A 9 30'Chiffre uniquement'
Nous allons contrôler que
la zone CODE est remplie
la zone NOM n’est pas vide
la zone OPTION doit prendre comme valeur 1, 2 et 4
On dispose des contrôles
de saisie souvent des CHECK
de validité, COMP, RANGE, VALUE
Pour que le contrôle soit déclenché, la zone devra être modifiée ou on forcera le DSPATR(MDT), pour faire comme si c’était le cas.
Remarque
Les contrôles de saisie sont effectués dans tous les cas (CFXX, ENTER, CAXX)
Les contrôles de validité sont effectués uniquement dans cas (CFXX, ENTER)
Le programme RPGLE pour tester
**free
ctl-opt DFTACTGRP(*NO) ;
dcl-f Controle WORKSTN ;
dou *in03 ;
exfmt fmt01 ;
if not *in03;
endif ;
// Contrôle des zones
*in45 = *on ;
enddo ;
*inlr = *on ;
Remarque :
Dans cet exemple, on utilisera l’indicateur 45 pour ne plus affecter de valeur par défaut
Vous pouvez ainsi simplifier votre application d’une grande partie des contrôles basics
Vous pouvez indiquer , un message différent par le mot clé CHCKMSGID()