Page précédente Table des matières


6. LISTING DES PROGRAMMES. (suite.)

CHX_FIV(ondronana) COMMAND FILE

***********************************************************************************************
Ce programme permet la sélection des fivondronana par faritany et des pays étrangers d'exportation des produits halieutiques.
***********************************************************************************************

* initialisation de la sous-routine.
SET PRINT ON
SET CONSOLE OFF
SET TALK OFF

* sélection des caractères a imprimer.
IF Fiv <> "000"
   ? " | "
   STORE Fiv TO Chx
ELSE
   IF Fiv = "000"
      ? " | "
      STORE Fiv TO Chx
   ELSE
      RELEASE ALL
      RETURN
   ENDIF
ENDIF

* sélection des fivondronana du pays.
DO CASE

* sélection des fivondronana dans le faritany d'Antananarivo.
   CASE Chx ="103'
        ?? "ANTANANARIVO "
   CASE Chx ="104'
        ?? "AMBATOLAMPY "
   CASE Chx ="105'
        ?? "AMBOHIDRATR. "
   CASE Chx ="106'
        ?? "ANDRAMASINA "
   CASE Chx ="107'
        ?? "ANJOZOROBE "
   CASE Chx ="108'
        ?? "ANKAZOBE "
   CASE Chx ="109'
        ?? "ANTANIFOTSY "
   CASE Chx ="110'
        ?? "ANTSIRABE "
   CASE Chx ="112'
        ?? "ARIVONIMAMO "
   CASE Chx ="113'
        ?? "BETAFO "
   CASE Chx ="114'
        ?? "FARATSIHO "
   CASE Chx ="115'
        ?? "FENOARIVO-BE "
   CASE Chx ="116'
        ?? "MANJAKANDRIA. "
   CASE Chx ="117'
        ?? "MIARINARIVO "
   CASE Chx ="118'
        ?? "SOAVINANDRIA. "
   CASE Chx ="119'
        ?? "TSIROANOMAND. "

* sélection des fivondronana dans le faritany d'Antsiranana.

   CASE Chx ="202'
        ?? "ANTSIRANANA "
   CASE Chx ="203'
        ?? "AMBANJA "
   CASE Chx ="204'
        ?? "AMBILOGE "
   CASE Chx ="205'
        ?? "ANDAPA "
   CASE Chx ="206'
        ?? "ANTALAHA "
   CASE Chx ="207'
        ?? "NOSY-BE "
   CASE Chx ="208'
        ?? "SAMBAVA "
   CASE Chx ="209'
        ?? "VOHEMAR "

* sélection des fivondronana dans le faritany de Fianarantsoa.
   CASE Chx ="302'
        ?? "FIANARANTSOA "
   CASE Chx ="303'
        ?? "AMBALAVAO "
   CASE Chx ="304'
        ?? "AMBATOFINAND. "
   CASE Chx ="305'
        ?? "AMBOHIMAHASO. "
   CASE Chx ="306'
        ?? "AMBOSITRA "
   CASE Chx ="307'
        ?? "BEFOTAKA "
   CASE Chx ="308'
        ?? "FANDRIANA "
   CASE Chx ="309'
        ?? "FARAFANSANA "
   CASE Chx ="310'
        ?? "FORT-CARNOT "
   CASE Chx ="311'
        ?? "IAKORA "
   CASE Chx ="312'
        ?? "IFANADIANA "
   CASE Chx ="313'
        ?? "IHOSY "
   CASE Chx ="314'
        ?? "IKALAMAVONY "
   CASE Chx ="315'
        ?? "IVOHIBE "
   CASE Chx ="316'
        ?? "MANAKARA "
   CASE Chx ="317'
        ?? "MANANJARY "
   CASE Chx ="318'
        ?? "MIDONGY SUD "
   CASE Chx ="319'
        ?? "NOSY-VARIKA "
   CASE Chx ="320'
        ?? "VANGAINDRANO "
   CASE Chx ="321'
        ?? "VOHIPENO "
   CASE Chx ="322'
        ?? "VONDROZO "

* sélection des fivondronana dans le faritany de Mahajanga.
   CASE Chx ="402'
        ?? "MAHAJANGA "
   CASE Chx ="403'
        ?? "AMBATO-BOENY "
   CASE Chx ="404'
        ?? "AMBATOMAINTY "
   CASE Chx ="405'
        ?? "ANALALAVA "
   CASE Chx ="406'
        ?? "ANTSALOVA "
   CASE Chx ="407'
        ?? "ANTSOHIHY "
   CASE Chx ="408'
        ?? "BEALANANA "
   CASE Chx ="409'
        ?? "BEFANDRIANA "
   CASE Chx ="410'
        ?? "BESALAMPY "
   CASE Chx ="411'
        ?? "KANDREHO "
   CASE Chx ="412'
        ?? "MAEVATANANA "
   CASE Chx ="413'
        ?? "MAINTIRAND "
   CASE Chx ="414'
        ?? "MAMPIKOMY "
   CASE Chx ="415'
        ?? "MANDRITSARA "
   CASE Chx ="416'
        ?? "MAROVOAY "
   CASE Chx ="417'
        ?? "MITSINJO "
   CASE Chx ="418'
        ?? "MORAFENOBE "
   CASE Chx ="419'
        ?? "PORT-BERGE "
   CASE Chx ="420'
        ?? "SOALALA "
   CASE Chx ="421'
        ?? "TSARATANANA "

* sélection des fivondronana dans le faritany de Toamasina.
   CASE Chx = "502"
?? "TOAMASINA "
   CASE Chx = "503"
?? "AMBATONDRAZA. "
   CASE Chx = "504"
?? "AMPARAFARAVO. "
   CASE Chx = "505"
?? "ANDILAMENA "
   CASE Chx = "506"
?? "ANOSIDE AN'AL "
   CASE Chx = "507"
?? "ANT,MANAMPOT. "
   CASE Chx = "508 "
?? "BRICKAVILLE "
   CASE Chx = "509"
?? "FENERIVE EST "
   CASE Chx = "510"
?? "MAHANORO "
   CASE Chx = "511 "
?? "MANANARA NORD "
   CASE Chx = "512"
?? "MAROANTSETRA "
   CASE Chx = "513"
?? "MAROLAMBO "
   CASE Chx = "514"
?? "MORAMANGA "
   CASE Chx = "515"
?? "SAINTE MARIE "
   CASE Chx = "516"
?? "SOANIER.IVON. "
   CASE Chx = "517"
?? "VATOMANDRY "
   CASE Chx = "518 "
?? "VAVATENINA "

* sélection des fivondronana dans le faritany de Tulear.
   CASE Chx ="602'
        ?? "TOLIARA "
   CASE Chx ="603'
        ?? "AMBOASARY SUD "
   CASE Chx ="604'
        ?? "AMBOVOMBE "
   CASE Chx ="605'
        ?? "AMPANIHY OUES "
   CASE Chx ="606'
        ?? "ANKAZOABO SUD "
   CASE Chx ="607'
        ?? "BEKILY "
   CASE Chx ="608'
        ?? "BELO/TSIRIBI. "
   CASE Chx ="609'
        ?? "BELOHA "
   CASE Chx ="610'
        ?? "BENENITRA "
   CASE Chx ="611'
        ?? "BEROROHA "
   CASE Chx ="612'
        ?? "BETIOKY SUD "
   CASE Chx ="613'
        ?? "BETROKA "
   CASE Chx ="614'
        ?? "TOLAGNARO "
   CASE Chx ="615'
        ?? "MAHABO "
   CASE Chx ="616'
        ?? "MANJA "
   CASE Chx ="617'
        ?? "MIANDRIVAZO "
   CASE Chx ="618'
        ?? "MOROMBE "
   CASE Chx ="619'
        ?? "MORONDAVA "
   CASE Chx ="620'
        ?? "SAKARAHA "
   CASE Chx ="621'
        ?? "TSIHOMBE "

* sélection des pays d'exportation.
   CASE Chx ="702'
        ?? "île REUNION "
   CASE Chx ="703'
        ?? "île MAURICE "
   CASE Chx ="704'
        ?? "îles COMORES "
   CASE Chx ="705'
        ?? "FRANCE "
   CASE Chx ="706'
        ?? "JAPON "
   CASE Chx ="707'
        ?? "R.F.ALLEMAGNE "
   CASE Chx ="708'
        ?? "ANGLETERRE "
   CASE Chx ="709'
        ?? "ITALIE "
   CASE Chx ="710'
        ?? "U.S.A. "
   CASE Chx ="711'
        ?? "HONG-KONG "
   CASE Chx ="712'
        ?? "U.R.S.S. "
   CASE Chx ="713'
        ?? "CANADA "
   CASE Chx ="714'
        ?? "SEYCHELLES "
   CASE Chx ="715'
        ?? "SINGAPOURE "
   CASE Chx ="716'
        ?? "BELGIQUE "
   CASE Chx ="717'
        ?? "MOZAMBIQUE "
   CASE Chx ="718'
        ?? " "
   CASE Chx ="719'
        ?? "AUTRES PAYS "
ENDCASE

* finalisation de la routine.
SET PRINT OFF
SET CONSOLE ON
RETURN
* retour au programme apellant.

LINE COMMAND FILE

****************************************************
Ce programme crée une ligne selon le tableau et l'entête sélectioné.
****************************************************

* initialisation de la routine.
SET PRINT ON
SET CONSOLE OFF
?? CHR(15)

* sélection de la longueur et l'emplacement de la ligne d'entête et des
* tableaux.
IF Reply = "2"
   IF Fiv <> '000'
      IF Part <> '2'
         ? " | "
         ?? REPLICATE("--",110)
      ELSE
         IF Part = "2"
            ? SPACE(25)
            ?? " | "
            ?? REPLICATE("--",72)
         ENDIF
      ENDIF
   ELSE &&if fiv="000'
      IF Part <> '2'
         ? " | "
         ?? REPLICATE("--",114)
      ELSE
         IF Part = "2"
            ? SPACE(25)
            ?? " | "
            ?? REPLICATE("--",72)
         ENDIF
      ENDIF
   ENDIF
ELSE
   IF Reply = "1"
      ? " | "
      IF Fiv <> "000"
         ?? REPLICATE("--",209)
      ELSE
         ?? REPLICATE("--",223)
      ENDIF
   ELSE
      IF Reply = "3"
         ? " | "
         ?? REPLICATE("--",220)
      ELSE
         IF (Reply = "4" .OR. Reply = "6")
            IF Part <> '2'
               ? " | "
               ?? REPLICATE("--",204)
            ELSE
               IF Part ="2'
                  ? " | "
                  ?? REPLICATE("-",188)
               ENDIF
            ENDIF
         ELSE
            IF Reply ="7'
               ? " | "
               ?? REPLICATE("-",224)
            ELSE
               IF Reply ="5'
                  ? " | "
                  ?? REPLICATE("-",224)
               ENDIF &&Reply=5
            ENDIF &&Reply=7
         ENDIF &&Reply=4,6
      ENDIF &&Reply=3,5
ENDIF &&Reply=1
ENDIF &&Reply=2
?? " | "
?? CHR(18)
SET PRINT OFF
RETURN
* retour au programme apellant.

T(otal)_EXPE(dition)_0 COMMAND FILE

************************************************************************************************
Ce programme initialise le traitement des données des cos sur une base annuelle.
A partir du menu l'opérateur peut choisir quel type de résultats sont désirés.
Le programme permet de vérifier si les bases de données sur disquette sont en relation avec la sélection des choix du menu et permet le transfert des données vers le disque dur.
Le programme s'ouvre sur un menu et une des options permet l'estimation du prix moyen au kilo par fivondronana.
************************************************************************************************

* présentation du menu.
SET SAFETY OFF
STORE 1 TO Tour
STORE .T. TO Check

* boucle principale.

DO WHILE Check
   CLEAR
STORE SPACE(1) TO Rep

* présentation du menu.
   @ 2,3 TO 20,78 DOUBLE
   @ 4, 17 SAY " *** TOTAL ANNUEL - EXPEDITION hors FARITANY ***"
   @ 5, 17 SAY "     ---------------------------------------    "
   @ 7, 17 SAY " -1- EXPEDITIONS par NATORE du PRODOIT"
   @ 8, 17 SAY " -2- par MOYEN de CONSERVATION"
   @ 9, 17 SAY " -3- par DESTINATION (Fivondronana)"
   @ 10, 5 SAY " Frapper d'abord <9> si vous passez des expéditions aux exportations "
   @ 12, 17 SAY " -5- EXPORTATIONS par NATURE du PRODUIT"
   @ 13, 17 SAY " -6- par MOYEN DE CONSERVATION"
   @ 14, 17 SAY " -7- par DESTINATION (pays étrangers)"
   @ 16, 17 SAY " -8- PRIX MOYENS au kilo par PRODUIT / FIVONDRONANA"
   @ 18, 17 SAY " -9- <RETOUR> au menu précédent : " GET Rep
   READ

* si le choix est 9 destruction des fichiers et retour au menu principal.

   IF Rep ="9'
      STORE 1 TO Tour
      CLOSE DATABASES

      DELETE FILE C:ZANTA.DBF
      DELETE FILE C:ZANTS.DBF
      DELETE FILE C:ZFIAN.DBF
      DELETE FILE C:ZMAHA.DBF
      DELETE FILE C:ZTOAM.DBF
      DELETE FILE C:ZTULE.DBF
      RELEASE ALL
      RETURN TO MASTER
   ELSE

* tout autre choix se chargera de transférer les données sur disque dur en 6
* fichiers séparés.
* On traite soit les exportations soit les expéditions hors fivondronana
* soit on calcule le prix moyen au kilo par type de produit par fivondronana.
* Le transfert des données se fera donc en conséquence de l'option
* sélectionée.
   IF Tour = 1

	  STORE .T. TO Floppy
      STORE '1' TO Part
      STORE 1 TO Count
      STORE 1 TO Getal

* boucle pour le transfert des données sur disque dur.
* L'insertion des diquettes doit se faire dans l'ordre demandé.

      DO WHILE Floopy
         CLEAR
         @ 5,15 SAY "Insérrez la disquette :<< A:COS _"
         DO CASE
            CASE Count = 1
                  @ 5,48 SAY "ANTA.DBF >>"
            CASE Count = 2
                 @ 5,48 SAY "ANTS.DBF >>"
            CASE Count = 3
                 @ 5,48 SAY "FIAN.DBF >>"
            CASE Count = 4
                 @ 5,48 SAY "MAHA.DBF >>"
            CASE Count = 5
                 @ 5,48 SAY "TOAM.DBF >>"
            CASE Count = 6
                 @ 5,48 SAY "TULE.DBF >>"
         ENDCASE
         ? CHR(7)
         @ 7.15 SAY " puis taper <RETOUR>…"
         @ 3,8 TO 10,62 Double
         WAIT
         CLEAR

* transfert vers disque dur selon l'option choisie.

         IF (Rep < '9')
             IF Count = 1 .AND. FILE ("A:COS_ANTA.DBF")
                STORE .T. TO Floppy
                USE A:COS_ANTA.DBF
                COPY STRUCTURE TO C:ZANTA.DBF
                USE C:ZANTA.DBF
                IF (Rep ="5' .OR. Rep ="6' .OR. Rep ="7')
                    APPEND FROM A:COS_ANTA FOR(DESTIN > "700")
                ELSE
                   IF Rep ="8'
                      APPEND FROM A:COS_ANTA FOR(Valeur > 0)
                   ELSE
                      APPEND FROM A:COS_ANTA FOR(DESTIN < "700")
                   ENDIF
                ENDIF
             ELSE

                IF Count = 2 .AND. FILE ("A:COS_ANTS.DBF")
                   STORE .T. TO Floppy
                   USE A:COS_ANTS.DBF
                   COPY STRUCTURE TO C:ZANTS.DBF
                   USE C:ZANTS.DBF
                   IF (Rep ="5' .OR. Rep ="6' .OR. Rep ="7')
                      APPEND FROM A:COS_ANTS FOR(DESTIN > "700")
                   ELSE
                      IF Rep ="8'
                         APPEND FROM A:COS_ANTS FOR(VALEUR > 0)
                      ELSE
                         APPEND FROM A:COS_ANTS FOR(DESTIN < "700")
                      ENDIF
                  ENDIF
               ELSE

                  IF Count = 3 .AND. FILE ("A:COS_FIAN.DBF")
                     STORE .T. TO Floppy
                     USE A:COS_FIAN.DBF
                     COPY STRUCTURE TO C:ZFIAN.DBF
                     USE C:ZFIAN.DBF
                     IF (Rep ="5' .OR. Rep ="6' .OR. Rep ="7')
                         APPEND FROM A:COS_FIAN FOR(DESTIN > "700")
                     ELSE
                         IF Rep ="8'
                            APPEND FROM A:COS_FIAN FOR VALEUR > 0
                         ELSE
                            APPEND FROM A:COS_FIAN FOR(DESTIN < "700")
                         ENDIF
                      ENDIF
                   ELSE

                      IF Count = 4 .AND. FILE ("A:COS_MAHA.DBF")
                         STORE .T. TO Floppy
                         USE A:COS_MAHA.DBF
                         COPY STRUCTURE TO C:ZMAHA.DBF
                         USE C:ZMAHA.DBF
                         IF (Rep ="5' .OR. Rep ="6' .OR. Rep ="7')
                             APPEND FROM A:COS_MAHA FOR(DESTIN > "700")
                         ELSE
                            IF Rep ="8'
                               APPEND FROM A:COS_MAHA FOR(VALEUR > 0)
                            ELSE
                               APPEND FROM A:COS_MAHA FOR(DESTIN < "700")
                            ENDIF
                         ENDIF
                      ELSE

                         IF Count = 5 .AND. FILE ("A:COS_TOAM.DBF")
                            STORE .T. TO Floppy
                            USE A:COS_TOAM.DBF
                            COPY STRUCTURE TO C:ZTOAM.DBF
                            USE C:ZTOAM.DBF
                            IF (Rep ="5' .OR. Rep ="6' .OR. Rep ="7')
                                APPEND FROM A:COS_TOAM FOR(DESTIN > "700")
                            ELSE
                                IF Rep ="8'
                                   APPEND FROM A:COS_TOAM FOR VALEUR > 0
                                ELSE
                                   APPEND FROM A:COS_TOAM FOR (DESTIN < "700")
                                ENDIF
                             ENDIF
                          ELSE

                             IF Count = 6 .AND. FILE ("A:COS_TULE.DBF")
                                STORE .F. TO Floppy
                                USE A:COS_TULE.DBF
                                COPY STRUCTURE TO C:ZTULE.DBF
                                USE C:ZTULE.DBF
                                IF (Rep ="5' .OR. Rep ="6' .OR. Rep ="7')
                                    APPEND FROM A:COS_TULE FOR(DESTIN > "700")
                                ELSE
                                    IF Rep ="8'
                                       APPEND FROM A:COS_TULE FOR VALEUR > 0
                                    ELSE
                                       APPEND FROM A:COS_TULE FOR(DESTIN < "700")
                                    ENDIF
                                 ENDIF
                              ELSE

							     IF Count < 7
                                    STORE .T. TO Floppy
                                    STORE Count - 1 TO Count
                                    Getal = Getal + 1
                                    IF Getal > 2
                                       CLEAR
                                       @ 10,15 SAY " Merde, Vous êtes CON eu quoi…?"
                                       WAIT
                                       USE
                                       DELETE FILE C:ZANTA.DBF
                                       DELETE FILE C:ZANTS.DBF
                                       DELETE FILE C:ZFIAN.DBF
                                       DELETE FILE C:ZMAHA.DBF
                                       DELETE FILE C:ZTOAM.DBF
                                       DELETE FILE C:ZTULE.DBF
                                       RELEASE ALL
                                       RETURN TO MASTER
                                       ENDIF &&Getal>2
                                       ELSE
                                       STORE .F. TO Floppy
                                       STORE Count + 3 TO Count
                                    ENDIF &&Count<7
                                 ENDIF &&6
                              ENDIF &&5
                           ENDIF &&4
                        ENDIF &&3
                     ENDIF &&2
                  ENDIF &&1
               ENDIF &&Rep=1,2

               STORE (Count + 1) TO Count
               USE &&close

            ENDDO &&floppy
            STORE Tour + 1 TO Tour
         ENDIF &&Tour=1
      ENDIF &&Rep=9

* le programme est dirigé vers des sous-programmes en fonction du choix
* effectué dans le menu (en fonction des tableaux désirés).
   DO CASE

      CASE Rep = "1"

* expédition annuelle à partir d'un FARITANY d'origine, présentation
* des résultats par nature des produits.
   DO T_EXPE_1

	  CASE Rep = "2"

* expédition annuelle à partir d'un faritany d'origine, présentation
* des résultats par moyen de conservation.
   DO T_EXPE_2

      CASE Rep = "3"

* expédition annuelles par destination (fivondronana), présentation
* des résultats par nature du produit et par fivondronana recevant les
* produits.
   DO T_EXPE_3

      CASE Rep = "5"

* exportations annuelles à partir d'un faritany d'origine, présentation
* des résultats par nature des produits.
   DO T_EXPE_1

      CASE Rep = "6"

* exportations annuelles à partir d'un faritany d'origine, présentation
* des résultats par moyen de conservation.
   DO T_EXPE_2

      CASE Rep = "7"

* exportations annuelles à partir d'un faritany d'origine, présentation
* des résultats par moyen de conservation et par pays de destination.
   DO T_EXPO_7

      CASE Rep ="8'

* calcul des prix moyens par type de produit et par fivondronana.
   DO AVRG

      OTHERWISE
      RELEASE ALL
      RETURN
ENDCASE

* finalisation de la boucle uniquement si l'option 9 est choisie.
   IF Rep ="9'
      STORE .F. TO Check
   ELSE
      STORE .T. TO Check
   ENDIF

ENDDO Check

* fin et remise en état d'origine.
USE
SET SAFETY ON
RELEASE ALL
RETURN
* retour au menu principal.

T(otal)_EXPE(dition)_1 COMMAND FILE

***********************************************************************************************
Ce programme calcule par année les expéditions/exportations hors faritany par nature des produits. Les données ont été transférées sur disque dur pour raison de sécurité. Le programme traite soit les expéditions soit exportations.
Les résultats sont présentés annuellement par faritany. L'opérateur doit inserrer successivement les 6 disquettes de base de donnée afin de consstituer des fichiers sur le disque dur si il passe des expéditions aux exportations.
***********************************************************************************************

* initialisation du sous programme.
SET CONSOLE OFF
SET TALK OFF
CLEAR
STORE '1' TO Part

* impression de l'entête.
DO SET_2_UP
DO LINE_2
STORE 1 TO Count
STORE .T. TO Process

* boucle principale.
DO WHILE Process

* mise à zéro des variables de travail.
   STORE 0 TO T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18
   STORE 0 TO T19,T20,Z19,Z20
   STORE 0 TO Z1,Z2,Z3,Z4,Z5,Z6,Z7,Z8,Z9,Z10,Z11,Z12,Z13,Z14,Z15,Z16,Z17,Z18

* boucle des faritany.
  DO WHILE Count < 7

* sélection des fichiers à utiliser à chaque passage.
     DO CASE
        CASE Count = 1
             USE C:ZANTA.DBF
        CASE Count = 2
             USE C:ZANTS.DBF
        CASE Count = 3
             USE C:ZFIAN.DBF
        CASE Count = 4
             USE C:ZMAHA.DBF
        CASE Count = 5
             USE C:ZTOAM.DBF
        CASE Count = 6
             USE C:ZTULE.DBF
     ENDCASE

* mise à zéro des variables de travail.

STORE 0 TO Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q12,Q13,Q14,Q15,Q16,Q17,Q18
STORE 0 TO Q19,Q20,V1,V2,V3,V4,V5,V6,V7,V8,V9,V10,V11,V12,V13,V14,V15,V16
     STORE 0 TO V17,V18,V19,V20

* calcul des résultats.
     SUM QUANTITE,VALEUR TO Q1,V1 FOR (NAT_PROD ="01')
     SUM QUANTITE,VALEUR TO Q2,V2 FOR (NAT_PROD ="02')
     SUM QUANTITE,VALEUR TO Q3,V3 FOR (NAT_PROD ="03')
     SUM QUANTITE,VALEUR TO Q4,V4 FOR (NAT_PROD ="04')
     SUM QUANTITE,VALEUR TO Q5,V5 FOR (NAT_PROD ="05')
     SUM QUANTITE,VALEUR TO Q6,V6 FOR (NAT_PROD ="06')
     SUM QUANTITE,VALEUR TO Q7,V7 FOR (NAT_PROD ="07')
     SUM QUANTITE,VALEUR TO Q8,V8 FOR (NAT_PROD ="08')
     SUM QUANTITE,VALEUR TO Q9,V9 FOR (NAT_PROD ="09')
     SUM QUANTITE,VALEUR TO Q10,V10 FOR (NAT_PROD ="10')
     SUM QUANTITE,VALEUR TO Q11,V11 FOR (NAT_PROD ="11')
     SUM QUANTITE,VALEUR TO Q12,V12 FOR (NAT_PROD ="12')
     SUM QUANTITE,VALEUR TO Q13,V13 FOR (NAT_PROD ="13')
     SUM QUANTITE,VALEUR TO Q14,V14 FOR (NAT_PROD ="14')
     SUM QUANTITE,VALEUR TO Q15,V15 FOR (NAT_PROD ="15')
     SUM QUANTITE,VALEUR TO Q16,V16 FOR (NAT_PROD ="16')
     SUM QUANTITE,VALEUR TO Q17,V17 FOR (NAT_PROD ="17')
     SUM QUANTITE,VALEUR TO Q18,V18 FOR (NAT_PROD ="18')
     SUM QUANTITE,VALEUR TO Q19,V19 FOR (NAT_PROD ="19')
     SUM QUANTITE,VALEUR TO Q20,V20
     USE &&close

* utilisation des variables de travail pour addition finale plus rapide.
     STORE Q1 + T1 TO T1
     STORE Q2 + T2 TO T2
     STORE Q3 + T3 TO T3
     STORE Q4 + T4 TO T4
     STORE Q5 + T5 TO T5
     STORE Q6 + T6 TO T6
     STORE Q7 + T7 TO T7
     STORE Q8 + T8 TO T8
     STORE Q9 + T9 TO T9
     STORE Q10 + T10 TO T10
     STORE Q11 + T11 TO T11
     STORE Q12 + T12 TO T12
     STORE Q13 + T13 TO T13
     STORE Q14 + T14 TO T14
     STORE Q15 + T15 TO T15
     STORE Q16 + T16 TO T16
     STORE Q17 + T17 TO T17
     STORE Q18 + T18 TO T18
     STORE Q19 + T19 TO T19
     STORE Q20 + T20 TO T20

     STORE V1 + Z1 TO Z1
     STORE V2 + Z2 TO Z2
     STORE V3 + Z3 TO Z3
     STORE V4 + Z4 TO Z4
     STORE V5 + Z5 TO Z5
     STORE V6 + Z6 TO Z6
     STORE V7 + Z7 TO Z7
     STORE V8 + Z8 TO Z8
     STORE V9 + Z9 TO Z9
     STORE V10 + Z10 TO Z10
     STORE V11 + Z11 TO Z11
     STORE V12 + Z12 TO Z12
     STORE V13 + Z13 TO Z13
     STORE V14 + Z14 TO Z14
     STORE V15 + Z15 TO Z15
     STORE V16 + Z16 TO Z16
     STORE V17 + Z17 TO Z17
     STORE V18 + Z18 TO Z18
     STORE V19 + Z19 TO Z19
     STORE V20 + Z20 TO Z20

* impression des résultats et du nom du faritany.

     SET PRINT ON
     ?? CHR(15)
     DO CHX FAR
     SET PRINT ON
     SET CONSOLE OFF
     ?? CHR(15)

?? " Quantité | "+STR(Q1,8)+STR(Q2,8)+STR(Q3,8)+" | "+STR(Q4,8)+STR(Q5,9);
+STR(Q6,8)+" | "+STR(Q7,8)+STR(Q8,8)+STR(Q9,8)+" | "+STR(Q10,8)+STR(Q11,8);
+" | "+STR(Q12,8)+" | "+STR(Q13,8)+" | "+STR(Q14,8)+" | "+STR(Q15,8)+" | "
?? STR(Q16,8)+" | "+STR(Q17,8)+" | "+STR(Q18,8)+" | "+STR(Q19,8)+" | ";
+STR(Q20,14)+" | "

? "|"+SPACE(16)+"Valeur|"+STR(V1/1000,8)+STR(V2/1000,8)+STR(V3/1000,8)+" | ";
+STR(V4/1000,8)+STR(V5/1000,9)+STR(V6/1000,8)+" | "+STR(V7/1000,8);
+STR(V8/1000,8)+STR(V9/1000,8)+" | "+STR(V10/1000,8)+STR(V11/1000,8)+" | "
?? STR(V12/1000,8)+" | "+STR(V13/1000,8)+" | "+STR(V14/1000,8)+" | ";
+STR(V15/1000,8)+" | "+STR(V16/1000,8)+" | "+STR(V17/1000,8)+" | ";
+STR(V18/1000,8)+" | "+STR(V19/1000,8)+" | "+STR(V20/1000,8)+" | ";
     SET PRINT OFF
     DO LINE_2
     STORE Count + 1 TO Count

* arrangement pour terminer la routine.

     IF Count < 7
        STORE .T. TO Process
     ELSE
        STORE .F. TO Process
     ENDIF
  ENDDO &&Count

* fin de la boucle des faritany.

* impression des résultats totaux.
  DO LINE_2
  SET PRINT ON
  ?? CHR(15)
  ? " | TOTAUX"

?? SPACE(6)+"Quantité | "+STR(T1,8)+STR(T2,8)+STR(T3,8)+" | "+STR(T4,8);
+STR(T5,9)+STR(T6,8)+" | "+STR(T7,8)+STR(T8,8)+STR(T9,8)+" | "+STR(T10,8);
+STR(T11,8)+" | "+STR(T12,8)+" | "+STR(T13,8)+" | "+STR(T14,8)+" | "
?? STR(T15,8)+" | "+STR(T16,8)+" | "+STR(T17,8)+" | "+STR(T18,8)+" | ";
+STR(T19,8)+" | "+STR(T20,14)+" | "

? " |"+SPACE(16)+"Valeur|"+STR(Z1/1000,8)+STR(Z2/1000,8)+STR(Z3/1000,8)+" | ";
+STR(Z4/1000,8)+STR(Z5/1000,8)+STR(Z6/1000,8)+" | "+STR(Z7/1000,8);
+STR(Z8/1000,8)+STR(Z9/1000,8)+" | "+STR(Z10/1000,8)+STR(Z11/1000,8)+" | "
?? STR(Z12/1000,8)+" | "+STR(Z13/1000,8)+" | "+STR(Z14/1000,8)+" | ";
+STR(Z15/1000,8)+" | "+STR(Z16/1000,8)+" | "+STR(Z17/1000,8)+" | ";
+STR(Z18/1000,8)+" | "+STR(Z19/1000,8)+" | "+STR(Z20/1000,14)+" | "
  SET PRINT OFF
  DO LINE_2
ENDDO &&Process
* fin de la boucle principale.

* finalisation du sous-programme.
SET PRINT ON
EJECT
SET PRINT OFF
USE
RELEASE ALL
RETURN
* retour au menu.

T(otal)_EXPE(dition)_2 COMMAND FILE

**********************************************************************************************
Ce programme calcule par année les expéditions/exportations par faritany et par méthode de conservation des produits. Les données ont été transférées sur disgue dur pour raison de sécurité. Le programme traite soit les EXPEDITIONS soit les EXPORTATIONS.
Les résultats sont présentés annuellement par faritany. L'opérateur doit inserrer successivement les 6 disquettes de base de donnée afin de consstituer des fichiers sur le disque dur si il passe des expéditions aux exportations.
**********************************************************************************************

* initialisation du sous-programme.
SET CONSOLE OFF
SET TALK OFF
CLEAR
STORE '1' TO Part
STORE 1 TO Count

* impression de l'entête.
DO SET 2 UP
DO LINE 2
SET PRINT OFF

* boucle principale.
DO WHILE Count < 16

* calcul des résultats de la première partie du tableau.
   IF PART ="1'
      STORE 1 TO Count
      STORE .T. TO Process

* boucle principale de la première partie du tableau.
      DO WHILE Process

* mise à zéro des variables de travail.
   STORE 0 TO T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18
   STORE 0 TO T19,T20,T21,T22,Z19,Z20,Z21,Z22
   STORE 0 TO Z1,Z2,Z3,Z4,Z5,Z6,Z7,Z8,Z9,Z10,Z11,Z12,Z13,Z14,Z15,Z16,Z17,Z18

* boucle des faritany.
   DO WHILE Count < 7

* sélection des fichiers à utiliser à chaque passage.
      DO CASE
         CASE Count = 1
              USE C:ZANTA.DBF
         CASE Count = 2
              USE C:ZANTS.DBF
         CASE Count = 3
              USE C:ZFIAN.DBF
         CASE Count = 4
              USE C:ZMAHA.DBF
         CASE Count = 5
              USE C:ZTOAM.DBF
         CASE Count = 6
              USE C:ZTULE.DBF
      ENDCASE

* mise à zéro des variables de travail.
   STORE 0 TO Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q12,Q13,Q14,Q15,Q16,Q17,Q18
   STORE 0 TO Q19,Q20,Q21,Q22,V1,V2,V3,V4,V5,V6,V7,V8,V9,V10,V11,V12,V13,V14
      STORE 0 TO V15,V16,V17,V18,V19,V20,V21,V22
* calcul des résultats - première partie du tableau.
      SUM QUANTITE,VALEUR TO Q1,V1 FOR (CONSERV ="01')
      SUM QUANTITE,VALEUR TO Q2,V2 FOR (CONSERV ="02')
      SUM QUANTITE,VALEUR TO Q3,V3 FOR (CONSERV ="03')
      SUM QUANTITE,VALEUR TO Q4,V4 FOR (CONSERV ="04')
      SUM QUANTITE,VALEUR TO Q5,V5 FOR (CONSERV ="05')
      SUM QUANTITE,VALEUR TO Q6,V6 FOR (CONSERV ="06')
      SUM QUANTITE,VALEUR TO Q7,V7 FOR (CONSERV ="07')
      SUM QUANTITE,VALEUR TO Q8,V8 FOR (CONSERV ="08')
      SUM QUANTITE,VALEUR TO Q9,V9 FOR (CONSERV ="09')
      SUM QUANTITE,VALEUR TO Q10,V10 FOR (CONSERV ="10')
      SUM QUANTITE,VALEUR TO Q11,V11 FOR (CONSERV ="11')
      SUM QUANTITE,VALEUR TO Q12,V12 FOR (CONSERV ="12')
      SUM QUANTITE,VALEUR TO Q13,V13 FOR (CONSERV ="13')
      SUM QUANTITE,VALEUR TO Q14,V14 FOR (CONSERV ="14')
      SUM QUANTITE,VALEUR TO Q15,V15 FOR (CONSERV ="15')
      SUM QUANTITE,VALEUR TO Q16,V16 FOR (CONSERV ="16')
      SUM QUANTITE,VALEUR TO Q17,V17 FOR (CONSERV ="17')
      SUM QUANTITE,VALEUR TO Q18,V18 FOR (CONSERV ="18')
      SUM QUANTITE,VALEUR TO Q19,V19 FOR (CONSERV ="19')
      SUM QUANTITE,VALEUR TO Q17,V17 FOR (CONSERV ="20')
      SUM QUANTITE,VALEUR TO Q18,V18 FOR (CONSERV ="21')
      SUM QUANTITE,VALEUR TO Q19,V19 FOR (CONSERV ="22')
      USE &&close

* utilisation de variables pour la sommation plus rapide des résultats totaux.
      STORE Q1 + T1 TO T1
      STORE Q2 + T2 TO T2
      STORE Q3 + T3 TO T3
      STORE Q4 + T4 TO T4
      STORE Q5 + T5 TO T5
      STORE Q6 + T6 TO T6
      STORE Q7 + T7 TO T7
      STORE Q8 + T8 TO T8
      STORE Q9 + T9 TO T9
      STORE Q10 + T10 TO T10
      STORE Q11 + T11 TO T11
      STORE Q12 + T12 TO T12
      STORE Q13 + T13 TO T13
      STORE Q14 + T14 TO T14
      STORE Q15 + T15 TO T15
      STORE Q16 + T16 TO T16
      STORE Q17 + T17 TO T17
      STORE Q18 + T18 TO T18
      STORE Q19 + T19 TO T19
      STORE Q20 + T20 TO T20
      STORE Q21 + T21 TO T21
      STORE Q22 + T22 TO T22

      STORE V1 + Z1 TO Z1
      STORE V2 + Z2 TO Z2
      STORE V3 + Z3 TO Z3
      STORE V4 + Z4 TO Z4
      STORE V5 + Z5 TO Z5
      STORE V6 + Z6 TO Z6
      STORE V7 + Z7 TO Z7
      STORE V8 + Z8 TO Z8
      STORE V9 + Z9 TO Z9
      STORE V10 + Z10 TO Z10
      STORE V11 + Z11 TO Z11
      STORE V12 + Z12 TO Z12
      STORE V13 + Z13 TO Z13
      STORE V14 + Z14 TO Z14
      STORE V15 + Z15 TO Z15
      STORE V16 + Z16 TO Z16
      STORE V17 + Z17 TO Z17
      STORE V18 + Z18 TO Z18
      STORE V19 + Z19 TO Z19
      STORE V20 + Z20 TO Z20
      STORE V21 + Z21 TO Z21
      STORE V22 + Z22 TO Z22

* impression du nom du faritany.
      SET PRINT ON
      ?? CHR(15)
      DO CHX_FAR

* impression des résultats de la première partie du tableau par faritany.

      SET PRINT ON
      SET CONSOLE OFF
      ?? CHR(15)

?? "Q |"+STR(Q1,8)+STR(Q2,8)+STR(Q3,8)+STR(Q4,8)+STR(Q5,8)+STR(Q6,8);
+STR(Q7,8)+STR(Q8,8)+STR(Q9,8)+STR(Q10,8)+" | "+STR(Q11,8)+STR(Q12,8);
+STR(Q13,8)+STR(Q14,8)+STR(Q15,8)
?? STR(Q16,8)+STR(Q17,8)+STR(Q18,8)+" | "+STR(Q19,8)+STR(Q20,8)+STR(Q21,8);
+STR(Q22,8)+" | "

? SPACE(10)+" | "+SPACE(14)+"V |"+STR(V1/1000,8)+STR(V2/1000,8)+STR(V3/1000,8);
+STR(V4/1000,8)+STR(V5/1000,8)+STR(V6/1000,8)+STR(V7/1000,8)+STR(V8/1000,8);
+STR(V9/1000,8)
?? STR(V10/1000,8)+" | "+STR(V11/1000,8)+STR(V12/1000,8)+STR(V13/1000,8);
+STR(V14/1000,9)+STR(V15/1000,8)+STR(V16/1000,8)+STR(V17/1000,8);
+STR(V18/1000,8)
?? " | "+STR(V19/1000,8)+STR(V20/1000,8)+STR(V21/1000,8)+STR(V22/1000,8)+" | "
      DO LINE 2
      SET PRINT OFF
      STORE Count + 1 TO Count

* arrangement pour terminer la routine.
      IF Count < 7
         STORE .T. TO Process
      ELSE
         STORE Count + 1 TO Count
         STORE .F. TO Process
      ENDIF
   ENDDO &&Count <7
* fin de la boucle des faritany.

* impression des résultats totaux de la première partie du tableau.
      DO LINE 2
      SET PRINT ON
      ?? CHR(15)
      ? SPACE(10)
      ?? "| TOTAUX "

?? "Quantitél"+STR(T1,8)+STR(T2,8)+STR(T3,8)+STR(T4,8)+STR(T5,8);
+STR(T6,8)+STR(T7,8)+STR(T8,8)+STR(T9,8)+STR(T10,8)+" | "+STR(T11,8);
+STR(T12,8)+STR(T13,8)+STR(T14,8)+STR(T15,8)+STR(T16,8)+STR(T17,8)
?? STR(T18,8)+" | "+STR(T19,8)+STR(T20,8)+STR(T21,8)+STR(T22,8)+" | "

? SPACE(10)+" | "+SPACE(9)+"Valeur |"+STR(Z1/1000,8)+STR(Z2/1000,8);
+STR(Z3/1000,8)+STR(Z4/1000,8)+STR(Z5/1000,8)+STR(Z6/1000,8);
+STR(Z7/1000,8)+STR(Z8/1000,8)+STR(Z9/1000,8)
?? STR(Z10/1000,8)+" | "+STR(Z11/1000,8)+STR(Z12/1000,8)+STR(Z13/1000,8);
+STR(Z14/1000,9)+STR(Z15/1000,8)+STR(Z16/1000,8)+STR(Z17/1000,8);
+STR(Z18/1000,8)+" | "+STR(Z19/1000,8)
?? STR(Z20/1000,8)+STR(Z21/1000,8)+STR(Z22/1000,8)+" | "
      SET PRINT OFF
      DO LINE_2

* arrangements pour passer aux calculs de la seconde partie du tableau.
      STORE '2' TO Part
      STORE 1 TO Count
      STORE .F. TO Process
   ENDDO &&Process

* fin de la première partie du tableau.

  ELSE

* seconde partie du tableau.
      IF Part ="2'
         SET PRINT ON
         EJECT
         SET PRINT OFF

* impression de l'entête.
         DO SET 2 UP
         DO LINE_2

         STORE 1 TO Count
         STORE .T. TO Process

* boucle principale de la seconde partie du tableau.
         DO WHILE Process

* mise à zéro des variables de travail.
   STORE 0 TO T23,T24,T25,T26,T27,T28,T29,T30,T31,T32,T33,T34,T35,T36,T37
   STORE 0 TO T38,Z23,Z24,Z25,Z26,Z27,Z28,Z29,Z30,Z31,Z32,Z33,Z34
   STORE 0 TO Z35,Z36,Z37,Z38

* boucle des faritany.
   DO WHILE Count < 7

* sélection des fichiers à chaque passage.
      DO CASE
         CASE Count = 1
              USE C:ZANTA.DBF
         CASE Count = 2
              USE C:ZANTS.DBF
         CASE Count = 3
              USE C:ZFIAN.DBF
         CASE Count = 4
              USE C:ZMAHA.DBF
         CASE Count = 5
              USE C:ZTOAM.DBF
         CASE Count = 6
              USE C:ZTULE.DBF
      ENDCASE

* mise à zéro des variables de travail.
   STORE 0 TO Q23,Q24,Q25,Q26,Q27,Q28,Q29,Q30,Q31,Q32,Q33,Q34,Q35,Q36,Q37,Q38
   STORE 0 TO V23,V24,V25,V26,V27,V28,V29,V30,V31,V32,V33,V34,V35,V36,V37,V38

* calcul des résultats de la seconde partie du tableau.
   SUM QUANTITE,VALEUR TO Q23,V23 FOR (CONSERV ="23')
   SUM QUANTITE,VALEUR TO Q24,V24 FOR (CONSERV ="24')
   SUM QUANTITE,VALEUR TO Q25,V25 FOR (CONSERV ="25')
   SUM QUANTITE,VALEUR TO Q26,V26 FOR (CONSERV ="26')
   SUM QUANTITE,VALEUR TO Q27,V27 FOR (CONSERV ="27')
   SUM QUANTITE,VALEUR TO Q28,V28 FOR (CONSERV ="28')
   SUM QUANTITE,VALEUR TO Q29,V29 FOR (CONSERV ="29')
   SUM QUANTITE,VALEUR TO Q30,V30 FOR (CONSERV ="30')
   SUM QUANTITE,VALEUR TO Q31,V31 FOR (CONSERV ="31')
   SUM QUANTITE,VALEUR TO Q32,V32 FOR (CONSERV ="32')
   SUM QUANTITE,VALEUR TO Q33,V33 FOR (CONSERV ="33')
   SUM QUANTITE,VALEUR TO Q34,V34 FOR (CONSERV ="34')
   SUM QUANTITE,VALEUR TO Q35,V35 FOR (CONSERV ="35')
   SUM QUANTITE,VALEUR TO Q36,V36 FOR (CONSERV ="36')
   SUM QUANTITE,VALEUR TO Q37,V37 FOR (CONSERV ="37')
   SUM QUANTITE,VALEUR TO Q38,V38
   USE &&close

* utilisation de variables pour une sommation plus rapide des totaux.
   STORE Q23 + T23 TO T23
   STORE Q24 + T24 TO T24
   STORE Q25 + T25 TO T25
   STORE Q26 + T26 TO T26
   STORE Q27 + T27 TO T27
   STORE Q28 + T28 TO T28
   STORE Q29 + T29 TO T29
   STORE Q30 + T30 TO T30
   STORE Q31 + T31 TO T31
   STORE Q32 + T32 TO T32
   STORE Q33 + T33 TO T33
   STORE Q34 + T34 TO T34
   STORE Q35 + T35 TO T35
   STORE Q36 + T36 TO T36
   STORE Q37 + T37 TO T37
   STORE Q38 + T38 TO T38

   STORE V23 + Z23 TO Z23
   STORE V24 + Z24 TO Z24
   STORE V25 + Z25 TO Z25
   STORE V26 + Z26 TO Z26
   STORE V27 + Z27 TO Z27
   STORE V28 + Z28 TO Z28
   STORE V29 + Z29 TO Z29
   STORE V30 + Z30 TO Z30
   STORE V31 + Z31 TO Z31
   STORE V32 + Z32 TO Z32
   STORE V33 + Z33 TO Z33
   STORE V34 + Z34 TO Z34
   STORE V35 + Z35 TO Z35
   STORE V36 + Z36 TO Z36
   STORE V37 + Z37 TO Z37
   STORE V38 + Z38 TO Z38

* impression du nom du faritany.
   SET PRINT ON
   ?? CHR(15)
   DO CHX_FAR

* impression des résultats par faritany pour la seconde partie du tableau.
   SET PRINT ON
   SET CONSOLE OFF
   ?? CHR(15)

?? " Q |"+STR(Q23,8)+STR(Q24,8)+STR(Q25,8)+STR(Q26,8)+" | "+STR(Q27,8);
+STR(Q28,8)+STR(Q29,8)+" | "+STR(Q30,8)+" | "+STR(Q31,8)+" | "+STR(Q32,8);
+" | "+STR(Q33,8)+STR(Q34,8)+" | "+STR(Q35,8)+" | "
?? STR(Q36,8)+" | "+STR(Q37,8)+" | "+STR(Q38,15)+" | "

? SPACE(10)+" | "+SPACE(14)+"V |"+STR(V23/1000,8)+STR(V24/1000,8);
+STR(V25/1000,8)+STR(V26/1000,8)+" | "+STR(V27/1000,8)+STR(V28/1000,8);
+STR(V29/1000,8)+" | "+STR(V30/1000,8)+" | "+STR(V31/1000,8)+" | "
?? STR(V32/1000,8)+" | "+STR(V33/1000,8)+STR(V34/1000,8)+" | ";
+STR(V35/1000,8)+" | "+STR(V36/1000,8)+" | "+STR(V37/1000,8)+" | ";
+STR(V38/1000,15)+" | "
   DO LINE 2
   SET PRINT OFF
   STORE Count + 1 TO Count

* arrangement pour terminer la routine.

   IF Count < 7
      STORE .T. TO Process
   ELSE
      STORE .F. TO Process
   ENDIF
ENDDO &&Count <7

* fin de la boucle des faritany.

* impression des résultats totaux pour la seconde partie du tableau.
   DO LINE 2
   SET PRINT ON
   ?? CHR(15)
   ? SPACE(10)
   ?? "| TOTAUX"

?? "Quantité|"+STR(T23,8)+STR(T24,8)+STR(T25,8)+STR(T26,8)+" | "+STR(T27,8);
+STR(T28,8)+STR(T29,8)+" | "STR(T30,8)+" | "+STR(T31,8)+" | "+STR(T32,8);
+" | "+STR(T33,8)+STR(T34,8)+" | "+STR(T35,8)+" | "
?? STR(T36,8)+" | "+STR(T37,8)+"||"+STR(T38,15)+" | "

? SPACE(10)+" | "+SPACE(10)+"Valeur|"+STR(Z23/1000,8)+STR(Z24/1000,8);
+STR(Z25/1000,8)+STR(Z26/1000,8)+" | "+STR(Z27/1000,8)+STR(Z28/1000,8);
+STR(Z29/1000,8)+" | "+STR(Z30/1000,8)+" | "+STR(Z31/1000,8)+" | "
?? STR(Z32/1000,8)+" | "+STR(Z33/1000,8)+STR(Z34/1000,8)+" | ";
+STR(Z35/1000,8)+" | "+STR(Z36/1000,8)+" | "+STR(Z37/1000,8)+"||";
+STR(Z38/1000,15)+" | "
   SET PRINT OFF
   DO LINE_2
   STORE Count + 15 TO Count

ENDO &&Process
* fin de la boucle principale de la seconde partie du tableau.

   ENDIF &&Part="2'
 ENDIF &&Part="1'
ENDDO &&Count<16
* fin de la boucle principale.

* remise en état et retour au menu.
SET PRINT ON
EJECT
SET PRINT OFF
USE
RELEASE ALL
RETURN
* retour au menu.

T(otal)_EXPE(dition)_3 COMMAND FILE

*************************************************************************************************
Ce programme calcule par année les expéditions hors faritany par nature des produits et présente la ventilation des produits par faritany d'origine et de destination.
Les données ont été transférées sur disque dur pour raison de sécurité.
Les résultats sont présentés annuellement par faritany.
*************************************************************************************************

* initialisation du sous-programme.
SET CONSOLE OFF
SET TALK OFF
CLEAR
STORE '1' TO Part
STORE 1 TO Teller, Comp, Count
STORE .T. TO Process
USE C: ZANTA.DBF
COPY STRUCTURE TO C:ZTOTAL
USE

* boucle principale.
DO WHILE Process

* mise à zéro des variables de travail.
   STORE 0 TO T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18
   STORE 0 TO T19,T20,Z19,Z20
   STORE 0 TO Z1,Z2,Z3,Z4,Z5,Z6,Z7,Z8,Z9,Z10,Z11,Z12,Z13,Z14,Z15,Z16,Z17,Z18

* boucle des faritany.
   DO WHILE Teller < 7

* impression de l'entête.
   DO SET_2 UP
   DO LINE_2

* sélection des fichiers à chaque passage.
   DO CASE
      CASE Count = 1
           STORE "C:ZANTA" TO Base
      CASE Count = 2
           STORE "C:ZANTS" TO Base
      CASE Count = 3
           STORE "C:ZFIAN" TO Base
      CASE Count = 4
           STORE "C:ZMAHA" TO Base
      CASE Count = 5
           STORE "C:ZTOAM" TO Base
      CASE Count = 6
           STORE "C:ZTULE" TO Base
   ENDCASE

* boucle de faritany.
   DO WHILE COMP < 7

* sélection des fivondranana à chaque passage.
   DO CASE
      CASE Teller = 1
           STORE '102' TO X
           STORE '120' TO Y
      CASE Teller = 2
           STORE '201' TO X
           STORE '210' TO Y
      CASE Teller = 3
           STORE '301' TO X
           STORE '323' TO Y
      CASE Teller = 4
           STORE '401' TO X
           STORE '422' TO Y
      CASE Teller = 5
           STORE '501' TO X
           STORE '519' TO Y
      CASE Teller = 6
           STORE '601' TO X
           STORE '622' TO Y
   ENDCASE

* calcul des résultats du tableau.
   USE C:ZTOTAL.DBF
   APPEND FROM &Base FOR (DESTIN > X .AND. DESTIN < Y)
   USE
   USE C: ZTOTAL

STORE 0 TO Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q12,Q13,Q14,Q15,Q16,Q17,Q18
STORE 0 TO Q19,Q20,V1,V2,V3,V4,V5,V6,V7,V8,V9,V10,V11,V12,V13,V14,V15,V16
STORE 0 TO V17,V18,V19,V20

   SUM QUANTITE, VALEUR TO Q1, V1 FOR (NAT_PROD ="01')
   SUM QUANTITE, VALEUR TO Q2, V2 FOR (NAT_PROD ="02')
   SUM QUANTITE, VALEUR TO Q3, V3 FOR (NAT_PROD ="03')
   SUM QUANTITE, VALEUR TO Q4, V4 FOR (NAT_PROD ="04')
   SUM QUANTITE, VALEUR TO Q5, V5 FOR (NAT_PROD ="05')
   SUM QUANTITE, VALEUR TO Q6, V6 FOR (NAT_PROD ="06')
   SUM QUANTITE, VALEUR TO Q7, V7 FOR (NAT_PROD ="07')
   SUM QUANTITE, VALEUR TO Q8, V8 FOR (NAT_PROD ="08')
   SUM QUANTITE, VALEUR TO Q9, V9 FOR (NAT_PROD ="09')
   SUM QUANTITE, VALEUR TO Q10, V10 FOR (NAT_PROD ="10')
   SUM QUANTITE, VALEUR TO Q11, V11 FOR (NAT_PROD ="11')
   SUM QUANTITE, VALEUR TO Q12, V12 FOR (NAT_PROD ="12')
   SUM QUANTITE, VALEUR TO Q13, V13 FOR (NAT_PROD ="13')
   SUM QUANTITE, VALEUR TO Q14, V14 FOR (NAT_PROD ="14')
   SUM QUANTITE, VALEUR TO Q15, V15 FOR (NAT_PROD ="15')
   SUM QUANTITE, VALEUR TO Q16, V16 FOR (NAT_PROD ="16')
   SUM QUANTITE, VALEUR TO Q17, V17 FOR (NAT_PROD ="17')
   SUM QUANTITE, VALEUR TO Q18, V18 FOR (NAT_PROD ="18')
   SUM QUANTITE, VALEUR TO Q19, V19 FOR (NAT_PROD ="19')
   SUM QUANTITE, VALEUR TO Q20, V20
   DELETE ALL
   PACK
   USE &&close

* utilisation de variables pour sommation plus rapide des résultats totaux.
   STORE Q1 + T1 TO T1
   STORE Q2 + T2 TO T2
   STORE Q3 + T3 TO T3
   STORE Q4 + T4 TO T4
   STORE Q5 + T5 TO T5
   STORE Q6 + T6 TO T6
   STORE Q7 + T7 TO T7
   STORE Q8 + T8 TO T8
   STORE Q9 + T9 TO T9
   STORE Q10 + T10 TO T10
   STORE Q11 + T11 TO T11
   STORE Q12 + T12 TO T12
   STORE Q13 + T13 TO T13
   STORE Q14 + T14 TO T14
   STORE Q15 + T15 TO T15
   STORE Q16 + T16 TO T16
   STORE Q17 + T17 TO T17
   STORE Q18 + T18 TO T18
   STORE Q19 + T19 TO T19
   STORE Q20 + T20 TO T20

   STORE V1 + Z1 TO Z1
   STORE V2 + Z2 TO Z2
   STORE V3 + Z3 TO Z3
   STORE V4 + Z4 TO Z4
   STORE V5 + Z5 TO Z5
   STORE V6 + Z6 TO Z6
   STORE V7 + Z7 TO Z7
   STORE V8 + Z8 TO Z8
   STORE V9 + Z9 TO Z9
   STORE V10 + Z10 TO Z10
   STORE V11 + Z11 TO Z11
   STORE V12 + Z12 TO Z12
   STORE V13 + Z13 TO Z13
   STORE V14 + Z14 TO Z14
   STORE V15 + Z15 TO Z15
   STORE V16 + Z16 TO Z16
   STORE V17 + Z17 TO Z17
   STORE V18 + Z18 TO Z18
   STORE V19 + Z19 TO Z19
   STORE V20 + Z20 TO Z20

* impression du nom du faritany.
   SET PRINT ON
   ?? CHR(15)
   DO CHX_FAR

* impression des résultats par faritany.
   SET PRINT ON
   SET CONSOLE OFF
   ?? CHR(15)

?? " Quantité"+STR(Q1,8)+STR(Q2,8)+STR(Q3,8)+" | "+STR(Q4,8)+STR(Q5,8);
+STR(Q6,8)+" | "+STR(Q7,8)+STR(Q8,8)+STR(Q9,8)+" | "+STR(Q10,8)+STR(Q11,8);
+" | "+STR(Q12,8)+" | "+STR(Q13,8)+" | "+STR(Q14,8)+" | "+STR(Q15,8)+" | "
?? STR(Q16,8)+" | "+STR(Q17,8)+" | "+STR(Q18,8)+" | "+STR(Q19,8)+" | ";
+STR(Q20,14)+" | "

? " | "+SPACE(16)+"Valeur|"+STR(V1/1000,8)+STR(V2/1000,8)+STR(V3/1000,8)+" | ";
+STR(V4/1000,8)+STR(V5/1000,8)+STR(V6/1000,8)+" | "+STR(V7/1000,8);
+STR(V8/1000,8)+STR(V9/1000,8)+" | "+STR(V10/1000,8)+STR(V11/1000,8)+" | ";
?? STR(V12/1000,8)+" | "+STR(V13/1000,8)+" | "+STR(V14/1000,8)+" | ";
+STR(V15/1000,8)+" | "+STR(V16/1000,8)+" | "+STR(V17/1000,8)+" | ";
+STR(V18/1000,8)+" | "+STR(V19/1000,8)+" | "+STR(V20/1000,14)+" | "
   SET PRINT OFF
   DO LINE_2
   STORE Comp + 1 TO Comp
   STORE Teller + 1 TO Teller

* arrangements pour terminer/reprendre la boucle des faritany.
   IF Teller = 7
      STORE 0 TO Teller
   ENDIF
ENDDO &&Comp<7

* impression des résultats totaux.
   DO LINE 2
   SET PRINT ON
   ?? CHR(15)
   ? "| TOTAUX"

?? SPACE(6)+"Quantité|"+STR(T1,8)+STR(T2,8)+STR(T3,8)+" | "+STR(T4,8);
+STR(T5,8)+STR(T6,8)+" | "+STR(T7,8)+STR(T8,8)+STR(T9,8)+" | "+STR(T10,8);
+STR(T11,8)+" | "+STR(T12,8)+" | "+STR(T13,8)+" | "+STR(T14,8)+" | "
?? STR(T15,8)+" | "+STR(T16,8)+" | "+STR(T17,8)+" | "+STR(T18,8)+" | ";
+STR(T19,8)+" | "+STR(T20,14)+" | "

? "|"+SPACE(16)+"Valeur |"+STR(Z1/1000,8)+STR(Z2/1000,8)+STR(Z3/1000,8)+" | ";
+STR(Z4/1000,8)+STR(Z5/1000,8)+STR(Z6/1000,8)+" | "+STR(Z7/1000,8);
+STR(Z8/1000,8)+STR(Z9/1000,8)+" | "+STR(Z10/1000,8)+STR(Z11/1000,8)+" | "
?? STR(Z12/1000,8)+" | "+STR(Z13/1000,8)+" | "+STR(Z14/1000,8)+" | ";
+STR(Z15/1000,8)+" | "+STR(Z16/1000,8)+" | "+STR(Z17/1000,8)+" | ";
+STR(Z18/1000,8)+" | "+STR(Z19/1000,8)+" | "+STR(Z20/1000,14)+" | "

   SET PRINT OFF
   DO LINE_2
   SET PRINT ON
   EJECT
   SET PRINT OFF

* mise à zéro des variables de travail.
   STORE 0 TO T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18
   STORE 0 TO T19,T20,Z19,Z20
   STORE 0 TO Z1,Z2,Z3,Z4,Z5,Z6,Z7,Z8,Z9,Z10,Z11,Z12,Z13,Z14,Z15,Z16,Z17,Z18
   STORE 1 TO Comp
   STORE Count + 1 TO Count

* arrangements pour terminer/reprendre la boucle des faritany.
   IF Count > 6
      STORE Teller + 12 TO Teller
   ELSE
      STORE Teller + 1 TO Teller
   ENDIF
ENDDO &&Teller < 7

STORE 1 TO Teller,Comp
STORE Count + 1 TO Count

* arrangements pour terminer la routine principale.
   IF Count < 7
      STORE .T. TO Process
   ELSE
      STORE .F. TO Process
   ENDIF
ENDDO &&Process

USE
RELEASE ALL
RETURN
* retour au menu.

T(otal)_EXPO(rtation)_7 COMMAND FILE

************************************************************************************************
Ce programme calcule par année les exportations hors faritany par nature des produits et présente la ventilation des produits par faritany d'origine et par pays de destination.
Les résultats sont présentés annuellement par faritany.
************************************************************************************************

* initialisation du programme.
SET CONSOLE OFF
SET TALK OFF
CLEAR
STORE '1' TO Part
STORE 1 TO Teller
STORE 1 TO Comp, Count
STORE .T. TO Process
USE C:ZANTA.DBF
COPY STRUCTURE TO C:ZTOTAL
USE

* boucle principale.
DO WHILE Process

* initialisation des variables de travail à zéro.
   STORE 0 TO T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18
   STORE 0 TO T19,T20,Z19,Z20
   STORE 0 TO Z1,Z2,Z3,Z4,Z5,Z6,Z7,Z8,Z9,Z10,Z11,Z12,Z13,Z14,Z15,Z16,Z17,Z18

* boucle des six faritany.
   DO WHILE Teller < 7

* impression de l'entête.
      DO SET_2 UP
      DO Line_2

* sélection des fichiers à utiliser.
      DO CASE
         CASE Count = 1
              STORE "C:ZANTA" TO Base
         CASE Count = 2
              STORE "C:ZANTS" TO Base
         CASE Count = 3
              STORE "C:ZFIAN" TO Base
         CASE Count = 4
              STORE "C:ZMAHA" TO Base
         CASE Count = 5
              STORE "C:ZTOAM" TO Base
         CASE Count = 6
              STORE "C:ZTULE" TO Base
      ENDCASE

* boucle des pays d'exportation.
   DO WHILE COMP < 19
      DO CASE
         CASE Comp = 1
              STORE '702' TO X
         CASE Comp = 2
              STORE '703' TO X
         CASE Comp = 3
              STORE '704' TO X
         CASE Comp = 4
              STORE '705' TO X
         CASE Comp = 5
              STORE '706' TO X
         CASE Comp = 6
              STORE '707' TO X
         CASE Comp = 7
              STORE '708' TO X
         CASE Comp = 8
              STORE '709' TO X
         CASE Comp = 9
              STORE '710' TO X
         CASE Comp = 10
              STORE '711' TO X
         CASE Comp = 12
              STORE '713' TO X
         CASE Comp = 13
              STORE '714' TO X
         CASE Comp = 14
              STORE '715' TO X
         CASE Comp = 15
              STORE '716' TO X
         CASE Comp = 16
              STORE '717' TO X
         CASE Comp = 17
              STORE '718' TO X
         CASE Comp = 18
              STORE '719' TO X
      ENDCASE

* calcul des résultats d'exportation.
      USE C:ZTOTAL.DBF
      APPEND FROM & Base FOR (DESTIN = X)
      USE
      USE C:ZTOTAL
      STORE 0 TO Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q12,Q13,Q14,Q15,Q16,Q17,Q18
      STORE 0 TO Q19,Q20,V1,V2,V3,V4,V5,V6,V7,V8,V9,V10,V11,V12,V13,V14,V15,V16
      STORE 0 TO V17,V18,V19,V20
      SUM QUANTITE,VALEUR TO Q1,V1 FOR (NAT_PROD ="01')
      SUM QUANTITE,VALEUR TO Q2,V2 FOR (NAT_PROD ="02')
      SUM QUANTITE,VALEUR TO Q3,V3 FOR (NAT_PROD ="03')
      SUM QUANTITE,VALEUR TO Q4,V4 FOR (NAT_PROD ="04')
      SUM QUANTITE,VALEUR TO Q5,V5 FOR (NAT_PROD ="05')
      SUM QUANTITE,VALEUR TO Q6,V6 FOR (NAT_PROD ="06')
      SUM QUANTITE,VALEUR TO Q7,V7 FOR (NAT_PROD ="07')
      SUM QUANTITE,VALEUR TO Q8,V8 FOR (NAT_PROD ="08')
      SUM QUANTITE,VALEUR TO Q9,V9 FOR (NAT_PROD ="09')
      SUM QUANTITE,VALEUR TO Q10,V10 FOR (NAT_PROD ="10')
      SUM QUANTITE,VALEUR TO Q11,V11 FOR (NAT_PROD ="11')
      SUM QUANTITE,VALEUR TO Q12,V12 FOR (NAT_PROD ="12')
      SUM QUANTITE,VALEUR TO Q13,V13 FOR (NAT_PROD ="13')
      SUM QUANTITE,VALEUR TO Q14,V14 FOR (NAT_PROD ="14')
      SUM QUANTITE,VALEUR TO Q15,V15 FOR (NAT_PROD ="15')
      SUM QUANTITE,VALEUR TO Q16,V16 FOR (NAT_PROD ="16')
      SUM QUANTITE,VALEUR TO Q17,V17 FOR (NAT_PROD ="17')
      SUM QUANTITE,VALEUR TO Q18,V18 FOR (NAT_PROD ="18')
      SUM QUANTITE,VALEUR TO Q19,V19 FOR (NAT_PROD ="19')
      SUM QUANTITE,VALEUR TO Q20,V20
      DELETE ALL
      PACK
      USE &&close

* utilisation de variables pour calcul de total plus rapide.
      STORE Q1 + T1 TO T1
      STORE Q2 + T2 TO T2
      STORE Q3 + T3 TO T3
      STORE Q4 + T4 TO T4
      STORE Q5 + T5 TO T5
      STORE Q6 + T6 TO T6
      STORE Q7 + T7 TO T7
      STORE Q8 + T8 TO T8
      STORE Q9 + T9 TO T9
      STORE Q10 + T10 TO T10
      STORE Q11 + T11 TO T11
      STORE Q12 + T12 TO T12
      STORE Q13 + T13 TO T13
      STORE Q14 + T14 TO T14
      STORE Q15 + T15 TO T15
      STORE Q16 + T16 TO T16
      STORE Q17 + T17 TO T17
      STORE Q18 + T18 TO T18
      STORE Q19 + T19 TO T19
      STORE Q20 + T20 TO T20

      STORE V1 + Z1 TO Z1
      STORE V2 + Z2 TO Z2
      STORE V3 + Z3 TO Z3
      STORE V4 + Z4 TO Z4
      STORE V5 + Z5 TO Z5
      STORE V6 + Z6 TO Z6
      STORE V7 + Z7 TO Z7
      STORE V8 + Z8 TO Z8
      STORE V9 + Z9 TO Z9
      STORE V10 + Z10 TO Z10
      STORE V11 + Z11 TO Z11
      STORE V12 + Z12 TO Z12
      STORE V13 + Z13 TO Z13
      STORE V14 + Z14 TO Z14
      STORE V15 + Z15 TO Z15
      STORE V16 + Z16 TO Z16
      STORE V17 + Z17 TO Z17
      STORE V18 + Z18 TO Z18
      STORE V19 + Z19 TO Z19
      STORE V20 + Z20 TO Z20

* si valeurs sont positives, impression des résultats par pays.
      IF (Q20 > 0 .OR. V20 > 0)

* impression du nom du pays d'exportation..
      SET PRINT ON
      ?? CHR(15)
      DO CHX_PAYS

* impression des résultats par pays d'exportation.
      SET PRINT ON
      SET CONSOLE OFF
      ?? CHR(15)

?? " Quantité|"+STR(Q1,8)+STR(Q2,8)+STR(Q3,8)+" | "+STR(Q4,8)+STR(Q5,9);
+STR(Q6,8)+" | "+STR(Q7,8)+STR(Q8,8)+STR(Q9,8)+" | "+STR(Q10,8)+STR(Q11,8);
+" | "+STR(Q12,8)+" | "+STR(Q13,8)+" | "+STR(Q14,8)+" | "+STR(Q15,8)+" | ";
?? STR(Q16,8)+" | "+STR(Q17,8)+" | "+STR(Q18,8)+" | "+STR(Q19,8)+" | ";
+STR(Q20,14)+" | "

? " | "+SPACE(16)+"Valeur|"+STR(V1/1000,8)+STR(V2/1000,8)+STR(V3/1000,8)+" | ";
+STR(V4/1000,8)+STR(V5/1000,8)+STR(V6/1000,8)+" | "+STR(V7/1000,8);
+STR(V8/1000,8)+STR(V9/1000,8)+" | "+STR(V10/1000,8)+STR(V11/1000,8)+" | ";
?? STR(V12/1000,8)+" | "+STR(V13/1000,8)+" | "+STR(V14/1000,8)+" | ";
+STR(V15/1000,8)+" | "+STR(V16/1000,8)+" | "+STR(V17/1000,8)+" | ";
+STR(V18/1000,8)+" | "+STR(V19/1000,8)+" | "+STR(V20/1000,14)+" | "

	  SET PRINT OFF
      DO LINE_2
   ENDIF

* passage au pays d'exportation suivant.
      STORE Comp + 1 TO Comp
      STORE Teller + 1 TO Teller
      IF Teller = 7
         STORE 0 TO Teller
      ENDIF
   ENDDO &&Comp<19
* fin de boucle des pays d'exportation.

AJU(ustement)_PRIX COMMAND FILE

************************************************************************************************
Ce sous-programme change les valeurs zéro des produits halieutiques des cos par des prix moyens au kilo comme disponible à partir des quelques cos mentionant les prix au kilo par site de délivrance des cos.
Les prix moyens en FMG se réfèrent ainsi au prix pratiqué dans chaque site de délivrance de cos.
************************************************************************************************

* initialisation et présentation d'un menu.
STORE SPACE(1) TO Prix
CLEAR
@ 5,18 SAY "AJUSTEMENT DES VALEURS <0>"
@ 6,18 SAY "**************************"
@ 8,15 SAY "FARITANY → ANTANANARIVO -1-"
@ 9,15 SAY "         → ANTSIRANANA -2-"
@ 10,15 SAY "        → FIANARANTSOA -3-"
@ 11,15 SAY "        → MAHAJANGA -4-"
@ 12,15 SAY "        → TOAMASINA -5-"
@ 13,15 SAY "        → TULEAR -6-"
@ 14,10 SAY "Pour quel FARITANY voulez-vous ajuster les PRIX ? " Get Prix
@ 4,8 TO 16,65 DOUBLE
READ
CLEAR

* sélection des fichiers en fonction du choix effectué.
DO CASE
   CASE Prix ="1'
        USE A:COS ANTA
   CASE Prix ="2'
        USE A:COS ANTS
   CASE Prix ="3'
        USE A:COS FIAN
   CASE Prix ="4'
        USE A:COS MAHA
   CASE Prix ="5'
        USE A:COS TOAM
   CASE Prix ="6'
        USE A:COS_TULE
   OTHERWISE
        RELEASE ALL
        RETURN
ENDCASE

* transfert des données sur disque dur sur deux fichiers; l'un comprenant
* les données avec valeurs, l'autre celles sans valeurs.
COPY STRUCTURE TO C:PRX_1_AJU
COPY STRUCTURE TO C:PRX_2_AJU
USE

* fichier avec données à valeurs = 0.
USE C:PRX_1_AJU
DO CASE
   CASE Prix ="1'
        APPEND FROM A:COS_ANTA FOR VALEUR =0
   CASE Prix ="2'
        APPEND FROM A:COS_ANTS FOR VALEUR =0
   CASE Prix ="3'
        APPEND FROM A:COS_FIAN FOR VALEUR =0
   CASE Prix ="4'
        APPEND FROM A:COS_MAHA FOR VALEUR =0
   CASE Prix ="5'
        APPEND FROM A:COS_TOAM FOR VALEUR =0
   CASE Prix ="6'
        APPEND FROM A:COS_TULE FOR VALEUR =0
   OTHERWISE

* impression des totaux par faritany.
    DO LINE 2
   SET PRINT ON
   ?? CHR(15)
   ? "| TOTAUX"

?? SPACE(6)+"Quantité|"+STR(T1,8)+STR(T2,8)+STR(T3,8)+" | "+STR(T4,8);
+STR(T5,9)+STR(T6,8)+" | "+STR(T7,8)+STR(T8,8)+STR(T9,8)+" | "+STR(T10,8);
+STR(T11,8)+" | "+STR(T12,8)+" | "+STR(T13,8)+" | "+STR(T14,8)+" | ";
?? STR(T15,8)+" | "+STR(T16,8)+" | "+STR(T17,8)+" | "+STR(T18,8)+" | ";
+STR(T19,8)+" | "+STR(T20,14)+" | ";

? " | "+SPACE(16)+"Valeur|"+STR(Z1/1000,8)+STR(Z2/1000,8)+STR(Z3/1000,8)+" | ";
+STR(Z4/1000,8)+STR(Z5/1000,9)+STR(Z6/1000,8)+" | "+STR(Z7/1000,8);
+STR(Z8/1000,8)+STR(Z9/1000,8)+" | "+STR(Z10/1000,8)+STR(Z11/1000,8)+" | ";
?? STR(Z12/1000,8)+" | "+STR(Z13/1000,8)+" | "+STR(Z14/1000,8)+" | ";
+STR(Z15/1000,8)+" | "+STR(Z16/1000,8)+" | "+STR(Z17/1000,8)+" | ";
+STR(Z18/1000,8)+" | "+STR(Z19/1000,8)+" | "+STR(Z20/1000,14)+" | ";

   SET PRINT OFF
   DO LINE 2
   SET PRINT ON
   EJECT
   SET PRINT OFF

* remise à zéro des variables de travail.
   STORE 0 TO T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18
   STORE 0 TO T19,T20,Z19,Z20
   STORE 0 TO Z1,Z2,Z3,Z4,Z5,Z6,Z7,Z8,Z9,Z10,Z11,Z12,Z13,Z14,Z15,Z16,Z17,Z18

* passage au faritany suivant avec remise à 1 du compteur des pays.
   STORE 1 TO Comp
   STORE Count + 1 TO Count
   IF Count > 6
      STORE Teller + 12 TO Teller
   ELSE
      STORE Teller + 1 TO Teller
   ENDIF
ENDDO &&Teller <7
* fin de boucle des six faritany.

  STORE 1 TO Teller, Comp
  STORE Count + 1 TO Count

* arrangement pour terminer la routine.
  IF Count < 7
     STORE .T. TO Process
  ELSE
     STORE .F. TO Process
  ENDIF
ENDDO && Process
* fin de la boucle principale.

USE
RELEASE ALL
RETURN
* retour au menu.

   RELEASE ALL
   USE
   RETURN
ENDCASE
USE

* fichier avec données à valeurs positives.
USE C:PRX_2_AJU
DO CASE
   CASE Prix ="1'
        APPEND FROM A:COS_ANTA FOR VALEUR > 0
   CASE Prix ="2'
        APPEND FROM A:COS_ANTS FOR VALEUR > 0
   CASE Prix ="3'
        APPEND FROM A:COS_FIAN FOR VALEUR > 0
   CASE Prix ="4'
        APPEND FROM A:COS_MAHA FOR VALEUR > 0
   CASE Prix ="5'
        APPEND FROM A:COS_TOAM FOR VALEUR > 0
   CASE Prix ="6'
        APPEND FROM A:COS_TULE FOR VALEUR > 0
 OTHERWISE
        RELEASE ALL
        RETURN
ENDCASE
USE

* pour le fichier contenant données à valeurs = 0, on remplace la valeur
* zéro par le prix moyen au kilo pratiqué dans le faritany (calculé à partir
* du programme AVRG COMMAND FILE.
USE C:PRX_1_AJU
GO TOP

* boucle de transformation / remplacement des valeur zéro.
DO WHILE .NOT. EOF()
   SET CONSOLE ON
   SET TALK ON

* sélection des sous-routines d'ajustement des valeurs.
   DO CASE
      CASE Prix ="5' &&Toamasina
           DO AJU_5_PR
      CASE Prix ="1' &&Antananarivo
           DO AJU_1_PR
      CASE Prix ="2' &&Antsiranana
           DO AJU_2_PR
      CASE Prix ="3' &&Fianarantsoa
           DO AJU_3_PR
      CASE Prix ="4' &&Mahajanga
           DO AJU_4_PR
      CASE Prix ="6' &&Tulear
           DO AJU_6_PR
      OTHERWISE
           RELEASE ALL
           USE
           RETURN
   ENDCASE
ENDDO
USE

* préparation au transfert des données valorisées vers une nouvelle disquette
* allant recevoir les deux fichiers créés plus haut.
SET BELL ON
CLEAR
? CHR(7)
? CHR(7)
@ 10,10 SAY "Insérrez la disquette devant recevoir le fichier avec valeurs"
@ 11,10 SAY "ajustées …"
? CHR(7)
? CHR(7)
WAIT
CLEAR

DO CASE
   CASE Prix ="1'
        USE A:COS_ANTA
   CASE Prix ="2'
        USE A:COS_ANTS
   CASE Prix ="3'
        USE A:COS_FIAN
   CASE Prix ="4'
        USE A:COS_MAHA
   CASE Prix ="5'
        USE A:COS_TOAM
   CASE Prix ="6'
        USE A:COS_TULE
   OTHERWISE
        RELEASE ALL
        RETURN
ENDCASE

* destruction des données se trouvant sur la disquette recevant les données
* avec valeurs converties.
SET SAFETY OFF
ZAP

* ajouts des données avec valeurs positives sur la nouvelle disquette.
APPEND FROM C:PRX_1_AJU
APPEND FROM C:PRX_2_AJU
USE

* remise à l'état d'origine.
DELETE FILE C:PRX_1_AJU.DBF
DELETE FILE C:PRX_2_AJU.DBF
SET SAFETY ON
RELEASE ALL
RETURN
* retour au menu des totaux globaux.

AJU(ustement)_6_PRIX COMMAND FILE

***********************************************************************************************
Ce sous-programme change les valeurs zéro des produits halieutiques des cos par des prix moyens au kilo comme disponible à partir des quelques cos mentionant les prix au kilo pour le faritany de TULEAR.
************************************************************************************************

DO CASE

* poissons entiers.
   CASE NAT_PROD ="01'

        DO CASE
           CASE CONSERV ="01'
                REPLACE VALEUR WITH QUANTITE * 650
           CASE CONSERV ="02'
                REPLACE VALEUR WITH QUANTITE * 700
           CASE CONSERV ="03'
                REPLACE VALEUR WITH QUANTITE * 676
        ENDCASE

* poissons éviscérés.
   CASE NAT_PROD ="02'

        DO CASE
           CASE CONSERV ="04'
                REPLACE VALEUR WITH QUANTITE * 580
           CASE CONSERV ="05'
                REPLACE VALEUR WITH QUANTITE * 750
           CASE CONSERV ="06'
                REPLACE VALEUR WITH QUANTITE * 860
           CASE CONSERV ="07'
                REPLACE VALEUR WITH QUANTITE * 860
        ENDCASE

* poissons filetés.
   CASE NAT_PROD ="03'

        DO CASE
           CASE CONSERV ="08'
                REPLACE VALEUR WITH QUANTITE * 2000
           CASE CONSERV ="09'
                REPLACE VALEUR WITH QUANTITE * 938
           CASE CONSERV ="10'
                REPLACE VALEUR WITH QUANTITE * 1350
        ENDCASE

* crevettes/camarons entiers.
   CASE NAT_PROD ="04'

        DO CASE
           CASE CONSERV ="11'
                REPLACE VALEUR WITH QUANTITE * 1250
           CASE CONSERV ="12'
                REPLACE VALEUR WITH QUANTITE * 1000
           CASE CONSERV ="13'
                REPLACE VALEUR WITH QUANTITE * 1500
        ENDCASE

* crevettes/camarons étêtés.
   CASE NAT_PROD ="05'

        DO CASE
           CASE CONSERV ="14'
                REPLACE VALEUR WITH QUANTITE * 1500
           CASE CONSERV ="15'
                REPLACE VALEUR WITH QUANTITE * 2500
           CASE CONSERV ="16'
                REPLACE VALEUR WITH QUANTITE * 2500
        ENDCASE

* crevettes/camarons décortiqués.
   CASE NAT_PROD ="06'

        DO CASE
           CASE CONSERV ="17'
                REPLACE VALEUR WITH QUANTITE * 2500
           CASE CONSERV ="18'
                REPLACE VALEUR WITH QUANTITE * 2500
        ENDCASE

* crabes entiers.
   CASE NAT_PROD ="07'

        DO CASE
           CASE CONSERV ="19'
                REPLACE VALEUR WITH QUANTITE * 1650
           CASE CONSERV ="20'
                REPLACE VALEUR WITH QUANTITE * 1000
        ENDCASE

* crabes morceaux.
   CASE NAT_PROD ="08'
        REPLACE VALEUR WITH QUANTITE * 1800

* crabes décortiqués.
   CASE NAT_PROD ="09'
        REPLACE VALEUR WITH QUANTITE * 1250

* langoustes entières.
   CASE NAT_PROD ="10'

        DO CASE
           CASE CONSERV ="23'
                REPLACE VALEUR WITH QUANTITE * 3517
           CASE CONSERV ="24'
                REPLACE VALEUR WITH QUANTITE * 7816
           CASE CONSERV ="25'
                REPLACE VALEUR WITH QUANTITE * 4350
        ENDCASE

* langoustes gueues.
   CASE NAT_PROD ="11'
        REPLACE VALEUR WITH QUANTITE * 7340

* céphalopdes entiers.
   CASE NAT_PROD ="12'

        DO CASE
           CASE CONSERV ="27'
                REPLACE VALEUR WITH QUANTITE * 850
           CASE CONSERV ="28'
                REPLACE VALEUR WITH QUANTITE * 850
           CASE CONSERV ="29'
                REPLACE VALEUR WITH QUANTITE * 850
        ENDCASE

* chevaquine.
   CASE NAT_PROD ="13'
        REPLACE VALEUR WITH QUANTITE * 1750

* algues.
   CASE NAT_PROD ="14'
        REPLACE VALEUR WITH QUANTITE * 679

* trépang.
   CASE NAT_PROD ="15'
        REPLACE VALEUR WITH QUANTITE * 7280

* bichique.
   CASE NAT_PROD ="16'

        DO CASE
           CASE CONSERV ="33'
                REPLACE VALEUR WITH QUANTITE * 2000
           CASE CONSERV ="34'
                REPLACE VALEUR WITH QUANTITE * 800
        ENDCASE

* mollusques.
   CASE NAT_PROD ="17'
        REPLACE VALEUR WITH QUANTITE * 4150

* ailerons de requins.
   CASE NAT_PROD ="18'
        REPLACE VALEUR WITH QUANTITE * 14195

* autres.
   CASE NAT_PROD ="19'
        REPLACE VALEUR WITH QUANTITE * 6046

   OTHERWISE

* pour changer des codes ne correspondant pas aux codes ci-hauts.
        EDIT

ENDCASE
SKIP
RETURN
* retour au programme AJU_PRIX.

AJU(ustement)_4_PRIX COMMAND FILE

**********************************************************************************************
Ce sous-programme change les valeurs zéro des produits halieutiques des cos par des prix moyens au kilo comme disponible à partir des quelques cos mentionant les prix au kilo pour le faritany de MAHAJANGA.
***********************************************************************************************

DO CASE

* poissons entiers.
   CASE NAT_PROD ="01'

        DO CASE
           CASE CONSERV ="01'
                REPLACE VALEUR WITH QUANTITE * 2619
           CASE CONSERV ="02'
                REPLACE VALEUR WITH QUANTITE * 2100
           CASE CONSERV ="03'
                REPLACE VALEUR WITH QUANTITE * 850
        ENDCASE

* poissons éviscérés.
   CASE NAT_PROD ="02'

        DO CASE
           CASE CONSERV ="04'
                REPLACE VALEUR WITH QUANTITE * 3358
           CASE CONSERV ="05'
                REPLACE VALEUR WITH QUANTITE * 850
           CASE CONSERV ="06'
                REPLACE VALEUR WITH QUANTITE * 950
           CASE CONSERV ="07'
                REPLACE VALEUR WITH QUANTITE * 2290
        ENDCASE

* poissons filetés.
   CASE NAT_PROD ="03'

        DO CASE
           CASE CONSERV ="08'
                REPLACE VALEUR WITH QUANTITE * 4016
           CASE CONSERV ="09'
                REPLACE VALEUR WITH QUANTITE * 4829
           CASE CONSERV ="10'
                REPLACE VALEUR WITH QUANTITE * 1350
        ENDCASE

* crevettes/camarons entiers.
   CASE NAT_PROD ="04'

        DO CASE
           CASE CONSERV ="11'
                REPLACE VALEUR WITH QUANTITE * 7619
           CASE CONSERV ="12'
                REPLACE VALEUR WITH QUANTITE * 1600
           CASE CONSERV ="13'
                REPLACE VALEUR WITH QUANTITE * 1250
        ENDCASE

* crevettes/camarons étêtés.
   CASE NAT_PROD ="05'

        DO CASE
           CASE CONSERV ="14'
                REPLACE VALEUR WITH QUANTITE * 7813
           CASE CONSERV ="15'
                REPLACE VALEUR WITH QUANTITE * 2500
           CASE CONSERV ="16'
                REPLACE VALEUR WITH QUANTITE * 2500
        ENDCASE

* crevettes/camarons décortiqués.
   CASE NAT_PROD ="06'

        DO CASE
           CASE CONSERV ="17'
                REPLACE VALEUR WITH QUANTITE * 2500
           CASE CONSERV ="18'
                REPLACE VALEUR WITH QUANTITE * 2500
        ENDCASE

* crabes entiers.
   CASE NAT_PROD ="07'

        DO CASE
           CASE CONSERV ="19'
                REPLACE VALEUR WITH QUANTITE * 4632
           CASE CONSERV ="20'
                REPLACE VALEUR WITH QUANTITE * 850
        ENDCASE

* crabes morceaux.
   CASE NAT_PROD ="08'
        REPLACE VALEUR WITH QUANTITE * 4243

* crabes décortiqués.
   CASE NAT_PROD ="09'
        REPLACE VALEUR WITH QUANTITE * 10878

* langoustes entières.
   CASE NAT_PROD ="10'

        DO CASE
           CASE CONSERV ="23'
                REPLACE VALEUR WITH QUANTITE * 2350
           CASE CONSERV ="24'
                REPLACE VALEUR WITH QUANTITE * 9800
           CASE CONSERV ="25'
                REPLACE VALEUR WITH QUANTITE * 2350
        ENDCASE

* langoustes gueues.
   CASE NAT_PROD ="11'
        REPLACE VALEUR WITH QUANTITE * 17243

* céphalopodes entiers.
   CASE NAT_PROD ="12'

        DO CASE
           CASE CONSERV ="27'
                REPLACE VALEUR WITH QUANTITE * 850
           CASE CONSERV ="28'
                REPLACE VALEUR WITH QUANTITE * 850
           CASE CONSERV ="29'
                REPLACE VALEUR WITH QUANTITE * 850
        ENDCASE

* chevaquines.
   CASE NAT_PROD ="13'
        REPLACE VALEUR WITH QUANTITE * 2795

* algues.
   CASE NAT_PROD ="14'
        REPLACE VALEUR WITH QUANTITE * 679

* trépang.
   CASE NAT_PROD ="15'
        REPLACE VALEUR WITH QUANTITE * 3466

* bichique.
   CASE NAT_PROD ="16'

        DO CASE
           CASE CONSERV ="33'
                REPLACE VALEUR WITH QUANTITE * 1200
           CASE CONSERV ="34'
                REPLACE VALEUR WITH QUANTITE * 1900
        ENDCASE

* mollusques.
   CASE NAT_PROD ="17'
        REPLACE VALEUR WITH QUANTITE * 650

* ailerons de requins.
   CASE NAT_PROD ="18'
        REPLACE VALEUR WITH QUANTITE * 1400

* autres.
   CASE NAT_PROD ="19'
        REPLACE VALEUR WITH QUANTITE * 1700

* pour changer des codes ne correspondant pas aux codes ci-hauts.
   OTHERWISE
        EDIT
ENDCASE
SKIP
RETURN
* retour au programme AJU_PRIX.

AJU(ustement)_3_PRIX COMMAND FILE

************************************************************************************************
Ce sous-programme change les valeurs zéro des produits halieutiques des cos par des prix moyens au kilo comme disponible à partir des quelques cos mentionant les prix au kilo pour le faritany de FIANARANTSOA.
************************************************************************************************

DO CASE

* poissons entiers.

CASE NAT_PROD ="01'

        DO CASE
           CASE CONSERV ="01'
                REPLACE VALEUR WITH QUANTITE * 600
           CASE CONSERV ="02'
                REPLACE VALEUR WITH QUANTITE * 600
           CASE CONSERV ="03'
                REPLACE VALEUR WITH QUANTITE * 650
        ENDCASE

* poissons éviscérés.
   CASE NAT_PROD ="02'

        DO CASE
           CASE CONSERV ="04'
                REPLACE VALEUR WITH QUANTITE * 600
           CASE CONSERV ="05'
                REPLACE VALEUR WITH QUANTITE * 650
           CASE CONSERV ="06'
                REPLACE VALEUR WITH QUANTITE * 700
           CASE CONSERV ="07'
                REPLACE VALEUR WITH QUANTITE * 700
        ENDCASE

* poissons filetés.
   CASE NAT_PROD ="03'

        DO CASE
           CASE CONSERV ="08'
                REPLACE VALEUR WITH QUANTITE * 700
           CASE CONSERV ="09'
                REPLACE VALEUR WITH QUANTITE * 700
           CASE CONSERV ="10'
                REPLACE VALEUR WITH QUANTITE * 700
        ENDCASE

* crevettes/camarons entiers.
   CASE NAT_PROD ="04'

        DO CASE
           CASE CONSERV ="11'
                REPLACE VALEUR WITH QUANTITE * 1400
           CASE CONSERV ="12'
                REPLACE VALEUR WITH QUANTITE * 1500
           CASE CONSERV ="13'
                REPLACE VALEUR WITH QUANTITE * 1500
        ENDCASE

* crevettes/camarons étêtés.
   CASE NAT_PROD ="05'

        DO CASE
           CASE CONSERV ="14'
                REPLACE VALEUR WITH QUANTITE * 1850
           CASE CONSERV ="15'
                REPLACE VALEUR WITH QUANTITE * 1500
           CASE CONSERV ="16'
                REPLACE VALEUR WITH QUANTITE * 1500
        ENDCASE

* crevettes/camarons décotiqués.
   CASE NAT_PROD ="06'

        DO CASE
           CASE CONSERV ="17'
                REPLACE VALEUR WITH QUANTITE * 1500
           CASE CONSERV ="18'
                REPLACE VALEUR WITH QUANTITE * 1500
        ENDCASE

* crabes entiers.
   CASE NAT_PROD ="07'

        DO CASE
           CASE CONSERV ="19'
                REPLACE VALEUR WITH QUANTITE * 480
           CASE CONSERV ="20'
                REPLACE VALEUR WITH QUANTITE * 480
        ENDCASE

* crabes morceaux.
   CASE NAT_PROD ="08'
        REPLACE VALEUR WITH QUANTITE * 480

* crabes décotiqués.
   CASE NAT_PROD ="09'
        REPLACE VALEUR WITH QUANTITE * 480

* langoustes entiéres.
   CASE NAT_PROD ="10'

        DO CASE
           CASE CONSERV ="23'
                REPLACE VALEUR WITH QUANTITE * 1500
           CASE CONSERV ="24'
                REPLACE VALEUR WITH QUANTITE * 1500
           CASE CONSERV ="25'
                REPLACE VALEUR WITH QUANTITE * 1500
        ENDCASE

* langoustes gueues.
   CASE NAT_PROD ="11'
        REPLACE VALEUR WITH QUANTITE * 2000

* céphalopodes entiers.
   CASE NAT_PROD ="12'

        DO CASE
           CASE CONSERV ="27'
                REPLACE VALEUR WITH QUANTITE * 850
           CASE CONSERV ="28'
                REPLACE VALEUR WITH QUANTITE * 850
           CASE CONSERV ="29'
                REPLACE VALEUR WITH QUANTITE * 850
        ENDCASE

* chevaquines.
   CASE NAT_PROD ="13'
        REPLACE VALEUR WITH QUANTITE * 900

* algues.
   CASE NAT_PROD ="14'
        REPLACE VALEUR WITH QUANTITE * 650

* trépang.
   CASE NAT PROD ="15'
        REPLACE VALEUR WITH QUANTITE * 1850

* bichique.
   CASE NAT_PROD ="16'

        DO CASE
           CASE CONSERV ="33'
                REPLACE VALEUR WITH QUANTITE * 1200
           CASE CONSERV ="34'
                REPLACE VALEUR WITH QUANTITE * 1200
        ENDCASE

* mollusques.
   CASE NAT PROD ="17'
        REPLACE VALEUR WITH QUANTITE * 450

* ailerons de requins.
   CASE NAT PROD ="18'
        REPLACE VALEUR WITH QUANTITE * 1850

* autres.
   CASE NAT PROD ="19'
        REPLACE VALEUR WITH QUANTITE * 1300
   OTHERWISE

* pour changer des codes ne correspondant pas aux codes ci-hauts.
        EDIT
ENDCASE
SKIP
RETURN
* retour au programme AJU_PRIX.

AJU(ustement)_1_PRIX COMMAND FILE

***********************************************************************************************
Ce sous-programme change les valeurs zéro des produits halieutiques des cos par des prix moyens au kilo comme disponible à partir des quelques cos mentionant les prix au kilo pour le faritany de ANTANANARIVO.
***********************************************************************************************

DO CASE

* poissons entiers.
   CASE NAT_PROD ="01'

        DO CASE
           CASE CONSERV ="01'
                REPLACE VALEUR WITH QUANTITE * 1500
           CASE CONSERV ="02'
                REPLACE VALEUR WITH QUANTITE * 1500
           CASE CONSERV ="03'
                REPLACE VALEUR WITH QUANTITE * 2400
        ENDCASE

* poissons éviscérés.
   CASE NAT_PROD ="02'

        DO CASE
           CASE CONSERV ="04'
                REPLACE VALEUR WITH QUANTITE * 1600
           CASE CONSERV ="05'
                REPLACE VALEUR WITH QUANTITE * 3000
           CASE CONSERV ="06'
                REPLACE VALEUR WITH QUANTITE * 4500
           CASE CONSERV ="07'
                REPLACE VALEUR WITH QUANTITE * 2400
        ENDCASE

* poissons filetés.
   CASE NAT_PROD ="03'

        DO CASE
           CASE CONSERV ="08'
                REPLACE VALEUR WITH QUANTITE * 4000
           CASE CONSERV ="09'
                REPLACE VALEUR WITH QUANTITE * 4500
           CASE CONSERV ="10'
                REPLACE VALEUR WITH QUANTITE * 3500
        ENDCASE

* crevettes/camarons entiers.
   CASE NAT_PROD ="04'

        DO CASE
           CASE CONSERV ="11'
                REPLACE VALEUR WITH QUANTITE * 10600
           CASE CONSERV ="12'
                REPLACE VALEUR WITH QUANTITE * 2700
           CASE CONSERV ="13'
                REPLACE VALEUR WITH QUANTITE * 3200
        ENDCASE

* crevettes/camarons étêtés.
   CASE NAT_PROD ="05'

        DO CASE
           CASE CONSERV ="14'
                REPLACE VALEUR WITH QUANTITE * 5950
           CASE CONSERV ="15'
                REPLACE VALEUR WITH QUANTITE * 6000
           CASE CONSERV ="16'
                REPLACE VALEUR WITH QUANTITE * 2500
        ENDCASE

* crevettes/camarons décortiqués.
   CASE NAT_PROD ="06'

        DO CASE
           CASE CONSERV ="17'
                REPLACE VALEUR WITH QUANTITE * 4500
           CASE CONSERV ="18'
                REPLACE VALEUR WITH QUANTITE * 5500
        ENDCASE

* crabes entiers.
   CASE NAT_PROD ="07'

        DO CASE
            CASE CONSERV ="19'
                REPLACE VALEUR WITH QUANTITE * 1100
           CASE CONSERV ="20'
                REPLACE VALEUR WITH QUANTITE * 1150
        ENDCASE

* crabes morceaux.
   CASE NAT_PROD ="08'
        REPLACE VALEUR WITH QUANTITE * 4857

* crabes décortiqués.
   CASE NAT_PROD ="09'
        REPLACE VALEUR WITH QUANTITE * 6900

* langoustes entières.
   CASE NAT_PROD ="10'

        DO CASE
           CASE CONSERV ="23'
                REPLACE VALEUR WITH QUANTITE * 7950
           CASE CONSERV ="24'
                REPLACE VALEUR WITH QUANTITE * 14900
           CASE CONSERV ="25'
                REPLACE VALEUR WITH QUANTITE * 4000
        ENDCASE

* langoustes queues.
   CASE NAT_PROD ="11'
        REPLACE VALEUR WITH QUANTITE * 15600

* céphalopodes entiers.
   CASE NAT_PROD ="12'

        DO CASE
           CASE CONSERV ="27'
                REPLACE VALEUR WITH QUANTITE * 1850
           CASE CONSERV ="28'
                REPLACE VALEUR WITH QUANTITE * 1850
           CASE CONSERV ="29'
                REPLACE VALEUR WITH QUANTITE * 1850
        ENDCASE

* chevaquine.
   CASE NAT_PROD ="13'
        REPLACE VALEUR WITH QUANTITE * 4800

* algues.
   CASE NAT_PROD ="14'
        REPLACE VALEUR WITH QUANTITE * 700

* trépang.
   CASE NAT_PROD ="15'
        REPLACE VALEUR WITH QUANTITE * 7280

* bichique.
   CASE NAT_PROD ="16'

        DO CASE
           CASE CONSERV ="33'
                REPLACE VALEUR WITH QUANTITE * 3200
           CASE CONSERV ="34'
                REPLACE VALEUR WITH QUANTITE * 4000
        ENDCASE

* mollusques.
   CASE NAT_PROD ="17'
        REPLACE VALEUR WITH QUANTITE * 9500

* ailerons de requins.
   CASE NAT_PROD ="18'
        REPLACE VALEUR WITH QUANTITE * 4750

* autres.
   CASE NAT_PROD ="19'
        REPLACE VALEUR WITH QUANTITE * 4500

* permet de corriger les codes qui ne correspondent pas aux codes ci-hauts.
   OTHERWISE
        EDIT
ENDCASE
SKIP
RETURN
* retour au programme AJU_PRIX.

AJU(ustement)_2_PRIX COMMAND FILE

************************************************************************************************
Ce sous-programme change les valeurs zéro des produits halieutiques des cos par des prix moyens au kilo comme disponible à partir des quelques cos mentionant les prix au kilo pour le faritany d'ANTSIRANANA.
************************************************************************************************

* démarrage du sous-programme.
DO CASE

* poissons entiers.
   CASE NAT PROD ="01'
        DO CASE
            CASE CONSERV ="01'
                 REPLACE VALEUR WITH QUANTITE * 600
            CASE CONSERV ="02'
                 REPLACE VALEUR WITH QUANTITE * 700
            CASE CONSERV ="03'
                 REPLACE VALEUR WITH QUANTITE * 1405
        ENDCASE

* poissons éviscérés.
   CASE NAT_PROD ="02'
        DO CASE
            CASE CONSERV ="04'
                 REPLACE VALEUR WITH QUANTITE * 808
            CASE CONSERV ="05'
                 REPLACE VALEUR WITH QUANTITE * 560
        CASE CONSERV ="06'
             REPLACE VALEUR WITH QUANTITE * 1375
        CASE CONSERV ="07'
             REPLACE VALEUR WITH QUANTITE * 1474
     ENDCASE

* poissons filetés.
       CASE NAT_PROD ="03'
            DO CASE
               CASE CONSERV ="08'
                     REPLACE VALEUR WITH QUANTITE * 1000
               CASE CONSERV ="09'
                    REPLACE VALEUR WITH QUANTITE * 1500
               CASE CONSERV ="10'
                    REPLACE VALEUR WITH QUANTITE * 1200
            ENDCASE

* crevettes/camarons entiers.
   CASE NAT_PROD ="04'
        DO CASE
           CASE CONSERV ="11'
                REPLACE VALEUR WITH QUANTITE * 2546
           CASE CONSERV ="12'
                REPLACE VALEUR WITH QUANTITE * 1500
           CASE CONSERV ="13'
                REPLACE VALEUR WITH QUANTITE * 1201
        ENDCASE

* crevettes/camarons étêtés.0
   CASE NAT_PROD ="05'
        DO CASE
           CASE CONSERV ="14'
                REPLACE VALEUR WITH QUANTITE * 2544
           CASE CONSERV ="15'
                REPLACE VALEUR WITH QUANTITE * 2500
           CASE CONSERV ="16'
                REPLACE VALEUR WITH QUANTITE * 1472
       ENDCASE

* crevettes/camarons décortiqués.
   CASE NAT_PROD ="06'
        DO CASE
           CASE CONSERV ="17'
                REPLACE VALEUR WITH QUANTITE * 1500
           CASE CONSERV ="18'
                REPLACE VALEUR WITH QUANTITE * 1500
       ENDCASE

* crabes entiers.
   CASE NAT_PROD ="07'
        DO CASE
           CASE CONSERV ="19'
                REPLACE VALEUR WITH QUANTITE * 483
           CASE CONSERV ="20'
                REPLACE VALEUR WITH QUANTITE * 483
        ENDCASE

* crabes morceaux.
   CASE NAT_PROD ="08'
        REPLACE VALEUR WITH QUANTITE * 1399

* crabes décortiqués.
   CASE NAT_PROD ="09'
        REPLACE VALEUR WITH QUANTITE * 700

* langoustes entières.
   CASE NAT_PROD ="10'
        DO CASE
            CASE CONSERV ="23'
                 REPLACE VALEUR WITH QUANTITE * 2350
            CASE CONSERV ="24'
                 REPLACE VALEUR WITH QUANTITE * 3000
            CASE CONSERV ="25'
                 REPLACE VALEUR WITH QUANTITE * 2350
        ENDCASE

* langoustes queues.
   CASE NAT_PROD ="11'
        REPLACE VALEUR WITH QUANTITE * 3400

* céphalopodes.
   CASE NAT_PROD ="12'
        DO CASE
           CASE CONSERV ="27'
                REPLACE VALEUR WITH QUANTITE * 850
           CASE CONSERV ="28'
                REPLACE VALEUR WITH QUANTITE * 850
           CASE CONSERV ="29'
                REPLACE VALEUR WITH QUANTITE * 3026
       ENDCASE

* chevaquine.
   CASE NAT_PROD ="13'
        REPLACE VALEUR WITH QUANTITE * 781

* algues.
   CASE NAT_PROD ="14'
        REPLACE VALEUR WITH QUANTITE * 679

* trépang.
   CASE NAT_PROD ="15'
        REPLACE VALEUR WITH QUANTITE * 2200

* bichique.
   CASE NAT_PROD ="16'
        DO CASE
           CASE CONSERV ="33'
                REPLACE VALEUR WITH QUANTITE * 1000
           CASE CONSERV ="34'
                REPLACE VALEUR WITH QUANTITE * 1120
        ENDCASE

* mollusques.
   CASE NAT_PROD ="17'
        REPLACE VALEUR WITH QUANTITE * 1150

* ailerons de requins.
   CASE NAT_PROD ="18'
        REPLACE VALEUR WITH QUANTITE * 2850

* autres.
   CASE NAT_PROD ="19'
        REPLACE VALEUR WITH QUANTITE * 2000

* permet d'éditer l'enregistrement et de le modifier si ses codes ne
* correspondent pas à l'un des codes ci-haut.
   OTHERWISE
        EDIT
ENDCASE
SKIP
RETURN
* retour au programme AJU_PRIX.

AJU(ustement)_5_PRIX COMMAND FILE

***********************************************************************************************
Ce sous-programme change les valeurs zéro des produits halieutiques des cos par des prix moyens au kilo comme disponible à partir des quelques cos mentionant les prix au kilo pour le faritany de TOAMASINA.
***********************************************************************************************

* démarrage du sous-programme.
DO CASE

* poissons entiers.
   CASE NAT_PROD ="01'
        DO CASE
           CASE CONSERV ="01'
                REPLACE VALEUR WITH QUANTITE * 981
           CASE CONSERV ="02'
                REPLACE VALEUR WITH QUANTITE * 700
           CASE CONSERV ="03'
                REPLACE VALEUR WITH QUANTITE * 200
        ENDCASE

* poissons éviscérés.
   CASE NAT_PROD ="02'
        DO CASE
           CASE CONSERV ="04'
                REPLACE VALEUR WITH QUANTITE * 1500
           CASE CONSERV ="05'
                REPLACE VALEUR WITH QUANTITE * 1500
           CASE CONSERV ="06'
                REPLACE VALEUR WITH QUANTITE * 3023
          CASE CONSERV ="07'
               REPLACE VALEUR WITH QUANTITE * 1422
      ENDCASE

* poissons filetés.
   CASE NAT_PROD ="03'
        DO CASE
           CASE CONSERV ="08'
                REPLACE VALEUR WITH QUANTITE * 2004
           CASE CONSERV ="09'
                REPLACE VALEUR WITH QUANTITE * 10000
           CASE CONSERV ="10'
                REPLACE VALEUR WITH QUANTITE * 1750
       ENDCASE

* crevettes / camarons entiers.
    CASE NAT_PROD ="04'
         DO CASE
            CASE CONSERV ="11'
                 REPLACE VALEUR WITH QUANTITE * 5301
            CASE CONSERV ="12'
                 REPLACE VALEUR WITH QUANTITE * 1350
            CASE CONSERV ="13'
                 REPLACE VALEUR WITH QUANTITE * 1595
        ENDCASE

* crevettes / camarons étêtés.
   CASE NAT_PROD ="05'
   DO CASE
        CASE CONSERV ="14'
         REPLACE VALEUR WITH QUANTITE * 4925
        CASE CONSERV ="15'
         REPLACE VALEUR WITH QUANTITE * 4500
        CASE CONSERV ="16'
         REPLACE VALEUR WITH QUANTITE * 1150
 ENDCASE

* crevettes / camarons décortiqués.
   CASE NAT_PROD ="06'
        DO CASE
           CASE CONSERV ="17'
                REPLACE VALEUR WITH QUANTITE * 4600
           CASE CONSERV ="18'
                REPLACE VALEUR WITH QUANTITE * 3000
        ENDCASE

* crabes entiers.
   CASE NAT_PROD ="07'
        DO CASE
           CASE CONSERV ="19'
                REPLACE VALEUR WITH QUANTITE * 1100
           CASE CONSERV ="20'
                REPLACE VALEUR WITH QUANTITE * 1000
        ENDCASE

* crabes morceaux.
   CASE NAT_PROD ="08'
        REPLACE VALEUR WITH QUANTITE * 1748

* crabes décortiqués.
   CASE NAT_PROD ="09'
        REPLACE VALEUR WITH QUANTITE * 3892

* langoustes entiéres.
   CASE NAT_PROD ="10'
        DO CASE
           CASE CONSERV ="23'
                REPLACE VALEUR WITH QUANTITE * 2350
           CASE CONSERV ="24'
                REPLACE VALEUR WITH QUANTITE * 3011
           CASE CONSERV ="25'
                REPLACE VALEUR WITH QUANTITE * 2000
       ENDCASE

* langoustes queues.
   CASE NAT_PROD ="11'
        REPLACE VALEUR WITH QUANTITE * 5575

* céphalopodes entiers.
   CASE NAT_PROD ="12'
        DO CASE
            CASE CONSERV ="27'
                 REPLACE VALEUR WITH QUANTITE * 1233
            CASE CONSERV ="28'
                 REPLACE VALEUR WITH QUANTITE * 1250
            CASE CONSERV ="29'
                 REPLACE VALEUR WITH QUANTITE * 1167
        ENDCASE

* chevaquine.
   CASE NAT_PROD ="13'
        REPLACE VALEUR WITH QUANTITE * 3128

* algues.
   CASE NAT_PROD ="14'
        REPLACE VALEUR WITH QUANTITE * 679

* trépang.
   CASE NAT_PROD ="15'
        REPLACE VALEUR WITH QUANTITE * 3840

* bichique.
   CASE NAT_PROD ="16'
        DO CASE
           CASE CONSERV ="33'
                REPLACE VALEUR WITH QUANTITE * 1631
           CASE CONSERV ="34'
                REPLACE VALEUR WITH QUANTITE * 1900
        ENDCASE

* mollusques.
   CASE NAT_PROD ="17'
        REPLACE VALEUR WITH QUANTITE * 2521

* ailerons de requin.
   CASE NAT_PROD ="18'
        REPLACE VALEUR WITH QUANTITE * 4667

* autres.
   CASE NAT_PROD ="19'
        REPLACE VALEUR WITH QUANTITE * 1700

* permet d'éditer l'enrégistrement fautif ne correspondant pas à l'une
* des options ci-haut.
   OTHERWISE
        EDIT
ENDCASE
SKIP
RETURN
* retour au programme AJU-PRIX.

SET_2_UP COMMAND FILE

******************************************************************************
Ce programme imprime l'entête pour les estimations totales des expéditions / exportations hors Faritany. ******************************************************************************

* initialisation des paramètres de la routine.
SET PRINT OFF
STORE DATE() TO Mdate
SET PRINT ON
?? CHR(27) + CHR(88) + CHR(2) + CHR(232)

* initialisation de l'entête si le tableau ne comporte qu'une partie.
IF Part <> '2'
   SET PRINT ON
   SET CONSOLE OFF
   SET MARGIN TO 0
   ?? CHR(18) &&normal printing mode
   ?? CHR(27) + CHR(88) + CHR(2) + CHR(232)
   ? SPACE(37)+'MINISTERE DE LA PRODUCTION ANIMALE ET DES EAUX ET FORETS.'
   ?
   ? "REPUBLIQUE DEMOCRATIQUE"+SPACE(21)+"DIRECTION DE LA PECHE ET DE"
   ?? "L'AQUACULTURE."
   ? SPACE(6)+" DE MADAGASCAR "
   ?
   ? CHR(14)

* sélection entre expéditions et exportations.
  IF Rep < '4'
     ?? SPACE(12)+"EXPEDITIONS ANNUELLES hors FARITANY - 1987 -"
  ELSE
     ?? SPACE(12)+"EXPORTATIONS ANNUELLES par FARITANY - 1987 -"
  ENDIF
  ?? CHR(15)
  ?
  ?
  ?
  ? SPACE(4)+"Date : "+DTOC(Mdate)
ELSE

* si le tableau comporte deux partie.
  IF Part ="2'
     ?? CHR(18)
     ? SPACE(10)+"Seconde Partie"
     ?? CHR(15)
     ? SPACE(10)+"Date : "+DTOC(Mdate)
     ?
     ? CHR(14)
     IF (Rep ="1' .OR. Rep ="2')
         ?? SPACE(12)+"EXPEDITIONS ANNUELLES hors FARITANY - 1987 -"
     ELSE
         ?? SPACE(12)+"EXPORTATIONS ANNUELLES par FARITANY - 1987 -"
     ENDIF
     ?? CHR(15)
     ?
  ENDIF &&Part="2'
ENDIF &&Part<> '2'
?? CHR(15)

* impression des unités.
IF (Rep ="1' .OR. Rep ="3' .OR. Rep ="5'. OR. Rep ="7')
    ?? SPACE(153)
ELSE
   IF (Rep ="2' .OR. Rep ="4' .OR. Rep ="6')
       ?? SPACE(136)
   ENDIF &&Rep=2
ENDIF &&Rep=1
?? "UNITES Poids : Kgs            UNITES Valeur : x 1000 FMG"
SET PRINT OFF

DO LINE 2
SET PRINT ON
SET CONSOLE OFF

* sélection des diverses options.
DO CASE

   CASE Rep ="1'

        ? SPACE(9)
        ?? CHR(27) + CHR(69)

?? SPACE(24)+ '    N A T U R E        DES          P R O D U I T S'
        + ' '
        ?? CHR(27) + CHR(70)
        ?? CHR(15)
        DO LINE 2
        SET PRINT ON
        ?? CHR(15)

? "| FARITANY"+SPACE(12)+"| POISSONS"+SPACE(15)+"| CREVETTES"+SPACE(14);
+"| CRABES"+" | LANGOUSTES | CEPHALOP. | CHEVAQUI.|";
+"ALGUES |"+"TREPANG | BICHIQUE | MOLLUSQU.| AIL.REQU.|"
?? +"AUTRES | TOTAL |"

? "|"+SPACE(22)+"| entier évisc. fileté | entier étêté décort |";
+"entier"+"morceau décorti | entière queue | entier | |";
+" | "+" | | | | "
?? "| FARITANY |"

   CASE Rep ="2'

* première partie du tableau.
        IF Part <> '2'
           ?? CHR(27) + CHR(69)

?? SPACE(39)+'    M O Y E N      DE       C O N S E R V A ';
+'TION'
           ?? CHR(27) + CHR(70)

           ?? CHR(15)
           DO LINE 2
           SET PRINT ON
           ?? CHR(18)
           ?? CHR(15)

? SPACE(10)+"| FARITANY"+SPACE(5)+"| POISSON"+SPACE(72)+"| CREVETTE";
+"/CAMARON"+SPACE(47)+"| CRABE"+SPACE(26)+" |"
? SPACE(10)+" | "+SPACE(15)+"| entier eviscére ";
+"fileté | entier étêté"
?? "décortiqué | entier morcea décort |"

? SPACE(10)+" | "+SPACE(15)+"| congel cuit fumé congel cuit fumé";
+"séché congel fumé | congel bouill séché congel bouill";
+"cuit cuit séché | vivant cuit congel congel |"
     ELSE

* seconde partie du tableau.
        IF Part ="2'
           SET CONSOLE OFF
           ?? CHR(27) + CHR(69)

? SPACE(28)+'    M O Y E N      DE         C O N S E R V A T ';
+'ION'
           ?? CHR(27) + CHR(70)
           ?? CHR(15)
           DO LINE 2
           SET PRINT ON
           ?? CHR(15)
           ? SPACE(10)

?? "| FARITANY | LANGOUSTE"+SPACE(22)+"| CEPHALOPODE"+SPACE(12);
+"| CHEVAQUI. | ALGUES | TREPANG | BICHIQUE |";
+"MOLLUSQU.| AIL.REQU.| AUTRES || TOTAL |"

? SPACE(10)+" | "+SPACE(16)+"| entier queues | entier";
+" "+" | | | | |";
+" | | | | FARITANY |"

? SPACE(10)+" | "+SPACE(16)+"| vivant congelé cuit congelé | vivant";
+"fumé séché | séché| séché | congelé séché |;
séché | séché | ||
           ?? CHR(18)
           SET CONSOLE ON
        ENDIF

    CASE Rep ="3'

		 SET CONSOLE OFF
         SET PRINT ON
         ?? CHR(18)
         ?? CHR(27) + CHR(69)
         ? SPACE(9)

?? '      D I S T R I B U T I O N        DES           P R O D U I T S ;
      P A R         F A R I T A N Y '
         ?? CHR(27) + CHR(70)
         ?? CHR(15)
         DO Line 2
         SET PRINT ON
         ?? CHR(15)

? "| FARITANY"+SPACE(12)+"| POISSONS"+SPACE(15)+"| CREVETTES"+SPACE(14);
+"| CRABES"+"| LANGOUSTES | CEPHALOP.| CHEVAQUI.|";
+"ALGUES |"+"TREPANG | BICHIQUE | MOLLUSQU.| AIL.REQU.| AUTRES"
?? "| TOTAL |"

         DO CASE
            CASE Count = 1
                 ? "| ANTANANARIVO "
            CASE Count = 2
                 ? "| ANTSIRANANA "
            CASE Count = 3
                 ? "| FIANARANTSOA "
            CASE Count = 4
                 ? "| MAHAJANGA "
            CASE Count = 5
                 ? "| TOAMASINA "
            CASE Count = 6
                 ? "| TOLIARA "
         ENDCASE

?? SPACE(7)+"| entier évisc.  fileté | entier étêté décort | entier";
+"morceau decorti | entiere queue | entier | | |";
+"| | | | | FARITANY |"
         DO LINE_2

   CASE Rep ="5'

         ? SPACE(9)
         ?? CHR(27) + CHR(69)

?? SPACE(24)+ '         N A T U R E       D E S        P R O D U I ';
+'T S'
         ?? CHR(27) + CHR(70)
         ?? CHR(15)
         DO LINE 2
         SET PRINT ON
         ?? CHR(15)

? "| FARITANY"+SPACE(12)+"| POISSONS"+SPACE(15)+"| CREVETTES"+SPACE(15);
+"| CRABES"+" | LANGOUSTES | CEPHALOP.| CHEVAQUI. |";
+"ALGUES |"+"TREPANG | BICHIQUE | MOLLUSQU. | AIL.REQU.|"
?? "AUTRES | TOTAL |"

? " | "+SPACE(22)+"| entier evisc.  fileté | entier étêté décort |";
+"entier"+"morceau décorti | entière queue | entier | |";
+" | "+"| | | |"
?? "| FARITANY |"

   CASE Rep ="6'

* première partie du tableu.
         IF Part <> '2'
            ?? CHR(27) + CHR(69)

?? SPACE(39)+'      M O Y E N      DE      C O N S E R V A';
+' T I O N '
            ?? CHR(27) + CHR(70)
            ?? CHR(15)
            DO LINE 2
            SET PRINT ON
            ?? CHR(18)
            ?? CHR(15)

? SPACE(10)+"| FARITANY"+SPACE(5)+"| POISSON"+SPACE(72)+" | ";
+"CREVETTE/CAMARON"+SPACE(48)+"| CRABE"+SPACE(26)+" | "
? SPACE(10)+" | "+SPACE(15)+"| entier éviscéré";
+" fileté | entier étêté"
?? " décortiqué | entier morcea décort |"

? SPACE(10)+" | "+SPACE(15)+"| congel cuit fumé congel cuit fumé";
+"séché congel fumé séché congel bouill";
+" cuit cuit séché | vivant cuit congel congel |"
         ELSE

* seconde partie du tableau.
            IF Part ="2'
               SET CONSOLE OFF
               ?? CHR(27) + CHR(69)

? SPACE(28)+'    M O Y E N      DE       C O N S E R V A T ';
+' I O N '
               ?? CHR(27) + CHR(70)
               ?? CHR(15)
               DO LINE 2
               SET PRINT ON
               ?? CHR(15)
               ? SPACE(10)

?? "| FARITANY | LANGOUSTE"+SPACE(22)+"| CEPHALOPODE"+SPACE(12);
+"| CHEVAQUI. | ALGUES | TREPANG | BICHIQUE |";
+"MOLLUSQU. | AIL.REQU. | AUTRES || TOTAL |"
? SPACE(10)+" | "+SPACE(16)+"| entier queues | entier ";
+" | | | | |";
+" | | || FARITANY |"

? SPACE(10)+" | "+SPACE(16)+"| vivant congelé cuit congelé| vivant ";
+"fumé séché | séché | séché | séché | congelé séché |";
séché | séché | || |"
         ?? CHR(18)
         SET CONSOLE ON
         ENDIF

   CASE Rep ="7'
         SET CONSOLE OFF
         SET PRINT ON
         ?? CHR(27) + CHR(69)
         ? SPACE(4)

?? "   PAR     N A T U R E      DES        P R O D U I T S    ET     PAR;
   P A Y S       D' E X P O R T A T I O N   "
         ?? CHR(27) + CHR(70)
         DO LINE 2
         SET PRINT ON
         ?? CHR(15)

? "| FARITANY"+SPACE(12)+"| POISSONS"+SPACE(15)+"| CREVETTES"+SPACE(14);
+"| CRABES"+" | LANGOUSTES | CEPHALOP.| CHEVAQUI.|";
+" ALGUES |"+"TREPANG | BICHIQUE | MOLLUSQU.| AIL.REQU.| AUTRES |"
?? "   TOTAL|"

         DO CASE
            CASE Count = 1
                 ? "| ANTANANARIVO "
            CASE Count = 2
                 ? "| ANTSIRANANA "
            CASE Count = 3
		         ? "| FIANARANTSOA "
            CASE Count = 4
                 ? "| MAHAJANGA "
            CASE Count = 5
                 ? "| TOAMASINA "
            CASE Count = 6
                 ? "| TOLIARA "
         ENDCASE
         ?? CHR(15)

?? SPACE(7)+"| entier évisc. fileté | entier étêté décort | entier";
+"morceau décorti | entiére queue | entier | | |";
+" | | | | | FARITANY |"
         DO LINE 2
         ?? CHR(18)

ENDCASE

* fin et retour au programme.
SET PRINT OFF
SET CONSOLE ON
RETURN

LINE_2 COMMAND FILE

**********************************************************
Ce programme crée une ligne pour le programme des TOTAUX (T_EXE_O).
**********************************************************

* initialisation de la routine.
SET PRINT ON
SET CONSOLE OFF
?? CHR(15)

* sélection en fonction des options choisies.
IF (Rep ="1' .OR. Rep ="3' .OR. Rep ="5' .OR. Rep ="7')
    ? " | "
    IF Rep ="5'
       ?? REPLICATE ("-", 227)
    ELSE
       ?? REPLICATE ("-", 226)
    ENDIF
    ?? " | "
ELSE
   IF (Rep ="2' .OR. Rep ="4' .OR. Rep ="6')
       IF Part ="1'
          ? SPACE (10)
          ?? " | "
          IF Rep ="6'
             ?? REPLICATE("-",201)
          ELSE
             ?? REPLICATE("-",200)
          ENDIF
          ?? " | "
       ELSE
          ? SPACE(10)
          ?? " | "
          ?? REPLICATE("-",181)
          ?? " | "
       ENDIF &&Part="1'
    ENDIF &&Rep=2
ENDIF &&Rep=1
SET PRINT OFF
RETURN
* retour au programme apellant.

AVRG COMMAND FILE

************************************************************************************************
Ce programme calcule la moyenne des prix par type de produit et par Fivondronana ayant issu des cos comportants des valeurs.
*************************************************************************************************

* initialisation du sous-programme.
CLEAR
SET CONSOLE OFF
SET TALK OFF
SET SAFETY OFF
STORE DATE() TO Mdate
Myn ="103'
Deel ="1'
STORE .T. TO Draai

* impression de l'entête.
SET PRINT ON
? CHR(18)
? SPACE(45) +"PRIX MOYEN / KG. en FMG"
?? CHR(15)
?? "Date : "+DTOC(Mdate)
?? CHR(27) + CHR(88) + CHR(2) + CHR(232)
?? CHR(15)
? " | "+REPLICATE("-",200)+" | "
? "| FIVONDRONANA | POISSON"+SPACE (72)+"| CREVETTES / CAMARONS";
+SPACE(43)+"| CRABES"+SPACE(29)+" | "

? " | "+SPACE(14)+"| entiers"+SPACE(17)+"éviscérés"+SPACE(23)+"filetés";
+SPACE(16)+"| entières"+SPACE(16)+"étêtées"+SPACE(19)+"décortiquées |";
+"entiers morceau décorti. |"

? " | "+SPACE(14)+"| congel cuit fumé congel cuit fumé séché"
?? "congel fumé séché | congel bouill";
+ "séché cuit séché"
?? "| vivants cuits congelé congelé |"
? " | "+REPLICATE("-", 200)+" | "
SET PRINT OFF

* boucle principale - en fonction selon les fivondronana ayant émis des
* cos.
DO WHILE Draai

* initialisation des variables à zéro.
   STORE 0.0 TO T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17
   STORE 0.0 TO T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32
   STORE 0.0 TO T33,T34,T35,T36,T37

* sélection succesive des divers fichiers pour chaque fivondronana dont
* ont désire connaitre le prix moyen au kilo par type de produit.
   IF Deel ="1'
      DO CASE
         CASE Myn ="103'
              USE C:ZANTA
         CASE Myn ="202'
              USE C:ZANTS
         CASE Myn ="207'
              USE C:ZANTS
         CASE Myn ="209'
              USE C:ZANTS
         CASE Myn ="317'
              USE C:ZFIAN
         CASE Myn ="402'
              USE C:ZMAHA
         CASE Myn ="502'
              USE C:ZTOAM
         CASE Myn ="602'
              USE C:ZTULE
         CASE Myn ="618'
              USE C:ZTULE
         CASE Myn ="619'
              USE C:ZTULE
         CASE Myn ="614'
              USE C:ZTULE
         OTHERWISE
              RELEASE ALL
              USE
             RETURN
      ENDCASE

* copie de la structure vers le fichier c:avrg.
      COPY STRUCTURE TO C:AVRG.DBF
      USE
      USE C:AVRG.DBF

* ajout des données au fichier avrg selon le fivondronana désiré.
      DO CASE
         CASE Myn ="402'
              APPEND FROM C:ZMAHA FOR (FIVONDRON = Myn .AND. VALEUR > 0)
         CASE Myn ="103'
              APPEND FROM C:ZANTA FOR (FIVONDRON = Myn .AND. VALEUR > 0)
         CASE Myn ="202'
              APPEND FROM C:ZANTS FOR (FIVONDRON = Myn .AND. VALEUR > 0)
         CASE Myn ="207'
              APPEND FROM C:ZANTS FOR (FIVONDRON = Myn .AND. VALEUR > 0)
         CASE Myn ="209'
              APPEND FROM C:ZANTS FOR (FIVONDRON = Myn .AND. VALEUR > 0)
         CASE Myn ="317'
              APPEND FROM C:ZFIAN FOR (FIVONDRON = Myn .AND. VALEUR > 0)
         CASE Myn ="402'
              APPEND FROM C:ZMAHA FOR (FIVONDRON = Myn .AND. VALEUR > 0)
         CASE Myn ="502'
              APPEND FROM C:ZTOAM FOR (FIVONDRON = Myn .AND. VALEUR > 0)
         CASE Myn ="602'
              APPEND FROM C:ZTULE FOR (FIVONDRON = Myn .AND. VALEUR > 0)
         CASE Myn ="618'
              APPEND FROM C:ZTULE FOR (FIVONDRON = Myn .AND. VALEUR > 0)
         CASE Myn ="619'
              APPEND FROM C:ZTULE FOR (FIVONDRON = Myn .AND. VALEUR > 0)
         CASE Myn ="614'
              APPEND FROM C:ZTULE FOR (FIVONDRON = Myn .AND. VALEUR > 0)
      ENDCASE
      USE C:AVRG.DBF
      INDEX ON NAT_PROD+CONSERV TO C:AVRG.NDX

* calcul des prix moyens des produits - première partie du tableau.
      USE C:AVRG INDEX C:AVRG.NDX
      AVERAGE VALEUR/QUANTITE TO T1 FOR(NAT_PROD ="01' .AND. CONSERV ="01')
      AVERAGE VALEUR/QUANTITE TO T2 FOR(NAT_PROD ="01' .AND. CONSERV ="02')
      AVERAGE VALEUR/QUANTITE TO T3 FOR(NAT_PROD ="01' .AND. CONSERV ="03')
      AVERAGE VALEUR/QUANTITE TO T4 FOR(NAT_PROD ="02' .AND. CONSERV ="04')
      AVERAGE VALEUR/QUANTITE TO T5 FOR(NAT_PROD ="02' .AND. CONSERV ="05')
      AVERAGE VALEUR/QUANTITE TO T6 FOR(NAT_PROD ="02' .AND. CONSERV ="06')
      AVERAGE VALEUR/QUANTITE TO T7 FOR(NAT_PROD ="02' .AND. CONSERV ="07')
      AVERAGE VALEUR/QUANTITE TO T8 FOR(NAT_PROD ="03' .AND. CONSERV ="08')
      AVERAGE VALEUR/QUANTITE TO T9 FOR(NAT_PROD ="03' .AND. CONSERV ="09')
      AVERAGE VALEUR/QUANTITE TO T10 FOR(NAT_PROD ="03' .AND. CONSERV ="10')
      AVERAGE VALEUR/QUANTITE TO T11 FOR(NAT_PROD ="04' .AND. CONSERV ="11')
      AVERAGE VALEUR/QUANTITE TO T12 FOR(NAT_PROD ="04' .AND. CONSERV ="12')
      AVERAGE VALEUR/QUANTITE TO T13 FOR(NAT_PROD ="04' .AND. CONSERV ="13')
      AVERAGE VALEUR/QUANTITE TO T14 FOR(NAT_PROD ="05' .AND. CONSERV ="14')
      AVERAGE VALEUR/QUANTITE TO T15 FOR(NAT_PROD ="05' .AND. CONSERV ="15')
      AVERAGE VALEUR/QUANTITE TO T16 FOR(NAT_PROD ="05' .AND. CONSERV ="16')
      AVERAGE VALEUR/QUANTITE TO T17 FOR(NAT_PROD ="06' .AND. CONSERV ="17')
      AVERAGE VALEUR/QUANTITE TO T18 FOR(NAT_PROD ="06' .AND. CONSERV ="18')
      AVERAGE VALEUR/QUANTITE TO T19 FOR(NAT_PROD ="07' .AND. CONSERV ="19')
      AVERAGE VALEUR/QUANTITE TO T20 FOR(NAT_PROD ="07' .AND. CONSERV ="20')
      AVERAGE VALEUR/QUANTITE TO T21 FOR(NAT_PROD ="08' .AND. CONSERV ="21')
      AVERAGE VALEUR/QUANTITE TO T22 FOR(NAT_PROD ="09' .AND. CONSERV ="22')

* destruction du fichier c:avrg
      USE
      DELETE FILE C:AVRG.NDX
      DELETE FILE C:AVRG.DBF

* impression des résultats - prix moyen au kilo pratiqué dans le fivondronana
* du choix.
      SET PRINT ON
      ? " | "
      DO CASE
         CASE Myn ="103'
              ?? "Antananarivo "
         CASE Myn ="202'
              ?? "Antsiranana "
         CASE Myn ="207'
              ?? "Nosy - Be "
         CASE Myn ="209'
              ?? "Vohémar "
         CASE Myn ="317'
              ?? "Mananjary "
         CASE Myn ="402'
              ?? "Mahajanga "
         CASE Myn ="402'
              ?? "Mahajanga "
         CASE Myn ="502'
              ?? "Toamasina "
         CASE Myn ="602'
              ?? "Tulear "
         CASE Myn ="608'
              ?? "Belo/Tsiribi "
         CASE Myn ="614'
              ?? "Tolagnaro "
         CASE Myn ="618'
              ?? "Morombe "
         CASE Myn ="619'
              ?? "Morondava "
      ENDCASE

?? " | "+STR(T1,8,1)+STR(T2,8,1)+STR(T3,8,1)+STR(T4,8,1)+STR(T5,8,1);
+STR(T6,8,1)+STR(T7,8,1)+STR(T8,8,1)+STR(T9,8,1)+STR(T10,8,1)+" | ";
+STR(T11,8,1)+STR(T12,8,1)+STR(T13,8,1)+STR(T14,8,1)+STR(T15,8,1)
?? STR(T16,8,1)+STR(T17,8,1)+STR(T18,8,1)+" | "+STR(T19,8,1);
+STR(T20,8,1)+STR(T21,9,1)+STR(T22,10,1)+" | "
? " | "+REPLICATE("-", 200)+" | "
      SET PRINT OFF

* passage au fivondronana suivant.
      DO CASE
         CASE Myn ="103'
              STORE '202' TO Myn
         CASE Myn ="202'
              STORE '207' TO Myn
         CASE Myn ="207'
              STORE '209' TO Myn
         CASE Myn ="209'
              STORE '317' TO Myn
         CASE Myn ="317'
              STORE '402' TO Myn
         CASE Myn ="402'
              STORE '502' TO Myn
         CASE Myn ="502'
              STORE '602' TO Myn
         CASE Myn ="602'
              STORE '614' TO Myn
         CASE Myn ="614'
              STORE '618' TO Myn
         CASE Myn ="618'
              STORE '619' TO Myn
         CASE Myn ="619'
              STORE '650' TO Myn
              STORE '2' TO Deel
      ENDCASE

* passage à la seconde partie du tableau ou passage à la première partie
* du tableau mais au fivondronana suivant.
      IF Myn ="650'
         STORE '2' TO Deel
         STORE .T. TO Draai
         STORE '103' TO Myn
      ELSE
         STORE '1' TO Deel
         STORE .T. TO Draai
      ENDIF

* fin de la première partie du tableau.
  ELSE &&Deel=1of2

* seconde partie du tableau.
     IF Deel ="2'

* impression de l'entête.
        IF (Deel ="2' .AND. Myn ="103')
            SET PRINT ON
            ?
            ? SPACE(15)
            ?? CHR(15)
            ?? "seconde partie"
            ? SPACE(16)+"Date : "+DTOC(Mdate)
            ?? CHR(18)
            ?? SPACE(30)+"<<< PRIX MOYEN / KG. en FMG >>>"
            ?? CHR(27) + CHR(88) + CHR(2) + CHR(232)
            ?? CHR(15)
            ? SPACE(15)+" | "+REPLICATE("-",152)+" | "

? SPACE(15)+"| FIVONDRONANA | LANGOUSTES"+SPACE(21)+"| CEPHALOPODES";
+SPACE(11)+"| CHEVAOUI.| ALGUES | TREPANG | BICHIQUE | MOLLUSQ.";
+"|AIL.REQU.| AUTRES |"

? SPACE(15)+" | "+SPACE(14)+"| entiers"+SPACE(17)+"queues | entiers";
+SPACE(16)+"lentières | | | entier | |";
+"| |"

? SPACE(15)+" | "+SPACE(14)+"| vivant congel cuit congel | congel";
+"fumé séché"+"| séchées | séchées | congelé séchés |";
+"| séché | |"

? SPACE(15)+" | "+REPLICATE("-",152)+" | "
            SET PRINT OFF
        ENDIF

* selection des fivondronana successifs.
        DO CASE
           CASE Myn ="103'
                USE C:ZANTA
           CASE Myn ="202'
                USE C:ZANTS
           CASE Myn ="207'
                USE C:ZANTS
           CASE Myn ="209'
                USE C:ZANTS
           CASE Myn ="217'
                USE C:ZFIAN
           CASE Myn ="402'
                USE C:ZMAHA
           CASE Myn ="502'
                USE C:ZTOAM
           CASE Myn ="602'
                USE C:ZTULE
           CASE Myn ="618'
                USE C:ZTULE
           CASE Myn ="619'
                USE C:ZTULE
           CASE Myn ="614'
                USE C:ZTULE
           OTHERWISE
                RELEASE ALL
                USE
                RETURN
        ENDCASE

* copie de la structure sur le fichier c:avrg.

        COPY STRUCTURE TO C:AVRG.DBF
        USE
        USE C:AVRG.DBF

* transfert des données vers le fichier c:avrg selon le fivondronana
* sélectioné.
        DO CASE
           CASE Myn ="402'
                APPEND FROM C:ZMAHA FOR(FIVONDRON = Myn .AND. VALEUR > 0)
           CASE Myn ="103'
                APPEND FROM C:ZANTA FOR(FIVONDRON = Myn .AND. VALEUR > 0)
           CASE Myn ="202'
                APPEND FROM C:ZANTS FOR(FIVONDRON = Myn .AND. VALEUR > 0)
           CASE Myn ="207'
                APPEND FROM C:ZANTS FOR(FIVONDRON = Myn .AND. VALEUR > 0)
           CASE Myn ="209'
                APPEND FROM C:ZANTS FOR(FIVONDRON = Myn .AND. VALEUR > 0)
           CASE Myn ="317'
                APPEND FROM C:ZFIAN FOR(FIVONDRON = Myn .AND. VALEUR > 0)
           CASE Myn ="402'
                APPEND FROM C:ZMAHA FOR(FIVONDRON = Myn .AND. VALEUR > 0)
           CASE Myn ="502'
                APPEND FROM C:ZTOAM FOR(FIVONDRON = Myn .AND. VALEUR > 0)
           CASE Myn ="602'
                APPEND FROM C:ZTULE FOR(FIVONDRON = Myn .AND. VALEUR > 0)
           CASE Myn ="618'
                APPEND FROM C:ZTULE FOR(FIVONDRON = Myn .AND. VALEUR > 0)
           CASE Myn ="619'
                APPEND FROM C:ZTULE FOR(FIVONDRON = Myn .AND. VALEUR > 0)
           CASE Myn ="614'
                APPEND FROM C:ZTULE FOR(FIVONDRON = Myn .AND. VALEUR > 0)
        ENDCASE
        USE C:AVRG.DBF
        INDEX ON NAT_PROD+CONSERV TO C:AVRG.NDX

* calcul du prix moyen au kilo pratiqué par type de produit dans le
* fivondronana sélectioné - seconde partie du tableau.
        USE C:AVRG INDEX C:AVRG.NDX
        AVERAGE VALEUR/QUANTITE TO T23 FOR(NAT_PROD ="10'.AND. CONSERV ="23')
        AVERAGE VALEUR/QUANTITE TO T24 FOR(NAT_PROD ="10'.AND. CONSERV ="24')
        AVERAGE VALEUR/QUANTITE TO T25 FOR(NAT_PROD ="10'.AND. CONSERV ="25')
        AVERAGE VALEUR/QUANTITE TO T26 FOR(NAT_PROD ="11'.AND. CONSERV ="26')
        AVERAGE VALEUR/QUANTITE TO T27 FOR(NAT_PROD ="12'.AND. CONSERV ="27')
        AVERAGE VALEUR/QUANTITE TO T28 FOR(NAT_PROD ="12'.AND. CONSERV ="28')
        AVERAGE VALEUR/QUANTITE TO T29 FOR(NAT_PROD ="12'.AND. CONSERV ="29')
        AVERAGE VALEUR/QUANTITE TO T30 FOR(NAT_PROD ="13'.AND. CONSERV ="30')
        AVERAGE VALEUR/QUANTITE TO T31 FOR(NAT_PROD ="14'.AND. CONSERV ="31')
        AVERAGE VALEUR/QUANTITE TO T32 FOR(NAT_PROD ="15'.AND. CONSERV ="32')
        AVERAGE VALEUR/QUANTITE TO T33 FOR(NAT_PROD ="16'.AND. CONSERV ="33')
        AVERAGE VALEUR/QUANTITE TO T34 FOR(NAT_PROD ="16'.AND. CONSERV ="34')
        AVERAGE VALEUR/QUANTITE TO T35 FOR(NAT_PROD ="17'.AND. CONSERV ="35')
        AVERAGE VALEUR/QUANTITE TO T36 FOR(NAT_PROD ="18'.AND. CONSERV ="36')
        AVERAGE VALEUR/QUANTITE TO T37 FOR(NAT_PROD ="19'.AND. CONSERV ="37')

* destruction du fichier c:avrg
        USE
        DELETE FILE C:AVRG.NDX
        DELETE FILE C:AVRG.DBF

* impression des résultats des prix moyens au kilo - seconde partie
* du tableau.
        SET PRINT ON
        ? SPACE(15)+" | "
        DO CASE
           CASE Myn ="103'
                ?? "Antananarivo "
           CASE Myn ="202'
                ?? "Antsiranana "
           CASE Myn ="207'
                ?? "Nosy - Be "
           CASE Myn ="209'
                ?? "Vohémar "
           CASE Myn ="317'
                ?? "Mananjary "
           CASE Myn ="402'
                ?? "Mahajanga "
           CASE Myn ="402'
                ?? "Mahajanga "
           CASE Myn ="502'
                ?? "Toamasina "
           CASE Myn ="602'
                ?? "Tulear "
           CASE Myn ="608'
                ?? "Belo/Tsiribi "
           CASE Myn ="614'
                ?? "Tolagnaro "
           CASE Myn ="618'
                ?? "Morombe "
           CASE Myn ="619'
                ?? "Morondava "
        ENDCASE

?? " | "+STR(T23,8,1)+STR(T24,8,1)+STR(T25,8,1)+STR(T26,8,1)+" | "+STR(T27,8,1);
+STR(T28,8,1)+STR(T29,8,1)+" | "+STR(T30,8,1)+" | "+STR(T31,8,1)+" | ";
+STR(T32,8,1)+" | "+STR(T33,8,1)+STR(T34,8,1)+" | "
?? STR(T35,8,1)+" | "+STR(T36,8,1)+" | "+STR(T37,8,1)+" | "

?SPACE(15)+" | "+REPLICATE("-",152)+" | "
        SET PRINT OFF

* passage au fivondronana suivant - seconde partie - ou finalisation de
* la seconde partie du tableau.

        DO CASE
           CASE Myn ="103'
                STORE '202' TO Myn
           CASE Myn ="202'
                STORE '207' TO Myn
           CASE Myn ="207'
                STORE '209' TO Myn
           CASE Myn ="209'
                STORE '317' TO Myn
           CASE Myn ="317'
                STORE '402' TO Myn
           CASE Myn ="402'
                STORE '502' TO Myn
           CASE Myn ="502'

Page précédente Début de page