home *** CD-ROM | disk | FTP | other *** search
/ Amiga ACS 1998 #4 / amigaacscoverdisc1998-041998.iso / utilities / commercialdemos / gestacomptedemo / scripts_arexx / récapitulationfc.rexx < prev    next >
OS/2 REXX Batch file  |  1997-11-13  |  10KB  |  293 lines

  1. /** $VER: RécapitulationFC 1.1 (05.09.97)
  2.  ** Auteur: Fabrice SABATIER
  3.  **
  4.  ** Commande ARexx sous GestaLivre V2.0.
  5.  **
  6.  ** Composition des pages d'écriture sous FinalCopy®.
  7.  **
  8.  **/
  9.  
  10. /*****************  Définit les variables d'environnement   ***********************/
  11.  
  12. ADDRESS COMMAND "SYS:Rexxc/rx ENV:GestaCompte.ARexxPréfs" /* execute le script de définitions des préférences */
  13. NOM_PORT_LIVRE   =GETCLIP('Port_Livre')
  14. NOM_ECRAN_PUB    =GETCLIP('Ecran_Livre')
  15. NOM_PORT_FINAL   =GETCLIP('Port_TraitementTexte')
  16. REPERTOIRE       =GETCLIP('Chemin')
  17. NOM_FICHIER      ="Gesta:FeuillesdeStyle/Récapitulation.final"   /* nom du document sous FinalCopy® */
  18.  
  19. /************************************************************************/
  20.  
  21. OPTIONS RESULTS
  22.  
  23. NL  = '0a'x      /* caractère de fin de ligne */
  24. Tab = '09'x      /* caractère de tabulation */
  25.  
  26. Colonne.1 ="420   "  /* repère des colonnes */
  27. Colonne.2 ="761   "
  28. Colonne.3 ="700   "
  29. Colonne.4 ="790   "
  30. Colonne.5 ="590   "
  31. Colonne.12="590S  "
  32. Colonne.13="730   "
  33. Colonne.14="600   "
  34. Colonne.15="610   "
  35. Colonne.16="611   "
  36. Colonne.17="620   "
  37. Colonne.18="620(1)"
  38. Colonne.19="630   "
  39. Colonne.20="635   "
  40. Colonne.21="631   "
  41. Colonne.22="633   "
  42. Colonne.23="634   "
  43. Colonne.24="637   "
  44. Colonne.25="638   "
  45. Colonne.26="641   "
  46. Colonne.27="640   "
  47. Colonne.28="650   "
  48. Colonne.29="661   "
  49. Colonne.30="662   "
  50. Colonne.31="664   "
  51. Colonne.32="665   "
  52. Colonne.33="666   "
  53. Colonne.34="669   "
  54. Colonne.35="670   "
  55. Colonne.36="467   "
  56. Colonne.37="421   "
  57. Colonne.38="200   "
  58. Colonne.39="629   "
  59.  
  60. IF NOM_PORT_FINAL='FINALC.1' THEN Ecran='ScrToFront'
  61. IF NOM_PORT_FINAL='FINALW.1' THEN Ecran='ScreenToFront'
  62.  
  63. SIGNAL ON SYNTAX /* détourne les messages d'erreurs */
  64.  
  65. IF~SHOW(L,"rexxsupport.library")THEN DO /* teste si la library est présente */
  66.  IF~ADDLIB("rexxsupport.library",0,-30,0) THEN DO
  67.      SAY "rexxsupport.library est introuvable !"
  68.      EXIT
  69.  END
  70. END
  71. FinalCopy_II=1
  72. IF~SHOW(p,NOM_PORT_FINAL) THEN DO
  73.   FinalCopy_II=0
  74.   ADDRESS COMMAND "RUN >NIL: "||REPERTOIRE||" >NIL:"
  75.   DO 10
  76.      IF SHOW(p,NOM_PORT_FINAL) THEN DO
  77.          FinalCopy_II=1
  78.          LEAVE
  79.          END
  80.      CALL DELAY(100)
  81.   END
  82. END
  83.  
  84. IF FinalCopy_II THEN DO
  85.  
  86. /* ouvre la library rexxreqtools.library pour les messages d'erreurs */
  87.  CALL addlib("rexxreqtools.library",0,-30,0)
  88.  
  89.  ADDRESS VALUE NOM_PORT_LIVRE /* adresse du port Arexx */
  90.  
  91.  DO i=1 TO 40
  92.   SommeTotale.i=0
  93.  END
  94.  
  95.  showyear                     /* demande l'année actuelle */
  96.  AnneeActuelle=result         /* et la mémorise dans la variable 'AnneeActuelle'*/
  97.  
  98.  ADDRESS VALUE NOM_PORT_FINAL /* adresse du port ARexx de FinalCopy® */
  99.  open NOM_FICHIER             /* ouvre la mise en page sous FinalCopy® */
  100.  CALL ComposePage1            /* rempli la première page de gauche */
  101.  ADDRESS VALUE NOM_PORT_FINAL /* adresse du port ARexx de FinalCopy® */
  102.  CALL ComposePage2            /* rempli la première page de droite */
  103.  
  104. FICHIER="GESTA:Récapitulations/Récap_" || AnneeActuelle  /* chemin et nom du fichier sauvegardé */
  105. Save FICHIER  
  106.  
  107. END
  108.  
  109. EXIT                          /* sort */
  110. /**********************************************/
  111. /* Rempli chaque colonne de la page de gauche */
  112. /**********************************************/
  113. ComposePage1:
  114. fontsize 6                    /* règle la taille de la fonte à 6 */
  115. Ecran                         /* passe l'écran de FinalCopy® au premier plan */
  116. altdown                       /* position le curseur en début de page */
  117. ctrldown
  118. cursor up
  119. altup
  120. ctrlup
  121.  
  122. cursor down                   /* va à la ligne */
  123. type Tab||AnneeActuelle       /* saisie l'année */
  124. cursor down                   /* va deux fois à la ligne */
  125. cursor down
  126.  
  127. DO i=1 TO 9                   /* positionne le curseur sur la première */
  128.  cursor down                  /* ligne du tableau  */
  129. END
  130.  
  131. DO mois=1 TO 12              /* passe les 12 mois en revus */
  132.  
  133.  ADDRESS VALUE NOM_PORT_LIVRE       /* adresse du port Arexx */
  134.  
  135.  DO i=1 TO 18                 /* initialise le tableau de calcul des colonnes */
  136.   Somme.i=0
  137.  END
  138.  
  139.  month mois                   /* positionne le mois */
  140.  numboperations               /* demande le nombre d'opérations dans le mois */
  141.  NbreLigne=result             /* et le mémorise dans la variable 'NbreLigne' */
  142.  
  143.  /* examine toutes les opérations une à une */
  144.  DO i=1 TO NbreLigne
  145.   operation i
  146.   PARSE VAR result . '/' . '/' Nature '/' Somme '/' . '/' NomPoste '/' .
  147.   DO C=1 TO 18
  148.    IF NomPoste=Colonne.C THEN Somme.C=Somme.C+Somme  /* calcule la somme des colonnes */
  149.   END
  150.   IF Nature="CashInflow"  THEN Somme.6=Somme.6+Somme  /* calcule la somme des */
  151.   IF Nature="Bank2Entry" THEN Somme.7=Somme.7+Somme   /* des 'ENTREES' et 'SORTIES' */
  152.   IF Nature="Bank1Entry" THEN Somme.8=Somme.8+Somme
  153.   IF Nature="Bank1Outflow" THEN Somme.9=Somme.9+Somme
  154.   IF Nature="Bank2Outflow" THEN Somme.10=Somme.10+Somme
  155.   IF Nature="CashPayment"  THEN Somme.11=Somme.11+Somme
  156.  END
  157.  
  158.  CALL CreerLignePage1                /* appel la routine de saisie des lignes */
  159.  DO C=1 TO 18
  160.  SommeTotale.C=SommeTotale.C+Somme.C /* calcule la ligne des totaux */
  161.  END
  162. END
  163.  
  164. CALL TotauxPage1                     /* appel la routine de saisie des totaux */
  165.  
  166. RETURN
  167. /*--------------------------------------------*/
  168. /* Rempli chaque ligne de la page de gauche   */
  169. /*--------------------------------------------*/
  170. CreerLignePage1:
  171.  
  172. ADDRESS VALUE NOM_PORT_FINAL   /* adresse du port ARexx de FinalCopy® */
  173. DO C=1 TO 8
  174.    type Tab || Somme.C         /* saisie les colonnes des 'ENTREES' */
  175. END
  176. type Tab || Tab
  177. DO C=9 TO 18
  178.   type Tab || Somme.C          /* saisie les colonnes des 'SORTIES' */
  179. END
  180. cursor down                    /* va deux fois à la ligne */
  181. cursor down
  182. RETURN
  183. /*-----------------------------------------------*/
  184. /* Rempli la dernière ligne de la page de gauche */
  185. /*-----------------------------------------------*/
  186. ToTauxPage1:
  187.  
  188. ADDRESS VALUE NOM_PORT_FINAL   /* adresse du port ARexx de FinalCopy® */
  189. altdown                        /* position le curseur en début de page */
  190. ctrldown
  191. cursor up
  192. altup
  193. ctrlup
  194. DO L=1 TO 44                   /* position le curseur sur la dernière ligne */
  195.  cursor down
  196. END
  197. DO C=1 TO 8
  198.    type Tab || SommeTotale.C   /* saisie le total des colonnes 'ENTREES' */
  199. END
  200. type Tab || Tab
  201. DO C=9 TO 18
  202.   type Tab || SommeTotale.C    /* saisie le total des colonnes 'SORTIES' */
  203. END
  204. RETURN
  205. /**********************************************/
  206. /* Rempli chaque colonne de la page de droite */
  207. /**********************************************/
  208. ComposePage2:
  209. DO i=1 TO 40                   /* positionne le curseur dans le tableau */
  210.  cursor down
  211. END
  212.  
  213. DO mois=1 TO 12               /* passe les mois en revus */
  214.  
  215.  ADDRESS VALUE NOM_PORT_LIVRE        /* adresse du port Arexx */
  216.  
  217.  DO i=19 TO 40
  218.   Somme.i=0
  219.  END
  220.  
  221.  month mois                    /* position le mois */
  222.  numboperations                /* demande le nombre d'opérations dans le mois */
  223.  NbreLigne=result              /* et le mémorise dans la variable 'NbreLigne' */
  224.  
  225.  /* examine toutes les opérations une à une */
  226.  DO i=1 TO NbreLigne
  227.   operation i
  228.   PARSE VAR result . '/' . '/' . '/' Somme '/' . '/' NomPoste '/' .
  229.   DO C=19 TO 39
  230.    IF NomPoste=Colonne.C THEN Somme.C=Somme.C+Somme
  231.   END
  232.   IF LEFT(NomPoste,3)="DIV" THEN Somme.40=Somme.40+Somme  /* calcule la colonne 'DIVERS' */
  233.  END
  234.  
  235.  CALL CreerLignePage2          /* appel la routine de saisie des lignes */
  236.  DO C=19 TO 40
  237.  SommeTotale.C=SommeTotale.C+Somme.C /* calcule la ligne des totaux */
  238.  END
  239.  
  240. END
  241. CALL TotauxPage2               /* appel la routine de saisie des totaux */
  242.  
  243. RETURN
  244. /*--------------------------------------------*/
  245. /* Rempli chaque ligne de la page de droite   */
  246. /*--------------------------------------------*/
  247. CreerLignePage2:
  248.  
  249. ADDRESS VALUE NOM_PORT_FINAL   /* adresse du port ARexx de FinalCopy® */
  250. DO C=19 TO 39
  251.  type Tab||Somme.C             /* saisie les colonnes */
  252. END
  253. type Tab||Tab||Somme.40        /* saisie la colonne 'DIVERS' */
  254. cursor down                    /* va deux fois à la ligne */
  255. cursor down
  256. RETURN
  257. /*-----------------------------------------------*/
  258. /* Rempli la dernière ligne de la page de droite */
  259. /*-----------------------------------------------*/
  260. ToTauxPage2:
  261.  
  262. ADDRESS VALUE NOM_PORT_FINAL   /* Adresse du port ARexx de FinalCopy® */
  263. altdown                        /* position le curseur en fin de page */
  264. ctrldown
  265. cursor down
  266. altup
  267. ctrlup
  268. DO C=19 TO 40                  /* saisie la ligne des totaux */
  269.  type Tab || SommeTotale.C
  270. END
  271. type Tab || SommeTotale.40 /* renseigne la colonne 'DIVERS montants' */
  272. RETURN
  273. /*********************************/
  274. /* Traite les messages d'erreurs */
  275. /*********************************/
  276. SYNTAX:
  277. IF RC=13 THEN call rtezrequest( "      Environnement serveur non trouvé !!!" || NL || NL ||,
  278.                                 "Le nom du port ARexx utilisé dans le script est : "|| NL || NL ||,
  279.                                 "-----------------------------------------------"|| NL ||,
  280.                                 "                  " || NOM_PORT_LIVRE || NL ||,
  281.                                 "-----------------------------------------------"|| NL || NL ||,
  282.                                 "Note : Pour réparer ceci, veuillez fermer le module"|| NL ||,
  283.                 "       'Livre' et modifier le type d'outil 'REXX' de"|| NL ||,
  284.                 "       l'icône, puis le relancer."|| NL || NL ||,
  285.                 "       ATTENTION aux minuscules/majuscules      ",,
  286.                 "OK", "Informations","rt_pubscrname="||NOM_ECRAN_PUB "rt_font=Gestacompte.font/8")
  287. ELSE call rtezrequest(errortext(RC),"Vu",,"rt_pubscrname="||NOM_PORT_LIVRE "rt_font=Gestacompte.font/8")
  288.  
  289.  
  290. ADDRESS VALUE NOM_PORT_FINAL
  291. QUIT (force)
  292.  
  293. EXIT