***********************************************************************************************
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.