***************************************
* PROGRAMME DE JOURNAL CENTRALISATEUR *
*                                     *
* 23 MARS 2001        HERVET STEPHANE *
***************************************

* RECAPITULATIF DES GOSUBS

* OUVERTURE DES FICHIERS
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","DETAILECRITUREGENE" TO F.DETAILECRIGENE ELSE STOP
OPEN "","JOURNAL" TO F.JOURNAL ELSE STOP
OPEN "","DETAILECRITUREGENEARCHIVE" TO F.DETAILECRIGENEARCHIVE ELSE STOP
OPEN "","JOURNALARCHIVE" TO F.JOURNALARCHIVE ELSE STOP
OPEN "","TEMPO" TO F.TEMPO ELSE STOP

* RECUPERATION DES PARAMETRES
PROCREAD PARAMETRES ELSE STOP

W_RANGENTITE=INDEX(PARAMETRES," ",1)
W_ENTITE=PARAMETRES[W_RANGENTITE+1,3]
W_RANGMOISPERIODE=INDEX(PARAMETRES," ",2)
W_PERIODEDEBUT=PARAMETRES[W_RANGMOISPERIODE+1,5]
W_RANGMOISPERIODE=INDEX(PARAMETRES," ",3)
W_PERIODEFIN=PARAMETRES[W_RANGMOISPERIODE+1,5]
W_RANGTRI=INDEX(PARAMETRES," ",4)
W_TRI=PARAMETRES[W_RANGTRI+1,1]
W_RANGEXER=INDEX(PARAMETRES," ",5)
W_EXER=PARAMETRES[W_RANGEXER+1,2]

* INITIALISE LES VARIABLES
LISTEDETAILGENE=""
ENR_TEMPO=""
W_JRNAL=""
W_MOIS=""
W_TOTALRUPT=""
W_TOTALLIGNE=""
W_TOTALGENE=""
K=1
GOSUB 30

* TRAITEMENT

IF W_EXER="N-" THEN
	IF W_TRI=1 THEN
   		EXECUTE 'SSELECT DETAILECRITUREGENEARCHIVE AVEC @ID = "':W_ENTITE:']" AND AVEC 2 <= "':W_PERIODEFIN:'" AND AVEC 2 >= "':W_PERIODEDEBUT:'" PAR Journal PAR 2'
	END ELSE
   		EXECUTE 'SSELECT DETAILECRITUREGENEARCHIVE AVEC @ID = "':W_ENTITE:']" AND AVEC 2 <= "':W_PERIODEFIN:'" AND AVEC 2 >= "':W_PERIODEDEBUT:'" PAR Mois PAR Journal'
	END
END ELSE
	IF W_TRI=1 THEN
   		EXECUTE 'SSELECT DETAILECRITUREGENE AVEC @ID = "':W_ENTITE:']" AND AVEC 2 <= "':W_PERIODEFIN:'" AND AVEC 2 >= "':W_PERIODEDEBUT:'" PAR Journal PAR 2'
	END ELSE
   		EXECUTE 'SSELECT DETAILECRITUREGENE AVEC @ID = "':W_ENTITE:']" AND AVEC 2 <= "':W_PERIODEFIN:'" AND AVEC 2 >= "':W_PERIODEDEBUT:'" PAR Mois PAR Journal'
	END
END

EXECUTE 'SAUVE-LISTE LISTEDETAILGENE'
EXECUTE "LISTE LISTEDETAILGENE" RETURNING W_MSGCODE

IF W_MSGCODE<1>="209" THEN STOP

	IF W_EXER="N-" THEN
		SELECT F.DETAILECRIGENEARCHIVE TO LISTEDETAILGENE
	END ELSE
		SELECT F.DETAILECRIGENE TO LISTEDETAILGENE
	END

W_FINI=0
LOOP
     READNEXT W_CLEGENE FROM LISTEDETAILGENE ELSE W_FINI=1
     UNTIL W_FINI=1 DO

     * LECTURE DETAILECRIGENE
     IF W_EXER="N-" THEN
     	READ ENR_DETAILECRIGENE FROM F.DETAILECRIGENEARCHIVE,W_CLEGENE ELSE ENR_DETAILECRIGENE=""
     END ELSE
     	READ ENR_DETAILECRIGENE FROM F.DETAILECRIGENE,W_CLEGENE ELSE ENR_DETAILECRIGENE=""
     END

     IF W_TRI=1 THEN
          IF W_JRNAL="" THEN W_JRNAL=W_CLEGENE[1,5]
          IF W_JRNAL<>W_CLEGENE[1,5] THEN 
	      M=I
	      GOSUB 10     ;* ECRITURE RUPTURE
	      GOSUB 30     ;* VIDE VARIABLES

	      * AFFECTATION NOUVEAU CODE
	      W_JRNAL=W_CLEGENE[1,5]
	      W_MOIS=""
	  END 
              
          * VERIFICATION MOIS EN COURS
	  W_MOISCOURS=OCONV(ENR_DETAILECRIGENE<2>,"D4/")
	  W_MOISCOURS=W_MOISCOURS[4,2]	
	  IF W_MOIS="" THEN
	      W_MOIS=OCONV(ENR_DETAILECRIGENE<2>,"D4/")
	      W_ANNEE=W_MOIS[7,4]
	      W_MOIS=W_MOIS[4,2]
	  END      
	  IF W_MOIS<>W_MOISCOURS THEN 
	      I=I+1	
	      W_MOIS=W_MOISCOURS
	  END
	  GOSUB 20     ;* MAJ VARIABLE CUMUL	
     END ELSE
          * VERIFICATION MOIS EN COURS
	  W_MOISCOURS=OCONV(ENR_DETAILECRIGENE<2>,"D4/")
	  W_MOISCOURS=W_MOISCOURS[4,2]	

	  IF W_MOIS="" THEN
	      W_MOIS=OCONV(ENR_DETAILECRIGENE<2>,"D4/")
	      W_ANNEE=W_MOIS[7,4]
	      W_MOIS=W_MOIS[4,2]
	  END
	  IF W_MOIS<>W_MOISCOURS THEN
	      M=I
	      GOSUB 10     ;* ECRITURE RUPTURE
	      GOSUB 30     ;* VIDE VARIABLES

	      * AFFECTATION NOUVEAU CODE
	      W_MOIS=OCONV(ENR_DETAILECRIGENE<2>,"D4/")
	      W_ANNEE=W_MOIS[7,4]
	      W_MOIS=W_MOIS[4,2]
	      W_JRNAL=""
	  END

          IF W_JRNAL="" THEN W_JRNAL=W_CLEGENE[1,5]
          IF W_JRNAL<>W_CLEGENE[1,5] THEN
	      I=I+1
	      W_JRNAL=W_CLEGENE[1,5]
	  END
**          GOSUB 60     ;* RECHERCHE JOURNAL
	  GOSUB 20     ;* MAJ VARIABLE CUMUL
     END

REPEAT

M=I
GOSUB 10     ;* ECRITURE RUPTURE
GOSUB 30     ;* VIDE VARIABLES

GOSUB 50     ;* ECRITURE TOTAL GENERAL

WRITE ENR_TEMPO ON F.TEMPO,"CENTRAJOURNAUX"

STOP

******************************************
* ECRITURE RUPTURE

10 *

   FOR J=1 TO M
       ENR_TEMPO<K>=W_TOTALLIGNE<J>
       K=K+1
   NEXT J
   IF W_TRI=1 THEN
       ENR_TEMPO<K,1>="TOTAL ":ENR_JOURNAL<1>
   END ELSE
       ENR_TEMPO<K,1>="TOTAL ":W_MOISCLAIR:" ":W_ANNEE
   END
   ENR_TEMPO<K,2>=W_TOTALRUPT<1,1>
   ENR_TEMPO<K,3>=W_TOTALRUPT<1,2>
   K=K+1

   W_TOTALRUPT=""   

RETURN

******************************************
* MAJ VARIABLE CUMUL

20 *

   GOSUB 40     ;* RECHERCHE LIBELLE MOIS EN CLAIR

   * LECTURE DE JOURNAL
   IF W_EXER="N-" THEN
   	READ ENR_JOURNAL FROM F.JOURNALARCHIVE,W_CLEGENE[1,5] ELSE ENR_JOURNAL=""   
   END ELSE
   	READ ENR_JOURNAL FROM F.JOURNAL,W_CLEGENE[1,5] ELSE ENR_JOURNAL=""   
   END

   IF W_TOTALLIGNE="" THEN
       IF W_TRI=1 THEN
           W_TOTALLIGNE<1>=W_JRNAL[4,2]:" ":ENR_JOURNAL<1>
       END ELSE
	   W_TOTALLIGNE<1>="MOIS DE ":W_MOISCLAIR:" ":W_ANNEE
       END
   END

   IF W_TRI=1 THEN
       W_TOTALLIGNE<I,1>=W_MOISCLAIR:" ":W_ANNEE
   END ELSE
       W_TOTALLIGNE<I,1>=W_JRNAL[4,2]:" ":ENR_JOURNAL<1>
   END
   W_TOTALLIGNE<I,2>=W_TOTALLIGNE<I,2>+ENR_DETAILECRIGENE<6>
   W_TOTALLIGNE<I,3>=W_TOTALLIGNE<I,3>+ENR_DETAILECRIGENE<7>

   W_TOTALRUPT<1,1>=W_TOTALRUPT<1,1>+ENR_DETAILECRIGENE<6>
   W_TOTALRUPT<1,2>=W_TOTALRUPT<1,2>+ENR_DETAILECRIGENE<7>

   W_TOTALGENE<1,1>=W_TOTALGENE<1,1>+ENR_DETAILECRIGENE<6>
   W_TOTALGENE<1,2>=W_TOTALGENE<1,2>+ENR_DETAILECRIGENE<7>

RETURN

******************************************
* VIDE VARIABLES

30 *

   I=2
   M=1
   W_TOTALLIGNE=""
   W_MOISCLAIR=""

RETURN

******************************************
* RECHERCHE MOIS EN CLAIR

40 *

   BEGIN CASE
        CASE W_MOIS="01"
	     W_MOISCLAIR="JANVIER"
        CASE W_MOIS="02"
	     W_MOISCLAIR="FEVRIER"
        CASE W_MOIS="03"
	     W_MOISCLAIR="MARS"
        CASE W_MOIS="04"
	     W_MOISCLAIR="AVRIL"
        CASE W_MOIS="05"
	     W_MOISCLAIR="MAI"
        CASE W_MOIS="06"
	     W_MOISCLAIR="JUIN"
        CASE W_MOIS="07"
	     W_MOISCLAIR="JUILLET"
        CASE W_MOIS="08"
	     W_MOISCLAIR="AOUT"
        CASE W_MOIS="09"
	     W_MOISCLAIR="SEPTEMBRE"
        CASE W_MOIS="10"
	     W_MOISCLAIR="OCTOBRE"
        CASE W_MOIS="11"
	     W_MOISCLAIR="NOVEMBRE"
        CASE W_MOIS="12"
	     W_MOISCLAIR="DECEMBRE"
   END CASE

RETURN

******************************************
* ECRITURE TOTAL GENERAL

50 *

   ENR_TEMPO<K,1>="TOTAL DES MOUVEMENTS EDITES"
   ENR_TEMPO<K,2>=W_TOTALGENE<1,1>
   ENR_TEMPO<K,3>=W_TOTALGENE<1,2>

   W_TOTALGENE=""  

RETURN

******************************************
* RECHERCHE JOURNAL

60 *

   L=2
   LOOP
	UNTIL W_TOTALLIGNE<L,1>[1,2]=W_JRNAL[4,2] OR W_TOTALLIGNE<L,1>="" DO
        L=L+1
   REPEAT

   IF W_TOTALLIGNE<L,1>="" THEN M=M+1
   I=L

RETURN
