***********************************************************************************************
Ce programme calcule, par mois, les expéditions hors fivondronana par moyen
de conservation. Les données ont été transférées sur disque dur pour
raison de sécurité. Le programme ne traite que les données d'expédition
et non celles des exportations.
Les résultats sont présentés mensuellement par fivondronana ou annuellement
par faritany (tous les fivondronana du faritany).
***********************************************************************************************
* création de deux fichiers suplémentaires pour traitement plus rapide.
USE C:ZIPZIP
COPY STRUCTURE TO C:ZIP_2.DBF
COPY STRUCTURE TO C:Zip_3.DBF
USE
* impression de l'entête.
Mdate = DATE()
STORE SPACE (1) TO Part
DO SETUP
SET PRINT OFF
DO LINE
* préparation des paramètres.
SET TALK OFF
Part ="1'
Process = .T.
USE C:Zip_3
APPEND FROM C:Zipzip FOR (DESTIN < "700")
USE &&closeZip_3
* préparation des paramètres pour choix "tous les fivondronana du faritany.
IF Fiv ="000'
STORE 0 TO T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17
STORE 0 TO T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32
STORE 0 TO T33,T34,T35,T36,T37,T38,T39,T40,TTQ1,TTQ2
STORE 1 TO Count
STORE 0 TO Z1,Z2,Z3,Z4,Z5,Z6,Z7,Z8,Z9,Z10,Z11,Z12,Z13,Z14,Z15,Z16,Z17,Z18
STORE 0 TO Z19,Z20,Z21,Z22,Z23,Z24,Z25,Z26,Z27,Z28,Z29,Z30,Z31,Z32,Z33,Z34
STORE 0 TO Z35,Z36,Z37,Z38,Z39,Z40,ZZV1,ZZV2
DO CASE
CASE Far ="1'
STORE '103' TO Y
CASE Far ="2'
STORE '202' TO Y
CASE Far ="3'
STORE '302' TO Y
CASE Far ="4'
STORE '402' TO Y
CASE Far ="5'
STORE '502' TO Y
CASE Far ="6'
STORE '602' TO Y
ENDCASE
ENDIF
* Boucle principale.
DO WHILE Process
* Si le choix porte sur un fivondronana d'un faritany, résultats mensuels.
IF Fiv <> '000'
STORE 1 TO Tel
STORE 0 TO T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17
STORE 0 TO T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,T28,T29,T30,T31,T32
STORE 0 TO T33,T34,T35,T36,T37,T38,T39,T40
STORE 0 TO Z1,Z2,Z3,Z4,Z5,Z6,Z7,Z8,Z9,Z10,Z11,Z12,Z13,Z14,Z15,Z16,Z17
STORE 0 TO Z18,Z19,Z20,Z21,Z22,Z23,Z24,Z25,Z26,Z27,Z28,Z29,Z30,Z31,Z32
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
SET PRINT ON
?? CHR(15)
? "| TOTAUX"+SPACE(216)+" |"
? "| QUANTITE"+SPACE(11)+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)+" | "
? "| VALEUR"+SPACE(13)+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,8)+" | "
SET PRINT OFF
DO LINE
SET PRINT ON
EJECT
SET PRINT OFF
ENDIF
* remise en état et retour au menu.
USE
DELETE FILE C:Zip_2.DBF
DELETE FILE C:Zip_3.DBF
DELETE FILE C:Zipzip.DBF
RELEASE ALL
RETURN
* retour au menu principal.
STORE 0 TO Z33,Z34,Z35,Z36,Z37,Z40
* boucle des mois, calcul et impression des résultats; première partie.
DO WHILE Tel < 13
STORE ' ' TO X
IF Tel < 10
STORE 'O'+STR(Tel,1) TO X
ELSE
STORE STR (Tel,2) TO X
ENDIF
USE C:Zip_2.DBF &&open
APPEND FROM C:Zip_3 FOR (CONSERV < "27" .AND. SUBSTR(DTOC(DATE),4,2) = X)
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 Q20,V20 FOR (CONSERV ="20')
SUM QUANTITE,VALEUR TO Q21,V21 FOR (CONSERV ="21')
SUM QUANTITE,VALEUR TO Q22,V22 FOR (CONSERV ="22')
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')
DELETE ALL
PACK
USE &&close
* usage de variables mémoires pour la quantité et la valeur en vue d'une
* sommation totale 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 Q21 + T21 TO T21
STORE Q22 + T22 TO T22
STORE Q23 + T23 TO T23
STORE Q24 + T24 TO T24
STORE Q25 + T25 TO T25
STORE Q26 + T26 TO T26
STORE (V1/1000) + Z1 TO Z1
STORE (V2/1000) + Z2 TO Z2
STORE (V3/1000) + Z3 TO Z3
STORE (V4/1000) + Z4 TO Z4
STORE (V5/1000) + Z5 TO Z5
STORE (V6/1000) + Z6 TO Z6
STORE (V7/1000) + Z7 TO Z7
STORE (V8/1000) + Z8 TO Z8
STORE (V9/1000) + Z9 TO Z9
STORE (V10/1000) + Z10 TO Z10
STORE (V11/1000) + Z11 TO Z11
STORE (V12/1000) + Z12 TO Z12
STORE (V13/1000) + Z13 TO Z13
STORE (V14/1000) + Z14 TO Z14
STORE (V15/1000) + Z15 TO Z15
STORE (V16/1000) + Z16 TO Z16
STORE (V17/1000) + Z17 TO Z17
STORE (V18/1000) + Z18 TO Z18
STORE (V19/1000) + Z19 TO Z19
STORE (V20/1000) + Z20 TO Z20
STORE (V21/1000) + Z21 TO Z21
STORE (V22/1000) + Z22 TO Z22
STORE (V23/1000) + Z23 TO Z23
STORE (V24/1000) + Z24 TO Z24
STORE (V25/1000) + Z25 TO Z25
STORE (V26/1000) + Z26 TO Z26
* impression des résultats, première partie, résultats mensuels.
SET CONSOLE OFF
SET PRINT ON
?? CHR(15) &&condensed print
? "|"+STR(Tel,2)+"Q"+STR(Q1,9)+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)+" | "+STR(Q23,8);
+STR(Q24,8)+STR(Q25,8)+STR(Q26,8)+" | "
? "| V"+STR(V1/1000,9)+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,8)+STR(V21/1000,8);
+STR(V22/1000,8)+" | "+STR(V23/1000,8)+STR(V24/1000,8)
?? STR(V25/1000,8)+STR(V26/1000,8)+" | "
DO Line
SET PRINT OFF
* saut au mois suivant.
STORE Tel + 1 TO Tel
ENDDO Tel
* calcul et impression des totaux (sommation des douzes mois), première
* partie.
IF Tel > 12
DO LINE
SET CONSOLE OFF
SET PRINT ON
?? CHR (15) &&condensed print
? "| TOTAL"+SPACE (215)+" | "
? "| QUANT"
?? 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)+" | "+STR(T23,8)+STR(T24,8)+STR(T25,8)+STR(T26,8)+" |"
? "|VALEU"
?? STR(Z1,8)+STR(Z2,8)+STR(Z3,8)+STR(Z4,8)+STR(Z5,8)+STR(Z6,8)+STR(Z7,8);
+STR(Z8,8)+STR(Z9,8)+STR(Z10,8)+" | "+STR(Z11,8)+STR(Z12,8)+STR(Z13,8);
+STR(Z14,8)+STR(Z15,8)
?? STR(Z16,8)+STR(Z17,8)+STR(Z18,8)+" | "+STR(Z19,8)+STR(Z20,8)+STR(Z21,8);
+STR(Z22,8)+" | "+STR(Z23,8)+STR(Z24,8)+STR(Z25,8)+STR(Z26,8)+" | "
SET PRINT OFF
DO LINE
SET CONSOLE OFF
ENDIF &&>12part 1
* Seconde partie, résultats mensuels par fivondronana.
STORE '2' TO Part
SET PRINT ON
EJECT
* impression de l'entête, seconde partie.
?? CHR(18)
? SPACE (15)+"Seconde partie"
?? SPACE (7)
?? CHR(14)
?? "EXPEDITION hors FIVONDRONANA"
?? CHR(20)
?? CHR(15)
? SPACE(25)+"Date : "+DTOC(Mdate)
SET CONSOLE OFF
SET PRINT ON
?
?? CHR(18)
DO SETUP
SET PRINT OFF
DO LINE
STORE 1 TO Tel
* boucle des mois, seconde partie.
DO WHILE Tel < 13
SET CONSOLE OFF
STORE SPACE (2) TO X
IF Tel < 10
STORE 'O' +STR(Tel,1) TO X
ELSE
STORE STR(Tel,2) TO X
ENDIF
USE C:ZIP_8.DBF
* sommation des quantités et valeurs, seconde partie.
APPEND FROM C:ZIP 3 FOR(CONSERV > "26" .AND. SUBSTR (DTOC(DATE),4,2) = X)
SUM QUANTITE,VALEUR TO 027,V27 FOR (CONSERV ="27')
SUM QUANTITE,VALEUR TO 028,V28 FOR (CONSERV ="28')
SUM QUANTITE,VALEUR TO 029,V29 FOR (CONSERV ="29')
SUM QUANTITE,VALEUR TO 030,V30 FOR (CONSERV ="30')
SUM QUANTITE,VALEUR TO 031,V31 FOR (CONSERV ="31')
SUM QUANTITE,VALEUR TO 032,V32 FOR (CONSERV ="32')
SUM QUANTITE,VALEUR TO 033,V33 FOR (CONSERV ="33')
SUM QUANTITE,VALEUR TO 034,V34 FOR (CONSERV ="34')
SUM QUANTITE,VALEUR TO 035,V35 FOR (CONSERV ="35')
SUM QUANTITE,VALEUR TO 036,V36 FOR (CONSERV ="36')
SUM QUANTITE,VALEUR TO 037,V37 FOR (CONSERV ="37')
DELETE ALL
PACK
USE &&close
* usage de variables mémoires pour sommation plus rapide des résultats des
* douze mois.
STORE 027 + T27 TO T27
STORE 028 + T28 TO T28
STORE 029 + T29 TO T29
STORE 030 + 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 (V27/1000) + Z27 TO Z27
STORE (V28/1000) + Z28 TO Z28
STORE (V29/1000) + Z29 TO Z29
STORE (V30/1000) + Z30 TO Z30
STORE (V31/1000) + Z31 TO Z31
STORE (V32/1000) + Z32 TO Z32
STORE (V33/1000) + Z33 TO Z33
STORE (V34/1000) + Z34 TO Z34
STORE (V35/1000) + Z35 TO Z35
STORE (V36/1000) + Z36 TO Z36
STORE (V37/1000) + Z37 TO Z37
USE C:ZIP 3
SUM QUANTITE, VALEUR TO QTOT, VTOT FOR (SUBSTR(DTOC(DATE),4,2) =X)
USE &&close
* impression des résultats mensuels.
SET PRINT ON
?? CHR (15)
? SPACE(25)+" | "+STR(Tel,4)+"Quantité"+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(QTOT,14)+" |"
? SPACE(25)+"| Valeur "+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(VTOT/1000,14)+" | "
DO Line
?? CHR (18)
SET PRINT OFF
STORE QTOT + T40 TO T40
STORE VTOT + Z40 TO Z40
STORE Tel + 1 TO Tel
ENDDO && tel part2
* sommation et impression des totaux des douze mois.
IF Tel > 12
DO LINE
SET PRINT ON
?? CHR (15)
? SPACE (25)+"| TOTAL"+SPACE(137)+"|"
? SPACE (25)+"| QUANTITE"+STR(T27,10)+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(T40,14)+" |"
? SPACE(25)+"| VALEUR"+STR(Z27,10)+STR(Z28,8)+STR(Z29,8)+" | ";
+STR(Z30,8)+" | "+STR(Z31,8)+" | "+STR(Z32,8)+" | "+STR(Z33,8)+STR(Z34,8)+" | ";
+STR(Z35,8)+" | "+STR(Z36,8)+" | "+STR(Z37,8)+"||"+STR(Z40/1000,14)+" | "
DO LINE
SET CONSOLE ON
ENDIF &&>12 part 2
STORE .F. TO Process
* fin de la seconde partie si des résultats mensuels par fivondronana ont été
* sélectionés.
ELSE
* si des résultats annuels pour tous les fivondronana d'un faritany sont
* désirés.
* première partie, résultats annuels par faritany.
IF Part ="1'
USE C:ZIP 2.DBF
APPEND FROM C:ZIP 3 FOR(FIVONDRON = Y .AND. CONSERV < "27")
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 Q20,V20 FOR (CONSERV ="20')
SUM QUANTITE,VALEUR TO Q21,V21 FOR (CONSERV ="21')
SUM QUANTITE,VALEUR TO Q22,V22 FOR (CONSERV ="22')
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')
DELETE ALL
PACK
USE &&close
STORE (Q1+Q2+Q3+Q4+Q5+Q6+Q7+Q8+Q9+Q10+Q11+Q12+Q13+Q14+Q15+Q16+Q17+Q18;
+Q19+Q20+Q21+Q22+Q23+Q24+Q25+Q26) +TTQ1 TO TTQ1
STORE ((V1+V2+V3+V4+V5+V6+V7+V8+V9+V10+V11+V12+V13+V14+V15+V16+V17+V18;
+V19+V20+V21+V22+V23+V24+V25+V26)/1000) + ZZV1 TO ZZV1
* usage de variables mémories pour sommation 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 Q21 + T21 TO T21
STORE Q22 + T22 TO T22
STORE Q23 + T23 TO T23
STORE Q24 + T24 TO T24
STORE Q25 + T25 TO T25
STORE Q26 + T26 TO T26
STORE TTQ1 + T38 TO T38
STORE (V1/1000) + Z1 TO Z1
STORE (V2/1000) + Z2 TO Z2
STORE (V3/1000) + Z3 TO Z3
STORE (V4/1000) + Z4 TO Z4
STORE (V5/1000) + Z5 TO Z5
STORE (V6/1000) + Z6 TO Z6
STORE (V7/1000) + Z7 TO Z7
STORE (V8/1000) + Z8 TO Z8
STORE (V9/1000) + Z9 TO Z9
STORE (V10/1000) + Z10 TO Z10
STORE (V11/1000) + Z11 TO Z11
STORE (V12/1000) + Z12 TO Z12
STORE (V13/1000) + Z13 TO Z13
STORE (V14/1000) + Z14 TO Z14
STORE (V15/1000) + Z15 TO Z15
STORE (V16/1000) + Z16 TO Z16
STORE (V17/1000) + Z17 TO Z17
STORE (V18/1000) + Z18 TO Z18
STORE (V19/1000) + Z19 TO Z19
STORE (V20/1000) + Z20 TO Z20
STORE (V21/1000) + Z21 TO Z21
STORE (V22/1000) + Z22 TO Z22
STORE (V23/1000) + Z23 TO Z23
STORE (V24/1000) + Z24 TO Z24
STORE (V25/1000) + Z25 TO Z25
STORE (V26/1000) + Z26 TO Z26
STORE ZZV1 + Z38 TO Z38
* impression des résultats annuels par fivondronana / faritany.
SET PRINT ON
?? CHR(15)
DO CHOIX FIV
SET PRINT ON
SET CONSOLE OFF
?? 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)+" | ";
+STR(Q23,8)+STR(Q24,8)+STR(Q25,8)+STR(Q26,8)+" | "
? " | "+SPACE(10)+"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,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)+STR(V21/1000,8)+STR(V22/1000,8)+" | "
?? STR(V23/1000,8)+STR(V24/1000,8)+STR(V25/1000,8)+STR(V26/1000,8)+" | "
SET PRINT OFF
STORE O TO TTQ1,ZZV1
STORE STR ((VAL (Y)),3) TO Y
* impression des totaux annuels pour tous les fivondronana d'un faritany.
IF (Y="119" .OR. Y="209" .OR. Y="322" .OR. Y="421" .OR. Y="518" .OR. Y="621")
DO LINE
SET CONSOLE OFF
SET PRINT ON
?? CHR(15)
? "| TOTAUX"+SPACE (222)+"|"
? "|QUANTITE "+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)+" | "+STR(T23,8)+STR(T24,8);
+STR(T25,8)+STR(T26,8)+" |"
? "| VALEUR"+STR(Z1,8)+STR(Z2,8)+STR(Z3,8)+STR(Z4,8)+STR(Z5,8)+STR(Z6,8);
+STR(Z7,8)+STR(Z8,8)+STR(Z9,8)+STR(Z10,8)+" | "+STR(Z11,8)+STR(Z12,8)+STR(Z13,8);
+STR(Z14,8)+STR(Z15,8)+STR(Z16,8)+STR(Z17,8)+STR(Z18,8)
?? " | "+STR(Z19,8)+STR(Z20,8)+STR(Z21,8)+STR(Z22,8)+" | "+STR(Z23,8)+STR(Z24,8);
+STR(Z25,8)+STR(Z26,8)+" |"
?? CHR(18)
SET PRINT OFF
DO LINE
STORE '3' TO Part
ENDIF
* fin de la première partie du tableau des résultats annuels pour tous les
* fivondronana d'un faritany.
ELSE
* seconde partie du tableau des résultats annuels pour tous les fivondronana
* d'un faritany.
IF Part = "3"
DO CASE
CASE Far ="1'
STORE '103' TO Y
CASE Far ="2'
STORE '202' TO Y
CASE Far ="3'
STORE '302' TO Y
CASE Far ="4'
STORE '402' TO Y
CASE Far ="5'
STORE '502' TO Y
CASE Far ="6'
STORE '602' TO Y
ENDCASE
ENDIF
STORE '2' TO Part
* impression de l'entête.
IF Count = 1
SET PRINT ON
EJECT
? SPACE(16)+"Seconde partie"
?? SPACE(10)
?? CHR(14)
?? "EXPEDITIONS hors FIVONDRONANA"
?? CHR(20)
?? CHR(15)
? SPACE(24)+"Date : "+DTOC(Mdate)
?? CHR(18)
?
DO SETUP
SET PRINT OFF
DO LINE
ENDIF
STORE Count + 1 TO Count
* calcul des résultats, seconde partie, résultats annuels par fivondronana.
USE C:ZIP 2.DBF &&open
APPEND FROM C:ZIP 3 FOR (FIVONDRON = Y .AND. 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')
DELETE ALL
PACK
USE &&close
* usage de variables mémorires pour sommation plus rapide des
* quantités et valeurs, seconde partie.
STORE (V27/1000) + Z27 TO Z27
STORE (V28/1000) + Z28 TO Z28
STORE (V29/1000) + Z29 TO Z29
STORE (V30/1000) + Z30 TO Z30
STORE (V31/1000) + Z31 TO Z31
STORE (V32/1000) + Z32 TO Z32
STORE (V33/1000) + Z33 TO Z33
STORE (V34/1000) + Z34 TO Z34
STORE (V35/1000) + Z35 TO Z35
STORE (V36/1000) + Z36 TO Z36
STORE (V37/1000) + Z37 TO Z37
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
USE C:ZIP 3
SUM QUANTITE,VALEUR TO QTOT,VTOT FOR (FIVONDRON = Y)
USE && close
STORE QTOT + T40 TO T40
STORE (VTOT/1000) + Z40 TO Z40
* impression des résultats annuels / fivondronana, seconde partie.
SET PRINT ON
?? CHR(15)
DO CHOIX FIV
SET PRINT ON
SET CONSOLE OFF
?? 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(QTOT,14)+" | "
? SPACE(25)+" | "+SPACE(14)
?? 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(VTOT/1000),14)+" | "
SET PRINT OFF
STORE O TO TTQ2,ZZV2
STORE STR ((VAL(Y)),3) TO Y
* impression des totaux / faritany, seconde partie.
IF (Y="119" .OR. Y="209" .OR. Y="322" .OR. Y="421".OR. Y="518" .OR. Y="621")
DO LINE
SET CONSOLE OFF
SET PRINT ON
?? CHR(15)
? SPACE(25)+"| TOTAUX"+SPACE(135)+" | "
? SPACE(25)+"| QUANTITE"+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(T40,8)+" | "
? SPACE(25)+"| VALEUR"+STR(Z27,8)+STR(Z28,8)+STR(Z29,8)+" | "+STR(Z30,8);
+" | "+STR(Z31,8)+" | "+STR(Z32,8)+" | "+STR(Z33,8)+STR(Z34,8)+" | "+STR(Z35,8);
+" | "+STR(Z36,8)+" | "+STR(Z37,8)+"||"+STR(Z40,14)+" | "
DO LINE
?? CHR(18)
ENDIF
ENDIF &&part 2
ENDIF &&<>'000'
* arrangements pour terminer la boucle principale.
IF Fiv ="000'
STORE STR((VAL (Y)+1),3) TO Y
IF Far ="1'
IF Y ="110'
STORE STR((VAL(Y)+2),3) TO Y
ENDIF
IF Y ="120'
IF Part = "2"
STORE .F. TO Process
ENDIF
ENDIF
ELSE
IF Far ="2'
IF Y ="210'
IF Part = "2"
STORE .F. TO Process
ENDIF
ENDIF
ELSE
IF Far ="3'
IF Y ="323'
IF Part = "2"
STORE .F. TO Process
ENDIF
ENDIF
ELSE
IF Far ="4'
IF Y ="422'
IF Part = "2"
STORE .F. TO Process
ENDIF
ENDIF
ELSE
IF Far ="5'
IF Y = "519"
IF Part = "2"
STORE .F. TO Process
ENDIF
ENDIF
ELSE
IF Far ="6'
IF Y ="622'
IF Part = "2"
STORE .F. TO Process
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDDO Process
* fin de boucle principale.
* arrangements pour la remise à l'état d'origine.
USE
SET PRINT ON
EJECT
SET PRINT OFF
DELETE FILE C:Zip_3.DBF
DELETE FILE C:Zip_2.DBF
DELETE FILE C:Zipzip.DBF
RELEASE ALL
RETURN
* retour au menu principal.
*********************************************************************************************
Ce programme calcule, par mois ou par année, les expéditions hors fivondronana
par nature des produits et par destination.
Les informations traitées ne concernent que les expéditions et non les exportations.
Les données ont été transférées sur disque dur pour raison de sécurité.
Les résultats sont présentés mensuellement par destination ou annuellement
pour toutes les destinations d'un faritany.
Le mois 13 donne les résultats annuels par fivondronana.
*********************************************************************************************
* Création de deux fichiers pour traitement plus rapide.
USE C:Zipzip
COPY STRUCTURE TO C:Zip_3.DBF
COPY STRUCTURE TO C:Zip_2.DBF
USE
* choix du mois désiré.
SET TALK OFF
SET CONSOLE OFF
IF VAL (Mois) < 10
STORE STR (VAL (Mois),2) TO Mois
ELSE
STORE STR(VAL(Mois),2) TO Mois
ENDIF
IF Des ="1'
STORE VAL (Mois) TO Tel
ELSE
STORE 1 TO Tel
ENDIF
STORE Fiv TO Twee
STORE .T. TO Process
STORE 1 TO Count
STORE '1' TO Part, Boucle
* Zip_3 ne contient que les informations des expéditions (pas
* celles des exportations).
USE C:Zip_3
APPEND FROM C:Zipzip FOR(DESTIN < "700")
USE &&closeZip_3
* Boucle principale.
DO WHILE Process
* si des résultants mensuels sont demandés. (mois 13 donne les résultats
* annuels par fivondronana.
IF Des = "1"
USE C:Zip_3.DBF
INDEX ON Destin TO C:Dein-dx.ndx
USE
* boucle des mois.
DO WHILE Tel < 14
STORE SPACE(2) TO X
IF Tel < 10
STORE 'O'+STR(Tel,1) TO X
ELSE
STORE STR(Tel,2) TO X
ENDIF
* initialisation du paramètre YY.
DO CASE
CASE Count = 1
STORE 103 TO YY
CASE Count = 2
STORE 202 TO YY
CASE Count = 3
STORE 302 TO YY
CASE Count = 4
STORE 402 TO YY
CASE Count = 5
STORE 502 TO YY
CASE Count = 6
STORE 602 TO YY
ENDCASE
STORE STR(YY,3) TO Y
* boucle des destinations (fivondronana).
DO WHILE YY < 622
IF (Part ="1' .AND. Boucle ="1')
STORE Twee TO Fiv
* impression de l'entête.
DO Setup
DO Line
ENDIF
STORE '2' TO Boucle
* recherche de la destination dans un fichier indexé.
STORE STR(YY,3) TO Y,Key
USE C:Zip_3 INDEX C:Dein-dx
FIND &Key
* si recherche fructueuse, calcul des résultats désirés.
IF FOUND ()
USE C:Zip_2.DBF
IF X <> '13'
APPEND FROM C:Zip_3 FOR (DESTIN = Y .AND. SUBSTR(DTOC(DATE),4,2) = X)
ELSE
APPEND FROM C:Zip_3 FOR(DESTIN = Y)
ENDIF
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 &&closeZip_2
ENDIF &&Found
USE &&close c:zip_3
* impression du fivondronana.
STORE Y TO Fiv
SET PRINT ON
?? CHR(15)
DO CHX FIV
SET PRINT ON
SET CONSOLE OFF
* impression des résultats si valeur est positive.
IF (Q20 > 0 .OR. V20 > 0)
?? " Q1"+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(15)+"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,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)+" | "
ELSE
?? CHR(15)
?? " | pas de données d'expédition |_| ou données manquantes |_| …"
?? SPACE(140)+"|"
ENDIF &&Q,V20>0
SET PRINT OFF
* remise à zéro des variables mémoires.
STORE 0 TO Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q12,Q13,Q14,Q15,Q16,Q17
STORE 0 TO Q18,Q19,Q20,V1,V2,V3,V4,V5,V6,V7,V8,V9,V10,V11,V12,V13,V14
STORE 0 TO V15,V16,V17,V18,V19,V20
STORE (YY+1) TO YY
* saut pour le code d'Antsirabe.
IF YY = 111
STORE (YY+1) TO YY
ENDIF
* impression et calcul des résultats totaux après transfert des données
* sur fichier limité.
IF (YY=120 .OR. YY=210 .OR. YY=323 .OR. YY=422 .OR. YY=519 .OR. YY=622)
DO CASE
CASE YY = 120
STORE STR (120,3) TO ZZ
STORE STR (102,3) TO Z
CASE YY = 210
STORE STR (210,3) TO ZZ
STORE STR (201,3) TO Z
CASE YY = 323
STORE STR (323,3) TO ZZ
STORE STR (301,3) TO Z
CASE YY = 422
STORE STR(422,3) TO ZZ
STORE STR(401,3) TO Z
CASE YY = 519
STORE STR(519,3) TO ZZ
STORE STR(501,3) TO Z
CASE YY = 622
STORE STR (622,3) TO ZZ
STORE STR (601,3) TO Z
ENDCASE
DO LINE
SET CONSOLE OFF
USE C:Zip 2.DBF
IF X <> '13'
APPEND FROM C:Zip_3 FOR ((DESTIN>Z .AND. DESTIN<ZZ) .AND. SUBSTR(DTOC(DATE),4,2)=X)
ELSE
APPEND FROM C:Zip_3 FOR (DESTIN > Z .AND. DESTIN < ZZ)
ENDIF
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 &&closeZip_2
* impression des résulats totaux.
SET PRINT ON
?? CHR(15)
? "| TOTAUX"
?? " QUANTITE |"+STR(Q1,8)+STR(Q2,8)+STR(03,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(8)+"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
* remise à zèro des variables mémoires.
STORE 0 TO Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q12,Q13,Q14,Q15,Q16,Q17
STORE 0 TO Q18,Q19,Q20,V1,V2,V3,V4,V5,V6,V7,V8,V9,V10,V11,V12,V13,V14
STORE 0 TO V15,V16,V17,V18,V19,V20
STORE Count + 1 TO Count
SET PRINT ON
EJECT
SET PRINT OFF
ENDIF &&YY…=622<
* saut pour les codes des fivondronana, passage au faritany suivant.
IF YY = 120
STORE (YY+82) TO YY
STORE "1" TO Part, Boucle
ELSE
IF YY = 210
STORE (YY+92) TO YY
STORE "1" TO Part, Boucle
ELSE
IF YY = 323
STORE (YY+79) TO YY
STORE "1" TO Part, Boucle
ELSE
IF YY = 422
STORE (YY+80) TO YY
STORE "1" TO Part, Boucle
ELSE
IF YY = 519
STORE (YY+83) TO YY
STORE "1" TO Part, Boucle
ELSE
IF YY = 622
STORE (YY+80) TO YY
STORE "2" TO Boucle
ENDIF &&YY=622
ENDIF &&YY=519
ENDIF &&YY=422
ENDIF &&YY=323
ENDIF &&YY=210
ENDIF &&YY=120
* fin de boucle fivondronana.
ENDDO &&YY<622
SET PRINT ON
EJECT
SET PRINT OFF
IF (Tel > 13 .AND. Boucle ="2")
STORE .F. TO Process
ELSE
IF (Tel < 14 .AND. Boucle ="2")
STORE '1' TO Part, Boucle
STORE Tel+1 TO Tel
STORE 1 TO Count
STORE 103 TO YY
STORE .T. TO Process
ENDIF
ENDIF
* fin de boucle des mois.
ENDDO &&Tel<14
* fin de calcul des résultats mensuels/annuels par fivondronana.
ELSE
* si des résultats annuels pour tous les fivondronana d'un faritany sont
* demandés.
IF Des = "2"
STORE "1" TO Part, Boucle
SET TALK OFF
SET CONSOLE OFF
STORE 103 TO YY
STORE STR(YY,3) TO Y
USE C:Zip 3
INDEX ON DESTIN TO C:Dein-dx.NDX
USE
* boucle des fivondronana.
DO WHILE YY < 622
* impression de l'entête.
IF (Part ="1' .AND. Boucle ="1')
STORE Twee TO Fiv
DO Setup
DO Line
ENDIF
STORE '2' TO Boucle
STORE STR(YY,3) TO Y, Key
STORE 0 TO Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q12,Q13,Q14,Q15,Q16
STORE 0 TO Q17,Q18,Q19,Q20,V17,V18,V19,V20
STORE 0 TO V1,V2,V3,V4,V5,V6,V7,V8,V9,V10,V11,V12,V13,V14,V15,V16
USE C:Zip_3 INDEX C:Dein-dx
* recherche sur fichier indexé.
FIND &Key
* Si recherche fructueuse, calcul des résultats.
IF FOUND()
USE C:Zip 2.DBF
APPEND FROM C:Zip 3 FOR(DESTIN = Y)
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 &&closeZip_2
ENDIF &&Found
USE &&closeZip_3
* impression du nom du fivondronana.
STORE Y TO Fiv
SET PRINT ON
?? CHR(15)
DO CHX FIV
SET PRINT ON
SET CONSOLE OFF
* impression des résultats si valeurs sont positives.
IF (Q20 > 0 .OR. V20 > 0)
?? " Q1"+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(15)+"VI"+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)+" | "
ELSE
?? CHR(15)
?? " | pas de données d'expédition |_| ou données manquantes |_| ....."
?? SPACE (129)+"|"
ENDIF &&Q,V20>0
SET PRINT OFF
STORE (YY + 1) TO YY
IF YY = 111
STORE (YY+1) TO YY
ENDIF
* impression et calcul des totaux.
IF (YY=120 .OR. YY=210 .OR. YY=323 .OR. YY=422 .OR. YY=519 .OR. YY=622)
DO CASE
CASE YY = 120
STORE STR(120,3) TO ZZ
STORE STR (102,3) TO Z
CASE YY = 210
STORE STR (210,3) TO ZZ
STORE STR (201,3) TO Z
CASE YY = 323
STORE STR (323,3) TO ZZ
STORE STR (301,3) TO Z
CASE YY = 422
STORE STR (422,3) TO ZZ
STORE STR (401,3) TO Z
CASE YY = 519
STORE STR (519,3) TO ZZ
STORE STR (501,3) TO Z
CASE YY = 622
STORE STR (622,3) TO ZZ
STORE STR (601,3) TO Z
ENDCASE
DO LINE
* remise à zéro des variables mémoires.
STORE 0 TO Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q12,Q13,Q14,Q15,Q16
STORE 0 TO Q17,Q18,Q19,Q20,V17,V18,V19,V20
STORE 0 TO V1,V2,V3,V4,V5,V6,V7,V8,V9,V10,V11,V12,V13,V14,V15,V16
* calcul des résultats totaux.
USE C:Zip 2.DBF
DELETE ALL
PACK
APPEND FROM C:Zip 3 FOR(DESTIN> Z.AND. DESTIN <ZZ)
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 &&closeZip_3
* impression des résultats totaux.
SET PRINT ON
?? CHR(15)
? "| TOTAUX"
?? "QUANTITE |"+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)+" | "
? " | "+SPACE(8)+"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
SET PRINT ON
EJECT
SET PRINT OFF
SET CONSOLE OFF
ENDIF &&YY=…622
* saut pour codes fivondronana, passage au faritany suivant.
IF YY = 120
STORE (YY+82) TO YY
STORE '1' TO Part, Boucle
ELSE
IF YY = 210
STORE (YY+92) TO YY
STORE '1' TO Part, Boucle
ELSE
IF YY = 323
STORE (YY+79) TO YY
STORE '1' TO Part, Boucle
ELSE
IF YY = 422
STORE (YY+80) TO YY
STORE '1' TO Part, Boucle
ELSE
IF YY = 519
STORE (YY+83) TO YY
STORE '1' TO Part, Boucle
ELSE
IF YY = 622
STORE (YY+80) TO YY
STORE .F. TO Process
ENDIF &&YY=622
ENDIF &&YY=519
ENDIF &&YY=422
ENDIF &&YY=323
ENDIF &&YY=210
ENDIF &&YY=120
* arrangement pour terminer la boucle fivondronana.
IF YY > 622
STORE .F. TO Process
ELSE
STORE .T. TO Process
ENDIF
* fin de boucle fivondronana.
ENDDO &&YY
ELSE
RELEASE ALL
RETURN
ENDIF
ENDIF
STORE .F. TO Process
* fin de boucle principale.
ENDDO Process
* remise en état de l'environnement de travail.
USE
DELETE FILE C:Dein de.NDX
DELETE FILE C:Zip_2.DBF
DELETE FILE C:Zip_3.DBF
DELETE FILE C:Zipzip.DBF
SET TALK ON
RELEASE ALL
RETURN
* retour au menu des expéditions/exportations.
************************************************************************************************
Ce programme calcule, par mois ou par année, les expéditions hors fivondronana
par MOYEN DE CONSERVATION et par DESTINATION.
Les données ont été transférées sur disque dur pour raison de sécurité.
Le programme ne traite que les expéditions et non les exportations hors
fivondronana.
Les résultats sont présentés mensuellement par destination ou annuellement
pour tous les fivondronana de destination.
Le programme comporte deux parties, chacunne ayant deux unités; ceci en
raison de la largeur des tableaux.
************************************************************************************************
* création de deux fichiers additionnels pour traitement plus rapide.
USE C:Zipzip
COPY STRUCTURE TO C:Zip_2.DBF
COPY STRUCTURE TO C:Zip_3.DBF
USE
SET TALK OFF
SET CONSOLE OFF
Mdate = Date ()
STORE Fiv TO Twee, Y
STORE SPACE (1) TO Far_1
* démarrage du programme à partir d'un certain mois sélectioné.
IF Val(Mois) <10
Mois = STR (VAL(Mois),2)
ELSE
Mois = STR(VAL(Mois),2)
ENDIF
IF Des ="1'
Tel = VAL(Mois)
ELSE
Tel = 1
ENDIF
STORE "1" TO Part, Boucle
STORE 1 TO Count
STORE .T. TO Process
DO WHILE Process
* première partie : calcul et présentation des résultats mensuels par
* fivondronana d'origine , par mois et par fivondronana de destination.
IF Des ="1'
* première partie - calcul et résultats jusqu'au "crabes".
USE C:Zipzip.DBF
INDEX ON DESTIN TO C:Dein-dx.NDX
USE
DO WHILE Tel <13
STORE "" TO X
IF Tel < 10
STORE '0'+STR(Tel,1) TO X
ELSE
STORE STR(Tel,2) TO X
ENDIF
* sélection des enrégistrements par mois et copiage dans fichier zip_3.
USE C:Zip_3.DBF
APPEND FROM C:Zipzip FOR(DESTIN < "700" .AND. SUBSTR(DTOC(DATE),4,2,)=X)
USE &&closeZip_3
* initialisations de la variable YY.
DO CASE
CASE count = 1
STORE 103 TO YY
CASE count = 2
STORE 202 TO YY
CASE count = 3
STORE 302 TO YY
CASE count = 4
STORE 402 TO YY
CASE count = 5
STORE 502 TO YY
CASE count = 6
STORE 602 TO YY
ENDCASE
* calcul pour tous les fivondronana de destination et par mois.
DO WHILE YY < 622
IF (Part ="1' .AND. Boucle ="1')
STORE Twee TO Fiv
DO SETUP
DO LINE
STORE "3" TO Boucle
ENDIF
STORE STR(YY,3) TO Y
* première partie du tableau.
IF Part ="1'
STORE STR(YY,3) TO Y.Key
STORE 0 TO Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q12,Q13,Q14,Q15,Q16,Q17,Q18,Q19
STORE 0 TO V1,V2,V3,V4,V5,V6,V7,V8,V9,V10,V11,V12,V13,V14,V15,V16,V17,V18,V19
STORE 0 TO Q20,Q21,Q22,V20,V21,V22
USE C:Zipzip INDEX C:Dein-dx
* recherche sur fichier indexé.
FIND &Key
IF FOUND ()
* si recherche fructueuse, calcul des résultats.
USE C:ZIP 2.DBF &&open
APPEND FROM C:ZIP 3 FOR(DESTIN = Y .AND. CONSERV <23")
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 Q20,V20 FOR(CONSERV = "20")
SUM QUANTITE,VALEUR TO Q21,V21 FOR(CONSERV = "21")
SUM QUANTITE,VALEUR TO Q22,V22 FOR(CONSERV = "22")
DELETE ALL
PACK
USE &&closeZip_2
ENDIF &&Found
USE &&closeZip_3
* impression du nom du fivondronana.
STORE Y TO Fiv
SET PRINT ON
?? CHR(15)
DO CHX-FIV
SET PRINT ON
SET CONSOLE OFF
* impression des résultats uniquement si il y a une valeur positive.
IF(Q1>0 .OR. Q2>0 .OR. Q3>0 .OR. Q4>0 .OR. Q5>0 .OR. Q6>0 .OR. Q7>0 .OR. Q8>0;
.OR. Q9>0 .OR. Q10>0 .OR. Q11>0 .OR. Q12>0 .OR. Q13>0 .OR. Q14>0 .OR. Q15>0;
.OR. Q16>0 .OR. Q17>0 .OR. Q18>0 .OR. Q19>0 .OR. Q20>0 .OR. Q21>0 .OR. Q22>0)
?? " Quant|"+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(14)+" Val. |"+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,8);
+STR(V21/1000,8)+STR(V22/1000,8)+" | "
ELSE
?? CHR(15)
?? " | pas de données d'expédition |_| ou données manquantes |_| …"
?? Space(117)+"|"
ENDIF &&Q1…Q22>0
SET PRINT OFF
* remise à zéro des variables.
STORE 0 TO Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q12,Q13,Q14,Q15,Q16
STORE 0 TO Q17,Q18,Q19,Q20,Q21,Q22
STORE 0 TO V1,V2,V3,V4,V5,V6,V7,V8,V9,V10,V11,V12,V13,V14,V15,V16
STORE 0 TO V17,V18,V19,V20,V21,V22
STORE (YY+1) TO YY
* saut de programme pour le code d'ANTSIRABE.
IF YY = 111
STORE (YY+1) TO YY
ENDIF
* initialisation des calculs de la première partie du tableau.
IF (YY=120 .OR. YY=210 .OR. YY=323 .OR. YY=422 .OR. YY=519 .OR. YY=622)
STORE "1" TO Part
DO LINE
SET CONSOLE OFF
STORE 0 TO Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q12,Q13,Q14,Q15,Q16
STORE 0 TO Q17,Q18,Q19,Q20,Q21,Q22
STORE 0 TO V1,V2,V3,V4,V5,V6,V7,V8,V9,V10,V11,V12,V13,V14,V15,V16
STORE 0 TO V17,V18,V19,V20,V21,V22
DO CASE
CASE YY =120
STORE STR (102,3) TO Z
STORE STR (120,3) TO ZZ
CASE YY = 210
STORE STR (201,3) TO Z
STORE STR (210,3) TO ZZ
CASE YY =323
STORE STR (301,3) TO Z
STORE STR (323,3) TO ZZ
CASE YY =422
STORE STR (401,3) TO Z
STORE STR (422,3) TO ZZ
CASE YY = 519
STORE STR (501,3) TO Z
STORE STR (519,3) TO ZZ
CASE YY = 622
STORE STR (601,3) TO Z
STORE STR (622,3) TO ZZ
ENDCASE
* calcul des totaux de la premiére partie du tableau.
USE C:ZIP 2.DBF &&open
APPEND FROM C:ZIP 3 FOR (DESTIN > Z .AND. DESTIN < ZZ) .AND. CONSERV > "23")
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 Q20,V20 FOR(CONSERV = "20")
SUM QUANTITE,VALEUR TO Q21,V21 FOR(CONSERV = "21")
SUM QUANTITE,VALEUR TO Q22,V22 FOR(CONSERV = "22")
DELETE ALL
PACK
USE &&close
* impression des totaux de la premiére partie du tableau.
SET PRINT ON
SET CONSOLE OFF
?? CHR(15)
? "|"+SPACE(1)+"TOTAUX"
?? SPACE(5)+"QUANTITE|"+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(12)+"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,8);
+STR(V21/1000,8)+STR(V22/1000,8)+" | "
SET PRINT OFF
DO LINE
* initialisation au passage vers la deuxième partie du tableau.
STORE "2" TO Part, Boucle
IF YY = 622
STORE 602 TO YY
ENDIF
ENDIF &&YY…=622
* fin de la première partie du tableau.
ELSE
* seconde unité de la première partie, calculs et résultats par fivondronana
* d'origine, par mois et par fivondronana de destination + totaux.
IF Part ="2'
* impression de l'entête.
IF (Part= "8" .AND. Boucle = "2")
STORE Twee TO Fiv
SET PRINT ON
EJECT
?? CHR (27) + CHR(69)
? "Seconde pertie"
?? CHR(27) + CHR(70)
?? CHR(14)
?? SPACE(6)+"EXPEDITIONS hors FIVONDRONANA -1987-"
?? CHR(20)
?? SPACE(4)+" Date : "+DTOC(Mdate)
DO SETUP
DO LINE
ENDIF
STORE "3" TO Boucle
* initialisation de la variable YY.
DO CASE
CASE YY = 120
STORE 103 TO YY
CASE YY = 210
STORE 202 TO YY
CASE YY = 323
STORE 302 TO YY
CASE YY = 422
STORE 402 TO YY
CASE YY = 519
STORE 502 TO YY
CASE YY = 602
STORE 602 TO YY
ENDCASE
* calculs pour tous les fivondronana de destination, par mois et moyen de
* conservation.
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
* recherche sur fichier indexé.
STORE STR (YY,3) TO Y,Key
USE C:Zipzip INDEX C:Dein-dx
FIND &Key
* si recherche fructuese, calcul des résultats.
IF FOUND()
USE C:ZIP 2.DBF.
APPEND FROM C:ZIP 3 FOR(DESTINE = Y .AND. CONSERVE> "22")
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")
DELETE ALL
PACK
USE &&closeZip_2
USE C:ZIP 3.DBF
SUM QUANTITE, VALEUR TO Q38,V38 FOR(DESTIN = Y)
USE &&closeZip_3
ENDIF &&Found
USE &&closeZipzip
* impression du nom du fivondronana.
STORE Y TO Fiv
SET PRINT ON
?? CHR(15)
?? SPACE(10)
DO CHX FIV
SET PRINT ON
SET CONSOLE OFF
* impression des rèsultats si le total est positif.
IF (Q38 >0 .OR. V38>0)
?? "Quantité |"+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,14)+" | "
? " | "+SPACE(15)+"Valeur |"+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,8)+" | "
ELSE
?? CHR(15)
?? "| pas de données d'expédition |_|… données manquantes |_|"
?? SPACE (103)+" | "
ENDIF &&0,V>38
SET PRINT OFF
* remise des variables à zéro.
STORE 0 TO Q23,Q24,Q25,Q26,Q27,Q28,Q29,Q30,Q31,Q32,Q33,Q34,Q35
STORE 0 TO Q36,Q37,Q38
STORE 0 TO V23,V24,V25,V26,V27,V28,V29,V30,V31,V32,V33,V34,V35
STORE 0 TO V36,V37,V38
STORE (YY+1) TO YY
* saut pour le code d'Antsirabe.
IF YY = 111
STORE (YY+1) TO YY
ENDIF
* impression et calcul des totaux de la seconde partie du tableau.
IF (YY = 120 .OR. YY=210 .OR. YY=323 .OR. YY=422 .OR. YY=519 .OR. YY=622)
DO LINE
SET CONSOLE OFF
DO CASE
CASE YY = 120
STORE STR(120,3) TO ZZ
STORE STR(102,3) TO Z
CASE YY = 210
STORE STR(210,3) TO ZZ
STORE STR(201,3) TO Z
CASE YY = 323
STORE STR(323,3) TO ZZ
STORE STR(301,3) TO Z
CASE YY = 422
STORE STR(422,3) TO ZZ
STORE STR(401,3) TO Z
CASE YY = 519
STORE STR(519,3) TO ZZ
STORE STR(501,3) TO Z
CASE YY = 622
STORE STR(622,3) TO ZZ
STORE STR(601,3) TO Z
ENDCASE
* remise à zéro des variables.
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.
USE C:ZIP 2.DBF
APPEND FROM C:ZIP_3 FOR ((DESTINE > Z .AND. DESTIN < ZZ) .AND. CONSERV> "22")
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")
DELETE ALL
PACK
USE &&closeZip_2
USE C:ZIP_3.DBF
SUM QUANTITE,VALEUR TO Q38,V38 FOR (DESTIN> Z .AND. DESTIN> ZZ)
USE &&closeZip_3
SET PRINT ON
* impression des totaux.
SET CONSOLE OFF
?? CHR(15)
? "| TOTAUX"
?? SPACE(8)+"QUANTITE |"+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,14)+" | "
? " | "+SPACE(16)+"VALEUR |"+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,8)+" | "
DO LINE
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
SET PRINT ON
EJECT
SET PRINT OFF
ENDIF &&YY…=622
* retour vers le début de la boucle du programme et initialisation de la
* sortie de la boucle.
IF YY = 120
STORE "1" TO Boucle, Part
STORE (YY+82) TO YY
ELSE
IF YY = 210
STORE "1" TO Boucle, Part
STORE (YY+92) TO YY
ELSE
IF YY = 323
STORE "1" TO Boucle, Part
STORE (YY+79) TO YY
ELSE
IF YY = 422
STORE "1" TO Boucle, Part
STORE (YY+80) TO YY
ELSE
IF YY = 519
STORE "1" TO Boucle, Part
STORE (YY+83) TO YY
ELSE
IF YY = 622
STORE (YY+80) TO YY
IF Tel > 11
STORE '2' TO Part, Boucle
ELSE
STORE '1' TO Part, Boucle
ENDIF
ENDIF &&YY=622
ENDIF &&YY=519
ENDIF &&YY=422
ENDIF &&YY=323
ENDIF &&YY=210
ENDIF &&YY=120
ENDIF &&part=2
* reprise des résultats par fivondronana d'origine et pour le mois suivant.
ENDIF &&Part=1
STORE Count + 1 TO Count
ENDDO &&YY<622
Count = 1
STORE 103 TO YY
* fin de la boucle.
IF (Tel > 11 .AND. PART ="2')
STORE .F. TO Process
ELSE
STORE .T. TO Process
ENDIF
STORE Tel + 1 TO Tel
USE C:Zip 3
DELETE ALL
PACK
USE &&close Zip_3
ENDDO &&Tel<13
ELSE
* résultats par fivondronana d'origine et par année
IF Des ="2'
DO EX4Mbis
ENDIF &&Des=2
ENDIF &&Des=1
* fin de la boucle principale.
ENDDO &&Process
SET PRINT ON
EJECT
SET PRINT OFF
* retour au menu principal et remise à l'état d'origine.
USE
DELETE FILE C:ZIP_2.DBF
DELETE FILE C:ZIP_3.DBF
DELETE FILE C:Dein_dx.MDX
DELETE FILE C:Zipzip.DBF
SET SAFETY ON
SET TALK ON
SET CONSOLE ON
RELEASE ALL
RETURN
* fin du programme.
***************************************************************************************
Ce programme calcule par année, les expéditions hors fivondronana par
MOYEN DE CONSERVATION et par DESTINATION.
Les données ont été transférées sur disque dur pour raison de sécurité.
Le programme ne traite que les informations des expéditions et non des
exportations.
Les résultats sont présentés annuellement pour tous les fivondronana de
destination.
***************************************************************************************
* première partie des estimations annuelles - préparation de l'environment
* de travail.
SET SAFETY OFF
SET TALK OFF
SET CONSOLE OFF
STORE "1" TO Boucle
STORE 103 TO YY
USE C:Zipzip
INDEX ON DESTIN TO C:Dein-dx.NDX
USE &&closezipzip
USE C:Zip 3
APPEND FROM C:Zipzip FOR(DESTIN < "700")
USE &&close Zip_3
* boucle principale.
DO WHILE YY < 622
* première partie, impression de l'entête.
IF Part ="1'
STORE Fiv_1 TO Fiv
STORE Fiv TO Y
IF (Part ="1' .AND. Boucle = "1")
DO SETUP
DO LINE
ENDIF
STORE "2" TO Boucle
* initialisation des variables.
STORE STR(YY,3) TO Y,Key
STORE 0 TO Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q12,Q13,Q14,Q15,Q16,Q17
STORE 0 TO Q18,Q19,Q20,Q21,Q22,V20,V21,V22,V18,V19
STORE 0 TO V1,V2,V3,V4,V5,V6,V7,V8,V9,V10,V11,V12,V13,V14,V15,V16,V17
* recherche sur fichier indexé.
USE C:Zipzip INDEX Dein-dx
FIND &Key
* si recherche fructueuse, calcul et impression des résultats.
IF FOUND()
USE C:ZIP 2.DBF
APPEND FROM C:ZIP 3 FOR (DESTIN = Y .AND. CONSERV < "23")
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 = "010")
SUM QUANTITE,VALEUR TO Q11,V11 FOR(CONSERV = "011")
SUM QUANTITE,VALEUR TO Q12,V12 FOR(CONSERV = "012")
SUM QUANTITE,VALEUR TO Q13,V13 FOR(CONSERV = "013")
SUM QUANTITE,VALEUR TO Q14,V14 FOR(CONSERV = "014")
SUM QUANTITE,VALEUR TO Q15,V15 FOR(CONSERV = "015")
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 Q20,V20 FOR(CONSERV = "20")
SUM QUANTITE,VALEUR TO Q21,V21 FOR(CONSERV = "21")
SUM QUANTITE,VALEUR TO Q22,V22 FOR(CONSERV = "22")
DELETE ALL
PACK
USE &&closeZip_2
ENDIF &&Found()
USE &&closeZipzip
* impression du nom du fivondronana.
STORE Y TO Fiv
SET PRINT ON
?? CHR (15)
DO CHX FIV
SET PRINT ON
* impression des résultats si les valeurs sont positives.
SET CONSOLE OFF
IF (Q1>0 .OR. Q2>0 .OR. Q3>0 .OR. Q4>0 .OR. Q5>0 .OR. Q6>0 .OR. Q7>0 .OR. Q8>0;
.OR. Q9>0.OR. Q10>0 .OR. Q11>0 .OR. Q12>0 .OR. Q13>0 .OR. Q14>0 .OR. Q15>0;
.OR. Q16>0 .OR. Q17>0 .OR. Q18>0 .OR. Q19>0 .OR. Q20> .OR. Q21> .OR. Q22>0)
?? " Quant|"+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(13)+" Val. |"+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,8);
+STR(V21/1000,8)+STR(V22/1000,8)+" | "
ELSE
?? CHR(15)
?? "| pas de données d'expédition |_| ou données manquantes |_|"
?? SPACE(121)+"|"
ENDIF &&D1..Q22>0
SET PRINT OFF
* remise à zéro des variables.
STORE 0 TO Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q12,Q13,Q14,Q15,Q16
STORE 0 TO Q17,Q18,Q19,Q20,Q21,Q22
STORE 0 TO V1,V2,V3,V4,V5,V6,V7,V8,V9,V10,V11,V12,V13,V14,V15,V16
STORE 0 TO V17,V18,V19,V20,V21,V22
* passage au fivondronana suivant et saut pour le fivondronana d'Antsirabe.
STORE (YY+1) TO YY
IF YY = 111
STORE (YY+1) TO YY
ENDIF
* impression des totaux de la première partie du tableau.
IF (YY=120 .OR. YY=210 .OR. YY=223 .OR. YY=422 .OR. YY=519 .OR. YY=622)
STORE '1' TO Part
DO LINE
SET CONSOLE OFF
* initialisation des variables à zéro.
STORE 0 TO Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q12,Q13,Q14,Q15,Q16,Q17
STORE 0 TO Q18,Q19,Q20,Q21,Q22
STORE 0 TO V1,V2,V3,V4,V5,V6,V7,V8,V9,V10,V11,V12,V13,V14,V15,V16
STORE 0 TO V17,V18,V19,V20,V21,V22
* initialisation des variables Z et ZZ.
DO CASE
CASE YY = 120
STORE STR(102,3) TO Z
STORE STR(120,3) TO ZZ
CASE YY = 210
STORE STR(201,3) TO Z
STORE STR(210,3) TO ZZ
CASE YY = 323
STORE STR(301,3) TO Z
STORE STR(323,3) TO ZZ
CASE YY = 422
STORE STR (401,3) TO Z
STORE STR (422,3) TO ZZ
CASE YY = 519
STORE STR(501,3) TO Z
STORE STR(519,3) TO ZZ
CASE YY = 622
STORE STR(622,3) TO ZZ
STORE STR(601,3) TO Z
ENDCASE
* calcul des résultats totaux de la première partie du tableau.
USE C:ZIP_2.DBF
APPEND FROM C:ZIP 3 FOR ((DESTIN > Z .AND. DESTIN < ZZ) .AND. CONSERV < "23")
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 Q20,V20 FOR (CONSERV = "20")
SUM QUANTITE,VALEUR TO Q21,V21 FOR (CONSERV = "21")
SUM QUANTITE,VALEUR TO Q22,V22 FOR (CONSERV = "22")
DELETE ALL
PACK
USE &&closeZip_2
* imperssion des résultats totaux de la première partie du tableau.
SET PRINT ON
?? CHR(15)
? "|"+SPACE(1)+"TOTAUX"
?? SPACE(5)+"QUANTITE|"+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(12)+"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,8);
+STR(V21/1000,8)+STR(V22/1000,8)+" | "
DO LINE
* initialisation au passage à la seconde partie du tableau.
STORE "2" TO Part, Boucle
IF YY = 622
YY = 602
ENDIF
ENDIF &&YY=…622
* fin de le première partie du tableau.
ELSE
* seconde partie du tableau.
IF part = "2"
* impression de l'entête.
IF (Boucle = "2" .AND. Part = "2")
SET PRINT ON
EJECT
?? CHR(27) + CHR(69)
? "Seconde partie"
?? CHR(87) + CHR(70)
?? CHR(14)
?? SPACE(6)+"EXPEDITION hors FIVONDRONANA"
?? CHR(20)
?? SPACE(7)+"Date : "+DTOC(MDATE)
?
SET PRINT OFF
STORE Fiv 1 to fiv
DO SETUP
DO LINE
ENDIF
STORE "3" TO Boucle
SET TALK OFF
* initialisation des variables.
DO CASE
CASE YY = 120
STORE 103 TO YY
CASE YY = 210
STORE 202 TO YY
CASE YY = 323
STORE 302 TO YY
CASE YY = 422
STORE 402 TO YY
CASE YY = 519
STORE 502 TO YY
CASE YY = 602
STORE 602 TO YY
ENDCASE
STORE STR(YY.3) TO Y,Key
SET CONSOLE OFF
STORE 0 TO Q23,Q24,Q25,Q26,Q27,Q28,Q29,Q30,Q31,Q32,Q33
STORE 0 TO Q34,Q35,Q36,Q37,Q38,V23,V24,V25,V26,V27,V28
STORE 0 TO V29,V30,V31,V32,V33,V34,V35,V36,V37,V38
* recherche sur fichier indexé.
USE C:Zipzip INDEX Dein_dx
FIND & Key
* si recherche fructueuse, calcul et impression des résultats de la seconde
* partie du tableau.
IF FOUND()
USE C:ZIP 2 DBF
APPEND FROM C:ZIP 3 FOR (DESTIN = Y .AND. CONSERV > "22")
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")
DELETE ALL
PACK
USE &&closeZip_2
USE C: ZIP 3.DBF
SUM QUANTITE, VALEUR TO Q38,V38 FOR (DESTIN = Y)
USE &&closeZip_3
ENDIF &&Found ()
USE &&closeZipzip
* impression du nom du fivondronana.
STORE Y TO Fiv
SET PRINT ON
?? CHR (15)
DO CHX_FIV
* impression si les résultats des calculs sont positifs.
SET PRINT ON
SET CONSOLE OFF
IF Q38 > 0
?? " Quantité |"+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,14)+" | "
? "|"+SPACE(15)+"Valeur |"+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,14)+" | "
ELSE
?? CHR (15)
?? SPACE (10)+"| pas de données d'expédition |_| ou données manquantes |_|"
?? SPACE (101)+" | "
ENDIF &&Q38>0
SET PRINT OFF
STORE (YY+1) TO YY
* saut pour le fivondronana d'Antsirabe.
IF YY = 111
STORE (YY+1) TO YY
ENDIF
* impression et calcul des résultats totaux de la seconde partie du tableau.
IF (YY=120 .OR. YY=210 .OR. YY=323 .OR. YY=422 .OR. YY=519 .OR. YY=622)
DO LINE
SET CONSOLE OFF
STORE 0 TO Q23,Q24,Q25,Q26,Q27,Q28,Q29,Q30,Q31,Q32,Q33
STORE 0 TO Q34,Q35,Q36,Q37,Q38,V23,V24,V25,V26,V27,V28
STORE 0 TO V29,V30,V31,V32,V33,V34,V35,V36,V37,V38
* initialisation des variables Z et ZZ.
DO CASE
CASE YY = 120
STORE STR (102,3) TO Z
STORE STR (120,3) TO ZZ
CASE YY = 210
STORE STR (201,3) TO Z
STORE STR (210,3) TO ZZ
CASE YY = 323
STORE STR (301,3) TO Z
STORE STR (323,3) TO ZZ
CASE YY = 422
STORE STR (401,3) TO Z
STORE STR (422,3) TO ZZ
CASE YY = 519
STORE STR (501,3) TO Z
STORE STR (519,3) TO ZZ
CASE YY = 622
STORE STR (622,3) TO ZZ
STORE STR (601,3) TO Z
ENDCASE
* calcul des résultats.
USE C:ZIP 2.DBF
APPEND FROM C:ZIP 3 FOR ((DESTIN > Z .AND. DESTIN < ZZ) .AND. CONSERV > "22")
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")
DELETE ALL
PACK
USE &&closeZip_2
USE C:ZIP 3.DBF
SUM QUANTITE,VALEUR TO Q38,V38 FOR (DESTIN > Z .AND. DESTIN < ZZ)
USE &&closeZip_3
* impression des résultats totaux de la seconde partie du tableau.
SET PRINT ON
?? CHR(15)
? "|"+SPACE(3)+"TOTAUX "
?? SPACE (1)+"QUANTITE|"+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,14)+" | "
? "|"+SPACE(16)+"VALEUR |"+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,14)+" | "
DO LINE
SET PRINT ON
EJECT
SET PRINT OFF
ENDIF &&YY=…622
* saut pour les codes des autres faritany et retour au premier tableau.
IF YY = 120
STORE (YY+82) TO YY
STORE '1' TO Boucle, Part
ELSE
IF YY = 210
STORE '1' TO Boucle, Part
STORE (YY+92) TO YY
ELSE
IF YY = 323
STORE '1' TO Boucle, Part
STORE (YY+79) TO YY
ELSE
IF YY = 422
STORE '1' TO Boucle, Part
STORE (YY+80) TO YY
ELSE
IF YY = 519
STORE '1' TO Boucle, Part
STORE (YY+83) TO YY
ELSE
IF YY = 622
STORE '2' TO Part
STORE (YY+80) TO YY
ENDIF &&YY=622
ENDIF &&YY=519
ENDIF &&YY=422
ENDIF &&YY=323
ENDIF &&YY=210
ENDIF &&YY=120
SET TALK OFF
* si la boucle est terminée, retour au point de départ ou retour pour les
* calculs des fivondronana d'origine suivants ou finalisation de la boucle
* principale.
IF (YY > 622 .AND. Part = "2")
STORE .F. TO Process
ELSE
STORE .T. TO Process
ENDIF
ELSE
RELEASE ALL
RETURN
ENDIF &&Part=2
ENDIF &&Part=1
ENDDO &&YY<622
RETURN
* retour vers le programme EX_4_M. Command file.