Bonjour,
Dans la même lancée que ce matin, un tout petit programme destiné à nous permettre de vérifier si une saisie est numérique.
Il a été choisi parmi d'autres solutions proposées.
___
Il prend en entrée une saisie, 10 caractères (on peut le modifier dans le CS)
En sortie, un indicateur, 1 non numérique, 0 numérique, ainsi que l'entier retourné.
___
et le petit test :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 ************************************************************************** *0011111111112222222222333333333344444444445555555555666666666677*7777777* *8901234567890123456789012345678901234567890123456789012345678901*3456789* ************************************************************************** IDENTIFICATION DIVISION. PROGRAM-ID. estUnNumerique. AUTHOR. Deallyra. DATE-WRITTEN. 14-03-2009. DATE-COMPILED. 14-03-2009. * *************** * VERIFICATION D'UNE SAISIE NUMERIQUE * *************** ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 01 W-CNT PIC 9. LINKAGE SECTION. * Une saisie "numérique" 01 W-ALPHANUMERIQUE PIC X(10). * Le résultat 01 W-INVALIDE PIC 9. 01 W-NUMERIQUE PIC X(10). ************************************************************************* *0011111111112222222222333333333344444444445555555555666666666677*7777777* *8901234567890123456789012345678901234567890123456789012345678901*3456789* ************************************************************************** PROCEDURE DIVISION USING W-ALPHANUMERIQUE W-INVALIDE W-NUMERIQUE. * *************** * Spécifiations fonctionnelles * * Le nombre passé en paramètre est contrôlé. * Est-ce un nombre ou une chaîne de caractère ? * * W-ALPHANUMERIQUE Input * La saisie que l'on reçoit en paramètre. * W-INVALIDE * 1 si la saisie est invalide, non numérique * 0 sinon. * *************** DEBUT. * On considère la saisie comme étant invalide, non numérique MOVE 1 TO W-INVALIDE * On vérifie la saisie reçue INSPECT W-ALPHANUMERIQUE REPLACING LEADING ' ' BY '0' MOVE FUNCTION REVERSE(W-ALPHANUMERIQUE) TO W-NUMERIQUE MOVE 0 TO W-CNT INSPECT W-NUMERIQUE TALLYING W-CNT FOR LEADING SPACE COMPUTE W-CNT = LENGTH OF W-ALPHANUMERIQUE - W-CNT IF W-ALPHANUMERIQUE(1:W-CNT) IS NUMERIC THEN MOVE 0 TO W-INVALIDE MOVE W-ALPHANUMERIQUE(1:W-CNT) TO W-NUMERIQUE END-IF EXIT PROGRAM FIN. EXIT.
___
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 ************************************************************************** *0011111111112222222222333333333344444444445555555555666666666677*7777777* *8901234567890123456789012345678901234567890123456789012345678901*3456789* ************************************************************************** IDENTIFICATION DIVISION. PROGRAM-ID. test. AUTHOR. Deallyra. DATE-WRITTEN. 14-03-2009. DATE-COMPILED. 14-03-2009. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. DATA DIVISION. FILE SECTION. WORKING-STORAGE SECTION. 01 W-ALPHANUMERIQUE PIC X(10). 01 W-NUMERIQUE PIC 9(10). 01 W-CONTROLE PIC 9. SCREEN SECTION. PROCEDURE DIVISION. DEBUT. MOVE "abc" TO W-ALPHANUMERIQUE CALL "estUnNumerique" USING BY CONTENT W-ALPHANUMERIQUE, BY REFERENCE W-CONTROLE W-NUMERIQUE. DISPLAY W-CONTROLE"|"W-NUMERIQUE ADD 1 TO W-NUMERIQUE DISPLAY W-NUMERIQUE MOVE "123" TO W-ALPHANUMERIQUE CALL "estUnNumerique" USING BY CONTENT W-ALPHANUMERIQUE, BY REFERENCE W-CONTROLE W-NUMERIQUE. DISPLAY W-CONTROLE"|"W-NUMERIQUE ADD 1 TO W-NUMERIQUE DISPLAY W-NUMERIQUE ACCEPT W-CONTROLE EXIT PROGRAM FIN. EXIT.
Je suis ouverte à toutes les possibilités d'amélioration du code
Merci à vous.
Partager