line 278: Undefined data item: SAISIE-CORRECTE
line 297: No SELECT for file: PERFOM
line 297: Verb expected, POS-ZONE found
line 335: START illegal for SEQUENTIAL files
SAISIE-CORRECTE je les déclare dans WSS
(Positionnement de curseur qui dépend de fichiers indexée ou sa peut venir de ma mon algo TRT-F4)
Mais les restes de fonction (F1 F2 F3), fonctionnent correctement.
01 SAISIE-CORRECTE-NOK PIC 9.
88 SAISIE-CORRECTE-OK VALUE 1.
01 FINTRT-NOK PIC 9.
88 FINTRT-OK VALUE 1.
01 W-FF-KO PIC 9.
88 W-FF-OK VALUE 1.
* zone code retour statut
77 WSTAT-FICMF PIC X(2).
*************************************************************
COPY "w01tab1.wss".
COPY "nomfic.wss".
************************************************************
PROCEDURE DIVISION USING ZON-LINK.
DECLARATIVES.
COPY "ftabfic.dec".
DECFICMF SECTION.
USE AFTER STANDARD ERROR PROCEDURE ON FICMF.
DECFICMF-10.
IF WSTAT = "00" OR
WSTAT = "02" OR
WSTAT = "05" OR
WSTAT = "10" OR
WSTAT = "22" OR
WSTAT = "23" OR
WSTAT = "35"
GO TO F-DECFICMF-10.
*
MOVE "ficmf.isa" TO WFICH.
MOVE NOMFIC11 TO WFICHERR.
MOVE 1 TO WTYPERR.
CALL "geserr.cob" USING WSERR.
IF WSTAT = "99"
MOVE 2 TO WTYPERR
GO TO F-DECFICMF-10.
*
STOP RUN.
*
F-DECFICMF-10.
EXIT.
END DECLARATIVES.
**********************************************************
DEBUT SECTION.
DEBPROG.
*en cas d'erreur d'execution de programme propre Unix.
MOVE "exercice" TO WPROG.
MOVE ZON-LINK TO WZONLINK.
COPY "inifor.prg".
COPY "chgtab.prg".
INITPROG.
*ouverture de fichier
* OPEN INPUT FICMF
*permets la fenêtre sur Unix
PERFORM AFFDEB.
MOVE 0 TO W-I
FINTRT-NOK.
********************************************************************
***le programme principal permets d’affichage les touches de fonction ***F1=(CARTTT (02)), F2=(CARTTT (03)), F3=(CARTTT (04)), F4=(CARTTT ***(05)), chaque fonction est définie à l’extérieur programme ***principale. J’ouvre chaque fois le fichiers pour les fonction ***suivantes : F1, F2, F3, F4 si non ça ne fonction pas, je sais pas ***pourquoi .j’ ouvre ensuite je ferme le fichier.
********************************************************************
PERFORM UNTIL FINTRT-OK
DISPLAY SPACES LINE 24 POS 1 SIZE 80
DISPLAY "F1=masculin" LINE 24 POSITION 05 REVERSE
DISPLAY "F2=feminin" LINE 24 POSITION 18 REVERSE
DISPLAY "F3=nbmf" LINE 24 POSITION 30 REVERSE
DISPLAY "F4=compt-rondu" LINE 24 POSITION 45 REVERSE
DISPLAY "F6=quiter" LINE 24 POSITION 60 REVERSE
MOVE 0 TO W-I
MOVE SPACE TO WCAR
MOVE SPACE TO WESC
MOVE SPACE TO WOK
ACCEPT WOK LINE 24 POSITION 79
PROMPT ECHO UPDATE
ON EXCEPTION WESC
MOVE WESC TO WCAR
END-ACCEPT
EVALUATE RCAR
WHEN CARTTT (02)
DISPLAY SPACES LINE 5 POS 1 SIZE 80
DISPLAY SPACES LINE 6 POS 1 SIZE 80
DISPLAY SPACES LINE 7 POS 1 SIZE 80
DISPLAY SPACES LINE 8 POS 1 SIZE 80
DISPLAY SPACES LINE 9 POS 1 SIZE 80
DISPLAY SPACES LINE 10 POS 1 SIZE 80
OPEN INPUT FICMF
DISPLAY "LE NOMBRE TOTAL MASCULIN"
LINE 4 POSITION 2 REVERSE
MOVE 'M' TO SEXCHOISI
PERFORM TRT-F1 THRU F-TRT-F1
MOVE 0 TO WFF-FICMF-NOK
CLOSE FICMF
WHEN CARTTT (03)
DISPLAY SPACES LINE 4 POS 1 SIZE 80
DISPLAY SPACES LINE 5 POS 1 SIZE 80
DISPLAY SPACES LINE 6 POS 1 SIZE 80
DISPLAY SPACES LINE 7 POS 1 SIZE 80
DISPLAY SPACES LINE 8 POS 1 SIZE 80
DISPLAY SPACES LINE 9 POS 1 SIZE 80
DISPLAY SPACES LINE 10 POS 1 SIZE 80
OPEN INPUT FICMF
DISPLAY "LE NOMBRE TOTAL FEMININ"
LINE 4 POSITION 2 REVERSE
MOVE 'F' TO SEXCHOISI
PERFORM TRT-F1 THRU F-TRT-F1
MOVE 0 TO WFF-FICMF-NOK
CLOSE FICMF
WHEN CARTTT (04)
DISPLAY SPACES LINE 4 POS 1 SIZE 80
DISPLAY SPACES LINE 4 POS 1 SIZE 80
DISPLAY SPACES LINE 5 POS 1 SIZE 80
DISPLAY SPACES LINE 6 POS 1 SIZE 80
DISPLAY SPACES LINE 7 POS 1 SIZE 80
DISPLAY SPACES LINE 8 POS 1 SIZE 80
DISPLAY SPACES LINE 9 POS 1 SIZE 80
DISPLAY SPACES LINE 10 POS 1 SIZE 80
OPEN INPUT FICMF
DISPLAY "LE NOMBRE TOTAL DES PERSONNES:"
LINE 4 POSITION 4 REVERSE
PERFORM TRT-F3 THRU F-TRT-F3
MOVE 0 TO FF-FICMF-NOK
CLOSE FICMF
****************************************************************
***************cette fonction qui ne fonctionne par contre le **************traitement voire le début TRT-F4 et la fin F-TRT-F4
***************à la fin de programme
*****************************************************************
WHEN CARTTT (05)
OPEN INPUT FICMF
PERFORM TRT-F4 THRU F-TRT-F4
CLOSE FICMF
WHEN CARTTT (07)
SET FINTRT-OK TO TRUE
END-EVALUATE
END-PERFORM.
EXIT PROGRAM.
************************************************************
*traitement touche fonction F1(afficher la liste masc et femin)
*************************************************************
TRT-F1.
PERFORM UNTIL WFF-FICMF-OK
READ FICMF NEXT AT END
SET WFF-FICMF-OK TO TRUE
END-READ
IF T-SEX = SEXCHOISI
* DISPLAY SEXCHOISI REVERSE
DISPLAY ENREG-FICMF
ADD 1 TO TOTALE
END-IF
END-PERFORM
* SET WFF-FICMF-OK TO 1.
MOVE 1 TO WFF-FICMF-NOK.
F-TRT-F1.
EXIT.
***************************************************
*****************traitement de fonction F3*********
**************afficher nbm ou nbf******************i
***************************************************
TRT-F3.
MOVE 0 TO N-NBM
MOVE 0 TO N-NBF
PERFORM UNTIL FF-FICMF-OK OR FINTRT-OK
READ FICMF NEXT AT END
SET FF-FICMF-OK TO TRUE
END-READ
IF T-SEX = 'M'
ADD 1 TO N-NBM
ELSE
ADD 1 TO N-NBF
END-IF
END-PERFORM.
DISPLAY " masculin:"
N-NBM LINE 6 POS 9
DISPLAY " feminin:"
N-NBF LINE 8 POS 9.
MOVE 1 TO FF-FICMF-NOK.
F-TRT-F3.
EXIT.
****************************************************
*****saisir le nom, prénom et le sexe. Ensuite comparer;
***** les enregistrements lus dans le fichier indexé
***** et celle saisie par l’utilisateur à savoir (nom, prénom, sexe)
*****exemple : la valeur saisie toto, titi, Féminin
*****dans un première temps on va comparerez la valeur saisie par *****l’utilisateur et celle existant dans le fichiers FICMF.txt, s’il ****existe alors on sort de la boucle si non on écrit la valeur ***saisie dans le fichiers.
****************************************************
TRT-F4.
DISPLAY NOM LINE 6 POS 2
DISPLAY PRENOM LINE 6 POS 2
DISPLAY SEX LINE 6 POS 2
DISPLAY "F8 = validation" LINE 6 POS 2
DISPLAY "F = quitter" LINE 6 POS 2
*********initialisation des variable************
MOVE 0 TO SAISIE-CORRECTE
*****************************************
PERFORM UNTIL SAISIE-CORRECTE-OK
ACCEPT NOM-SAISIE LINE 6 POS 2
ACCEPT PRENOM-SAISIE LINE 7 POS 2
ACCEPT SEX-SAISIE LINE 8 POS 2
MOVE SPACE TO WCAR
*te tient pas compte de celle-ci permets tout simplement d’afficher *l’écran
ACCEPT WOK LINE 24 POSITION 79
PROMPT ECHO UPDATE
ON EXCEPTION WESC
MOVE WESC TO WCAR
END-ACCEPT
EVALUATE RCAR
*Carttt(08) il permets d’afficher la toucher de fonction ICI F8
* j’appuie sur F8, si SEX ='M' OR SEX = 'F', ouvrir le fichier et je *positionnement de curseur voire le positionnement à la fin de *programme PERFOM POS-ZONE THRU F-POS-ZONE tant que je suis pas à la fin de fichier je lus et j’incrémente pour passé à l’élément suivante.si la valeur lus égale à la valeur saisie
*fin de fichiers et j’écrits les enregistrements dans le fichiers
*si non je saisie à nouveaux (non, prénom, sexe).
* CARTTT(07), cette fonction permets de quitte l’écran.
WHEN CARTTT(08)
IF SEX ='M' OR SEX = 'F'
OPEN INPUT FICMF
PERFOM POS-ZONE THRU F-POS-ZONE
MOVE 0 TO W-FF
PERFORM UNTIL W-FF-OK
READ FICMF NEXT AT END
SET W-FF-OK TO TRUE
END-READ
IF T-SEX = SEX-SAISIE AND
T-NOM = NOM-SAISIE AND
T-PRENOM = PRENOM-SAISIE
END-IF
SET W-FF-OK TO TRUE
CLOSE FICMF
END-PERFORM
OPEN INPUT FICMF
MOVE NOM-SAISIE TO T-NOM
MOVE PRENOM-SAISIE TO T-PRENOM
MOVE SEX-SAISIE TO T-SEX
WRITE ENREG-FICMF
END-WRITE
CLOSE FICMF
SET SAISIE-CORRECTE-OK TO TRUE
ELSE
SET SAISIE-CORRECTE-OK TO TRUE
END-IF
WHEN CARTTT(07)
SET SAISIE-CORRECTE-OK TO TRUE
* MOVE 1 TO SAISIE-CORRECTE-OK
END-EVALUATE
END-PERFORM.
F-TRT-F4.
EXIT.
***************************************************************
***positionnement de curseur sur le premier élément de fichiers
****************************************************************
POS-ZONE.
OPEN OUTPUT FICMF
MOVE LOW-VALUE TO T-CLE
START FICMF KEY IS NOT LESS THAN T-CLE
INVALID
DISPLAY "INVALIDE" LINE 2 POS 2
END-START.
Pour ta ligne 278 ta zone SAISIE-INCORRECTE n'est pas définie en WORKING, il y a 2 zones qui ressemblent, cela doit être une des 2 je présumes. (SAISIE-CORRECTE-OK ou SAISIE-CORRECTE-NOK )
line 297: No SELECT for file: PERFOM C'est PERFORM (il manque un 'R' )
line 335: START illegal for SEQUENTIAL files
ton code :
WHEN CARTTT(08)
IF SEX ='M' OR SEX = 'F'
OPEN INPUT FICMF <== Ouverture fichier FICMF en INPUT
PERFOM POS-ZONE THRU F-POS-ZONE <== Dans le PERORM Ouverture
fichier FICMF en OUTPUT
Beaucoup trop d'OUVERTURE ET FERMETURE DU MEME FICHIER
MOVE 0 TO W-FF <== Zone pas définie en WORKING
PERFORM UNTIL W-FF-OK
READ FICMF NEXT AT END
SET W-FF-OK TO TRUE
END-READ
Corrige déjà ces erreurs de jeunesse
HULK77
__________________________
Ma fabrique de chemises tourne à plein régime !!!