
|
Quelques nouveautés concernant les dates sur les DSPF en V4R20 1/ les types L (date) T (time) Z (timestamp) sont enfin reconnus. - sur les DSPF - sur les PRTF aucun contrôle n'est réalisé sur la donnée recue par le DSPF (il est prêt à afficher 01/13/98) les données sont contrôlées A LA SAISIE - si le MDT est ON (comme COMP, RANGE, VALUES) c'est à dire s'il y a eu saisie si vous indiquez DSPATR(MDT) le message d'erreur est le CPD406A qui prévoit 13 raisons possibles |
Message . . . . : La valeur de zone n'est pas une date admise. Code raiso &1. Cause . . . . . : La valeur indiquée n'est pas une date admise. Recherchez cause de l'échec dans les codes retour suivants. 1 - Un caractère de la zone n'est pas admis. 2 - Le séparateur spécifié n'est pas admis. 3 - Trop de chiffres ont été indiqués. 4 - Trop peu de chiffres ont été indiqués. 5 - Trop de séparateurs ont été indiqués. 6 - Trop peu de séparateurs ont été indiqués. 7 - Le jour indiqué n'est pas admis. 8 - Le mois indiqué n'est pas admis. 9 - Le jour et le mois indiqués ne sont pas admis. 10 - L'année indiquée n'est pas admise. 11 - Le jour et l'année indiqués ne sont pas admis. 12 - Le mois et l'année indiqués ne sont pas admis. 13 - Le jour, le mois et l'année indiqués ne sont pas admis. |
les séparateurs ne sont PAS obligatoires ! les zéros [à gauche] non plus pour le 1er Février 1998 on admet donc : 01/02/98 010298 10298 1/2/98 2/ les mots-clés DATFMT [et DATSEP pour les formats *YMD, *DMY, *MDY) sont admis. si vous n'indiquez rien le format par défaut est *ISO on admet aussi DATFMT(*JOB) qui affiche (et accepte) une date au format du job en cours, mais transmet TOUJOURS au format *ISO |
3/ un nouveau mot-clé MAPVAL est implémenté afin d'établir des conversions
entre valeur affichée et valeur transmise au pgm.
MAPVAL( (valeur-pgm1 valeur-écran1)
(valeur-pgm2 valeur-écran2) ...) jusqu'à 100 correspondances
avec comme valeurs particulières
*BLANK on affiche que des blancs
*CUR valeur en cours (date en cours ou heure en cours, ...)
transmise au pgm.
exemple : MAPVAL(('01/01/40' *BLANK))
si le pgm contient 01/01/40 j'affiche des blancs
ET si l'utilisateurs entre des blancs j'envoi 01/01/40
|
4/ le mot-clé DATE admet maintenant des paramètres DATE(*JOB | *SYS *job = la date du job (on peut modifier par chgjob) *sys la date système (QDATE) *Y | *YY) *Y = année sur 2 *YY = année sur 4 et enfin un nouvel edit-code W pour les dates sour la forme YYYY/MM/JJ l'edit-code Y admet aussi les années sur 8 mais en JJ/MM/YYYY pour des dates sur 6 dt 0 , ces deux edit-codes sont identiques. |
exemple de source
2 4DATE(*YY) EDTCDE(Y)
4 4DATE(*YY) EDTCDE(W)
A FLD001 L B 8 22DATFMT(*DMY) DATSEP('/')
A FLD002 L B 10 22DATFMT(*EUR)
A FLD003 L B 12 22DATFMT(*JOB)
A FLD004 L B 15 42DATFMT(*DMY) DATSEP('/')
A MAPVAL(('01/01/40' *BLANK))
A FLD005 L B 17 42DATFMT(*DMY) DATSEP('/')
A MAPVAL((*CUR *BLANK))
qui affiche :
|
date edtcde(y) 13/08/1998
date edtcde(w) 1308/19/98
valeurs recues par le pgm
| |
date format *dmy 01/01/40 | 01/01/40 |
| |
date format *eur 01.01.1994 | 01.01.1994 |
| |
date format *job 01/01/40 | 1940-01-01 |
| |
| |
date avec mapval('01/01/40' *blank) | 01/01/40 |
| |
date avec mapval(*cur *blank) | 13/08/98 |
| |
| |
|