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.
MOVE "exercice" TO WPROG.
MOVE ZON-LINK TO WZONLINK.
COPY "inifor.prg".
COPY "chgtab.prg".
INITPROG.
*ouverture de fichier
* OPEN INPUT FICMF
PERFORM AFFDEB.
MOVE 0 TO W-I
FINTRT-NOK.
*trait1.
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
* PERFORM EFFACER-ECR THRU F-EFFACER-ECR
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 FINTRT-NOK
MOVE 0 TO WFF-FICMF-NOK
CLOSE FICMF
WHEN CARTTT (03)
* PERFORM EFFACER-ECR THRU F-EFFACER-ECR
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
* FINTRT-NOK
CLOSE FICMF
WHEN CARTTT (04)
* PERFORM EFFACER-ECR THRU F-EFFACER-ECR
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
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 toutche 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,prenom et le sex ensuite comparer
*****les enreg-lu et enreg-saisie
****************************************************
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
ACCEPT WOK LINE 24 POSITION 79
PROMPT ECHO UPDATE
ON EXCEPTION WESC
MOVE WESC TO WCAR
END-ACCEPT
EVALUATE RCAR
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.
***************************************************
***************positiott de zone*******************
***************************************************
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.
F-POS-ZONE.
EXIT.
**************************************************
**********effacer les enregistrements de l'ecran**
**************************************************
* EFFACER-ECR.
* MOVE 5 TO CPT
* PERFORM UNTIL CPT > 11
* DISPLAY SPACES LINE(CPT) POSITION 01 SIZE 80
* END-PERFORM.
* 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
* F-EFFACER-ECR.
* EXIT.
Plus de renseignements tu donnera sur ton problème ou ton plantage, plus vite tu aura réponse, petit Scarabé.
Ton programme est censé faire quoi ?
Quel symptôme a ton programme ?
As tu localisé la s&quence de code qui pose problème ?
Il faut être bref mais clair
Eclaire la modeste lumière des lecteurs !!!!
Ils n'ont peut être pas envie ou le temps d'étudiés chaque ligne de code.
HULK77
__________________________
Ma fabrique de chemises tourne à plein régime !!!