home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga ACS 1998 #4
/
amigaacscoverdisc1998-041998.iso
/
utilities
/
commercialdemos
/
gestacomptedemo
/
scripts_arexx
/
tableauxfc.rexx
< prev
next >
Wrap
OS/2 REXX Batch file
|
1997-11-13
|
13KB
|
372 lines
/** $VER: TableauxFC 1.2 (05.09.97)
** Auteur: Fabrice SABATIER
**
** Commande ARexx sous GestaLivre V2.0.
**
** Composition des pages d'écriture sous FinalCopy®.
**
**/
/***************** Définit les variables d'environnement ***********************/
ADDRESS COMMAND "SYS:Rexxc/rx ENV:GestaCompte.ARexxPréfs" /* execute le script de définitions des préférences */
NOM_PORT_LIVRE =GETCLIP('Port_Livre')
NOM_ECRAN_PUB =GETCLIP('Ecran_Livre')
NOM_PORT_FINAL =GETCLIP('Port_TraitementTexte')
REPERTOIRE =GETCLIP('Chemin')
NOM_FICHIER ="Gesta:FeuillesdeStyle/Tableau.final" /* nom du document sous FinalCopy® */
/************************************************************************/
OPTIONS RESULTS
NL = '0a'x /* caractère de fin de ligne */
Tab = '09'x /* caractère de tabulation */
LettreMois.1='JANVIER' /* définitions des mois à écrire en entête */
LettreMois.2='FEVRIER'
LettreMois.3='MARS'
LettreMois.4='AVRIL'
LettreMois.5='MAI'
LettreMois.6='JUIN'
LettreMois.7='JUILLET'
LettreMois.8='AOUT'
LettreMois.9='SEPTEMBRE'
LettreMois.10='OCTOBRE'
LettreMois.11='NOVEMBRE'
LettreMois.12='DECEMBRE'
Colonne.1 ="420 " /* repère des colonnes */
Colonne.2 ="761 "
Colonne.3 ="700 "
Colonne.4 ="790 "
Colonne.5 ="590 "
Colonne.12="590S "
Colonne.13="730 "
Colonne.14="600 "
Colonne.15="610 "
Colonne.16="611 "
Colonne.17="620 "
Colonne.18="620(1)"
Colonne.19="630 "
Colonne.20="635 "
Colonne.21="631 "
Colonne.22="633 "
Colonne.23="634 "
Colonne.24="637 "
Colonne.25="638 "
Colonne.26="641 "
Colonne.27="640 "
Colonne.28="650 "
Colonne.29="661 "
Colonne.30="662 "
Colonne.31="664 "
Colonne.32="665 "
Colonne.33="666 "
Colonne.34="669 "
Colonne.35="670 "
Colonne.36="467 "
Colonne.37="421 "
Colonne.38="200 "
Colonne.39="629 "
IF NOM_PORT_FINAL='FINALC.1' THEN Ecran='ScrToFront'
IF NOM_PORT_FINAL='FINALW.1' THEN Ecran='ScreenToFront'
SIGNAL ON SYNTAX /* détourne les messages d'erreurs */
IF~SHOW(L,"rexxsupport.library")THEN DO /* teste si la library est présente */
IF~ADDLIB("rexxsupport.library",0,-30,0) THEN DO
SAY "rexxsupport.library est introuvable !"
EXIT
END
END
FinalCopy_II=1
IF~SHOW(p,NOM_PORT_FINAL) THEN DO
FinalCopy_II=0
ADDRESS COMMAND "RUN >NIL: "||REPERTOIRE||" >NIL:"
DO 10
IF SHOW(p,NOM_PORT_FINAL) THEN DO
FinalCopy_II=1
LEAVE
END
CALL DELAY(100)
END
END
IF FinalCopy_II THEN DO
/* ouvre la library rexxreqtools.library pour les messages d'erreurs */
CALL addlib("rexxreqtools.library",0,-30,0)
ADDRESS VALUE NOM_PORT_LIVRE /* adresse du port Arexx */
DO I=1 TO 40 /* initialise le tableau 'Somme' à zéro */
Somme.i=0
END
showyear /* demande l'année actuelle */
AnneeActuelle=result /* et la mémorise dans la variable 'AnneeActuelle'*/
showmonth /* demande le mois actuel */
MoisActuel=result /* et le mémorise dans la variable 'MoisActuel' */
numboperations /* cherche le nombre d'opérations dans le mois */
nbre=result /* et le mémorise dans la variable 'nbre' */
PremiereLigne=1
NbreLigne=nbre
NbredePages=TRUNC(nbre/29) /* calcule le nombre de pages */
IF (NbredePages*29)<NbreLigne THEN NbredePages=NbredePages+1
ADDRESS VALUE NOM_PORT_FINAL /* adresse du port ARexx de FinalCopy® */
DO Page=1 TO NbredePages
PremiereLigne=((Page-1)*29)+1/* reprend l'examem en ligne 30,59,88... */
open NOM_FICHIER /* ouvre la mise en page sous FinalCopy® */
IF NOM_PORT_FINAL='FINALC.' THEN NOM_PORT_FINAL='FINALC.'||Page
IF NOM_PORT_FINAL='FINALW.' THEN NOM_PORT_FINAL='FINALW.'||Page
ADDRESS VALUE NOM_PORT_FINAL /* adresse du port ARexx de FinalCopy® */
CALL DELAY(100) /* attend la fin du chargement */
CALL ComposePageG /* rempli la page de gauche */
CALL ComposePageD /* rempli la page de droite */
FICHIER="GESTA:Tableaux/Tableau_" || LettreMois.MoisActuel || AnneeActuelle /* chemin et nom du fichier sauvegardé */
Save FICHIER
END
END
EXIT /* sort */
/**********************************************/
/* Rempli chaque colonne de la page de gauche */
/**********************************************/
ComposePageG:
fontsize 6 /* règle la taille de la fonte à 6 */
Ecran /* passe l'écran de FinalCopy® au premier plan */
altdown /* position le curseur en début de page */
ctrldown
cursor up
altup
ctrlup
type Tab||AnneeActuelle /* saisie l'année */
DO i=1 TO 5 /* position le curseur à droite de la page */
type Tab
END
type "Page "||Page /* saisie le n° de la page */
cursor down /* va à la ligne */
type Tab||LettreMois.MoisActuel /* saisie le mois en toutes lettres */
DO i=1 TO 8 /* positionne le curseur sur la première ligne du tableau */
cursor down /* va à la ligne */
END
CALL ReportPageG /* rempli la ligne de 'Report' */
/* examine toutes les opérations une à une */
DO i=PremiereLigne TO PremiereLigne+28
IF i>nbre THEN LEAVE /* dernière ligne donc sort de la boucle */
ADDRESS VALUE NOM_PORT_LIVRE /* adresse du port Arexx */
operation i
PARSE VAR result jour '/' . '/' Nature '/' Somme '/' Libelle '/' NomPoste '/' .
ADDRESS VALUE NOM_PORT_FINAL /* Adresse du port ARexx de FinalCopy® */
CALL CreerLignePageG /* appel la routine de saisie des lignes */
cursor down /* va deux fois à la ligne */
cursor down
END
CALL ToTauxPageG /* appel la routine de saisie des totaux */
RETURN
/*--------------------------------------------*/
/* Rempli chaque ligne de la page de gauche */
/*--------------------------------------------*/
CreerLignePageG:
DO C=1 TO 5 /* saisie les colonnes des 'ENTREES' */
IF NomPoste=Colonne.C THEN DO
type Tab||Somme
Somme.C=Somme.C+Somme
END
ELSE type Tab
END /* saisie les colonnes 'Caisse banque2 banque1 */
IF Nature="CashInflow" THEN DO
type Tab||Somme
Somme.6=Somme.6+Somme
END
ELSE type Tab
IF Nature="Bank2Entry" THEN DO
type Tab||Somme
Somme.7=Somme.7+Somme
END
ELSE type Tab
IF Nature="Bank1Entry" THEN DO
type Tab||Somme
Somme.8=Somme.8+Somme
END
ELSE type Tab
type Tab||Jour||Tab||Libelle /* saisie la date et le libellé */
IF LEFT(Nature,6)="Entree" THEN RETURN /* passe à la ligne suivante si déjà inscrit */
IF Nature="Bank1Outflow" THEN DO
type Tab||Somme
Somme.9=Somme.9+Somme
END
ELSE type Tab
IF Nature="Bank2Outflow" THEN DO
type Tab||Somme
Somme.10=Somme.10+Somme
END
ELSE type Tab
IF Nature="CashPayment" THEN DO
type Tab||Somme
Somme.11=Somme.11+Somme
END
ELSE type Tab
DO C=12 TO 18 /* saisie les colonnes des 'SORTIES' */
IF NomPoste=Colonne.C THEN DO
type Tab||Somme
Somme.C=Somme.C+Somme
RETURN
END
ELSE type Tab
END
RETURN
/*--------------------------------------------------*/
/* Rempli la ligne de 'Report' de la page de gauche */
/*--------------------------------------------------*/
ReportPageG:
DO C=1 TO 8 /* saisie les colonnes des 'ENTREES' */
type Tab || Somme.C
END
type Tab || Tab
DO C=9 TO 18 /* saisie les colonnes des 'SORTIES' */
type Tab || Somme.C
END
cursor down
cursor down
RETURN
/*-----------------------------------------------*/
/* Rempli la dernière ligne de la page de gauche */
/*-----------------------------------------------*/
ToTauxPageG:
altdown /* position le curseur en début de page */
ctrldown
cursor up
altup
ctrlup
DO L=1 TO 69 /* position le curseur sur la dernière ligne */
cursor down
END
DO C=1 TO 8 /* saisie les colonnes des 'ENTREES' */
type Tab || Somme.C
END
type Tab || Tab
DO C=9 TO 18 /* saisie les colonnes des 'SORTIES' */
type Tab || Somme.C
END
RETURN
/**********************************************/
/* Rempli chaque colonne de la page de droite */
/**********************************************/
ComposePageD:
cursor down
cursor down
cursor down
type "Suite page "||Page
DO i=1 TO 8 /* positionne le curseur dans le tableau */
cursor down
END
CALL ReportPageD /* rempli la ligne de 'Report' */
DO i=PremiereLigne TO PremiereLigne+28 /* passe toutes les opérations une à une */
IF i>nbre THEN LEAVE /* dernière ligne donc sort de la boucle */
ADDRESS VALUE NOM_PORT_LIVRE /* adresse du port Arexx */
operation i
PARSE VAR result jour '/' . '/' Nature '/' Somme '/' Libelle '/' NomPoste '/' .
ADDRESS VALUE NOM_PORT_FINAL /* adresse du port ARexx de FinalCopy® */
CALL CreerLignePageD /* saisie une ligne */
cursor down /* va deux fois à la ligne */
cursor down
END
CALL TotauxPageD /* appel la routine de saisie des totaux */
RETURN
/*--------------------------------------------*/
/* Rempli chaque ligne de la page de droite */
/*--------------------------------------------*/
CreerLignePageD:
DO C=19 TO 39 /* saisie une ligne */
IF NomPoste=Colonne.C THEN DO
type Tab||Somme
Somme.C=Somme.C+Somme /* calcule la somme des colonnes */
END
ELSE type Tab
END
IF LEFT(NomPoste,3)="DIV" THEN DO /* saisie la colonne 'DIVERS' */
ADDRESS VALUE NOM_PORT_LIVRE /* adresse du port Arexx */
numbaccounts /* demande le nombre de comptes */
NombrePos=result /* et le mémorise */
DO p=1 TO NombrePos /* passe en revue tous */
account p /* les comptes connus */
LibellePoste=result
IF NomPoste=LEFT(LibellePoste,6) THEN LEAVE
END
ADDRESS VALUE NOM_PORT_FINAL /* adresse du port ARexx de FinalCopy® */
PARSE VAR LibellePoste . LibellePoste /* enlève 'DIVERx ' */
type Tab||LEFT(LibellePoste,20) /* saisie la désignation */
type Tab||Somme /* puis le montant */
Somme.40=Somme.40+Somme /* somme de la colonne */
END
RETURN
/*--------------------------------------------------*/
/* Rempli la ligne de 'Report' de la page de droite */
/*--------------------------------------------------*/
ReportPageD:
DO C=19 TO 39
type Tab || Somme.C /* renseigne les colonnes */
END
type Tab || Tab || Somme.40 /* renseigne la colonne 'DIVERS montants' */
cursor down
cursor down
RETURN
/*-----------------------------------------------*/
/* Rempli la dernière ligne de la page de droite */
/*-----------------------------------------------*/
TotauxPageD:
altdown /* position le curseur sur la dernière ligne */
ctrldown
cursor down
altup
ctrlup
DO C=19 TO 39
type Tab || Somme.C /* renseigne les colonnes */
END
type Tab || Tab || Somme.40 /* renseigne la colonne 'DIVERS montants' */
RETURN
/*********************************/
/* Traite les messages d'erreurs */
/*********************************/
SYNTAX:
IF RC=13 THEN call rtezrequest( " Environnement serveur non trouvé !!!" || NL || NL ||,
"Le nom du port ARexx utilisé dans le script est : "|| NL || NL ||,
"-----------------------------------------------"|| NL ||,
" " || NOM_PORT_LIVRE || NL ||,
"-----------------------------------------------"|| NL || NL ||,
"Note : Pour réparer ceci, veuillez fermer le module"|| NL ||,
" 'Livre' et modifier le type d'outil 'REXX' de"|| NL ||,
" l'icône, puis le relancer."|| NL || NL ||,
" ATTENTION aux minuscules/majuscules ",,
"OK", "Informations","rt_pubscrname="||NOM_ECRAN_PUB "rt_font=Gestacompte.font/8")
ELSE call rtezrequest(errortext(RC),"Vu",,"rt_pubscrname="||NOM_PORT_LIVRE "rt_font=Gestacompte.font/8")
ADDRESS VALUE NOM_PORT_FINAL
QUIT (force)
EXIT