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 | | | | | |