Revise le 21 mai 1993
Revised may 21, 1993
M. Valin
M. Beland
Il y a trois (3) types de rubriques de documentation.
There are three (3) basic types of documentation sections.
The first section MUST be the identification (***ID). The other sections may appear in any order, but the following order is recommended.
***ID ***ID * * *AUTEUR *AUTHOR * * *REVISION *REVISION * * *ETAT *STATUS * * *LANGAGE *LANGUAGE * * *OBJET *OBJECT * * *ALGORITHME *ALGORITHM * * *PRECISION *PRECISION * * *LIBRAIRIES *LIBRARIES * * *JCL *JCL * * *PARAMETRES *PARAMETERS * * *SWITCHES *SWITCHES * * *CARTES/CONTROLE *CARDS/CONTROL * * *FICHIERS *FILES * * *MESSAGES *MESSAGES * * *ARGUMENTS *ARGUMENTS * * *IMPLICITES *IMPLICITS * * *ENREGISTREMENTS *RECORDS * * *CONSTANTES *CONSTANTS * * *VARIABLES *VARIABLES * * *TABLES *TABLES * * *MODULES *MODULES * * *MEMOIRE *MEMORY * * *NOTES *NOTES * * ** **
NIVEAU RUBRIQUE 0 ***ID NOM DU MODULE COURTE DESCRIPTION où ID peut être SYSTEME - GROUPE DE PROGRAMMES PROGRAMME - PROGRAMME PRINCIPAL S/P - SOUS-PROGRAMME FONCTION - FONCTION IDENT - CODE ASSEMBLEUR
Cette rubrique contient normalement l'entête du module dans le langage utilise (si le compilateur le permet) ainsi que toutes les declarations associees aux arguments.
LEVEL SECTION 0 ***ID NAME OF MODULE SHORT DESCRIPTION where ID may be SYSTEM - GROUP OF PROGRAMS PROGRAM - MAIN PROGRAM S/R - SUBPROGRAM FUNCTION - FONCTION IDENT - ASSEMBLER CODEThis section normally contains the module header in the appropriate language as well as the declarations for the formal parameters (if the compiler allows it).
-----> BLOC_ID -----> ------------------ CARTE_FIN ----> | | --BLOC_DOC <--
-----> CARTE_ID ----- ---------------------------------> | | ----CARTE_NON_CLE <----
-----> CARTE_CLE ---- ---------------------------------> | | ----CARTE_NON_CLE <----
--> *** -->CLE_ID-->blanc-->NOM-->blanc-->commentaires--> | | |----> (--NOM-->) ----|
----> * --> NOM_DE_RUBRIQUE--->blanc--->commentaires----> | | |-->(nom)-|
---->*------->blanc------->n'importe quoi ---------------> | | |-->blanc--|
---->**------>blanc-------->n'importe quoi--------------->
---------------SYSTEME -------->- -----------SYSTEM --------->- --------PROGRAMME --------->- ---------PROGRAM --------->- -----------S/P ------------>- -----------S/R ------------>- ---------FONCTION---------->- ---------FUNCTION---------->- -----------IDENT----------->-
----------AUTEUR---------- ------AUTHOR---------- -----REVISION--------- -------ETAT----------- ------STATUS---------- -----LANGUAGE--------- -----LANGAGE---------- -------OBJET---------- -------OBJECT--------- ----ALGORITHME-------- ----ALGORITHM--------- -----PRECISION-------- ----LIBRAIRIES-------- ----LIBRARIES--------- --------JCL----------- -----PARAMETRES------- -----PARAMETERS------- ----CARTES/CONTROLE--- -----CARDS/CONTROL---- ------FICHIERS-------- -------FILES---------- ------MESSAGES-------- ------ARGUMENTS------- -----IMPLICITES------- -----IMPLICITS-------- ---ENREGISTREMENTS---- ------RECORDS--------- -----CONSTANTES------- -----CONSTANTS-------- ------VARIABLES------- --------TABLES-------- -------MODULES-------- -------MEMOIRE-------- -------MEMORY- -------- --------NOTES--------- --->
***FONCTION FSTECR ECRIRE UN ENREGISTREMENT DANS UN FICHIER STANDARD * FUNCTION FSTECR(F,WORK,NPAK,IUN,ICDATE,CDEET,CNPAS,CNI,CNJ,CNK %,CIP1,CIP2,CIP3,CTYPVAR,CNOMVAR,CETIKET,CGRTYP,CIG1,CIG2,CIG3, % CIG4,CDATYP,REWRIT) * IMPLICIT NONE INTEGER FSTECR INTEGER F(*), NPAK, IUN,ICDATE,CDEET,CNPAS,CNI,CNJ,CNK,CIP1, % CIP2,CIP3,CIG1,CIG2,CIG3,CIG4,CDATYP REAL WORK(*) CHARACTER *(*) CTYPVAR,CNOMVAR,CETIKET,CGRTYP CHARACTER *9 ECRIUN LOGICAL REWRIT * *AUTEUR M. VALIN AVRIL 1989 DORVAL DRPN CANADA P.Q. * *REVISION 0.0.0 (AUTREFOIS STDECR - STDECX) * 1.0.1 MODIFICATION POUR ECRIRE DANS UN FICHIER RANDOM/SEQ STANDARD * 1.0.2 M. Lepine - bug fix pour ICDATE (input only) - fev 1991 * 1.0.3 M. Lepine - Allocation dynamique du champ de travail work * sept 1991 * 1.0.4 M. Lepine - Bug fix reecriture quand ind =0 (mars 1992) * 1.0.5 M. Lepine - Ajout du format ieee (mai 1992) * * *LANGAGE FORTRAN * *OBJET(FSTECR) * ECRIRE UN ENREGISTREMENT DANS UN FICHIER STANDARD * PLUSIEURS TYPES DE CHAMPS ET DE COMPACTION SONT PERMIS. * CETTE ROUTINE PEUT REECRIRE PAR-DESSUS UN ENREGISTREMENT * DEJA EXISTANT AVEC REWRIT=.TRUE. * *ALGORITHME * POUR UN FICHIER RANDOM, ON TENTE D'ECRIRE DANS UN ESPACE LIBRE * DE MEME TAILLE (EVENTUELLEMENT PLUS GROS), SINON ON INSERE A LA FIN. * SI CES DEUX TENTATIVES ECHOUENT, ON UTILISE L'ENTREE DU DIRECTEUR * CORRESPONDANT AU PLUS PETIT ESPACE LIBRE (DONT ON PERD A JAMAIS LA * DESCRIPTION). LE DIRECTEUR SUR DISQUE EST AGRANDI LORSQUE NECESSAIRE. * POUR UN FICHIER SEQUENTIEL, ON ECRIT A LA POSITION COURANTE. * * *ARGUMENTS * IN F CHAMP A ECRIRE * IN WORK CHAMP DE TRAVAIL DIMENSION(NI*NJ*MAX(1,NK)+NPAK-1)/NPAK+2 * IN NPAK RAPPORT DE COMPACTION COURRANT (0,1,2,3,4,5,6,10,12,15,30) * IN IUN UNITE FORTRAN * IN CDATE DATE TIME STAMP CMC ENTIER, SMMJJAAZZR TEMPS ZERO PREVISION * IN CDEET PAS DE TEMPS ENTIER (SECONDES, MAX 32767) * IN CNPAS NUMERO DU PAS DE TEMPS ENTIER, MAX 32767 * IN CNI PREMIERE DIMENSION DU CHAMP, MAX 32767 * IN CNJ DEUXIEME DIMENSION, MAX 32767 * IN CNK TROISIEME DIMENSION, MAX 4095 * IN CIP1 DESCRIPTEUR 1, MAX 32767 (NORMALEMENT NIVEAU) * IN CIP2 DESCRIPTEUR 2, MAX 32767 * IN CIP3 DESCRIPTEUR 3, MAX 4095 * IN CTYPVAR TYPE DE CHAMP, 1 CARACTERE FORMAT L (HOLLERITH) * IN CNOMVAR NOM DU CHAMP, 2 CARACTERES FORMAT L (HOLLERITH) * IN CETIKET ETIQUETTE, 8 CARACTERES, SENS DEFINI PAR USAGER * IN CGRTYP TYPE DE GRILLE, 1 CARACTERE FORMAT L (HOLLERITH) * IN CIG1 DESCRIPTEUR DE GRILLE 1, ENTIER, MAX 2047 * IN CIG2 DESCRIPTEUR DE GRILLE 2, ENTIER, MAX 2047 * IN CIG3 DESCRIPTEUR DE GRILLE 3, ENTIER, MAX 65535 * IN CIG4 DESCRIPTEUR DE GRILLE 4, ENTIER, MAX 65535 * IN CDATYP TYPE DU CHAMP (POUR LA COMPRESSION), SOIT * 0=BINAIRE,1=REEL,2=ENTIER,3=CARACTERE * IN REWRIT .TRUE. EFFACE L'ENREGISTREMENT ECRIT MEME PLACE * SI POSSIBLE * .FALSE. ECRIT SEULEMENT A LA FIN * *MESSAGES * * FSTERRO('FSTECR',' NO PERMISSION TO WRITE ',ERRNPW, FSTECR ) * VALID ('LOGFIL',' ERREUR IP1 IP2 IP3 DOIT ETRE ENTRE') * LOGFIL 'ERROR DANS FSTEFF (QDRGET - QSTWDE)' * LOGFIL 605 ' EFFACE IUN L ENREGISTREMENT EST EFFACE' * LOGFIL 630 'FSTECR IUN EST ETENDU' * LOGFIL 640 ' ECRIT IUN' * * *IMPLICITES * * COMMON FSTC88 CE BLOC SERT A LA GESTION DES FICHIERS * ------ ------ STANDARDS (1988 OU AVANT ) QUI SONT OUVERTS. * COMMON /FSTC88/ IUNTAB(0:41),DIRSIZ(0:40), NBCORR(0:40), % NUTIL(0:40), NXTADR(0:40), NUMREC(0:40),PRMECR(0:40), % NBECR (0:40),NRECUP(0:40), NBEFF (0:40), NBEXT (0:40), % MSKPRT( 6,0:40), SEARCH( 6,0:40),MASQUE( 6,0:40), % CURSLT( 12,0:40),MODIFS(0:40),NXTSEQ(0:40),CURSEQ(0:40), % DIAGP, LOGFIL,DEBUG, FASTIO, TOLRNC, MSGLVL,NPAIRE, % COPYMOD, CHAINE(0:40),EFFDSC(0:40) INTEGER IUNTAB, DIRSIZ, NUTIL , NXTADR, NUMREC, MSKPRT, % MASQUE, SEARCH, NBECR , NBRECR, NRECUP, NBEFF, NBEXT , NBCORR, % LOGFIL, DEBUG, CURSLT, TOLRNC, MSGLVL, NPAIRE, NXTSEQ, CURSEQ, % CHAINE, EFFDSC LOGICAL PRMECR, FASTIO, MODIFS, DIAGP, COPYMOD * * IUNTAB IUNTAB(I) >= 0 EST LE NUMERO D'UNITE DU FICHIER DECRIT * PAR L'ENTREE I DES TABLES DE CE BLOC. * IUNTAB(I) = -1 INDIQUE UNE ENTREE LIBRE. * IUNTAB(MXSTD1) SERT DE SENTINELLE. * * DIRSIZ TAILLE DU DIRECTEUR SUR DISQUE, I.E. LE NOMBRE MAXIMUM * D'ENTREES QU'IL PEUT CONTENIR. (0 = SEQUENTIEL) * NUTIL NOMBRE D'ENTREES EFFECTIVEMENT UTILISEES DANS L'INDEX * (MEMOIRE OU DISQUE). * NXTADR PROCHAINE ADRESSE DISPONIBLE POUR ECRIRE UN ENREGISTREMENT. * * NUMREC POSITION COURANTE DE RECHERCHE DANS LE DIRECTEUR, UTILISEE * POUR PASSER AU 'SUIVANT'. 0 INDIQUE DE PARTIR AU DEBUT, * TANDIS QUE -1 INDIQUE QUE L'OPERATION 'SUIVANT' EST ILLEGALE. * POUR UN FICHIER SEQUENTIEL, NUMREC = 1 (OU 0). * -1 = RIEN DE VALIDE * 0 = RIEN DE VALIDE / RECHERCHE DU SUIVANT ACCEPTABLE * 1 = APRES QSTSUI/FSTSUI * 2 = APRES LECTURE * FSTSEL = 0 / FSTPOS = -1 / FSTSKP = -1 / FSTRWD = -1 * * MSKPRT MASQUE PARTIEL COURANT, SPECIFIE PAR LA ROUTINE STDMSQ. * MASQUE MASQUE DE RECHERCHE COURANT. * SEARCH VALEUR DE RECHERCHE COURANTE. * * PRMECR INDIQUE SI ON PEUT ECRIRE SUR LE FICHIER (.TRUE.) OU NON. * * NBECR NOMBRE TOTAL D'ECRITURES EFFECTUEES SUR CE FICHIER DEPUIS * SA CREATION (INCLUANT RE-ECRITURES ET RECUPERATIONS). * NBRECR NOMBRE TOTAL DE RE-ECRITURES EFFECTUEES. * NRECUP NOMBRE DE FOIS QU'ON A RECUPERE UNE QUELCONQUE ENTREE * DETRUITE (Y COMPRIS LORS D'UNE RE-ECRITURE). * NBEFF NOMBRE D'ENREGISTREMENTS EFFACES (Y COMPRIS LORS D'UNE * RE-ECRITURE). * NBEXT NOMBRE DE FOIS QU'ON A ETENDU L'INDEX-DISQUE. * NBCORR NOMBRE DE FOIS QU'ON A CORRIGE L'ENTETE DU FICHIER. * * CURSLT ENTREE DE DIRECTEUR ACTIVE (LA SEULE SI SEQUENTIEL) * * FASTIO INDIQUE SI ON OPTIMISE L'IO AU PRIX DE LA SECURITE * MODIFS INDIQUE (POUR FASTIO) SI LE DIRECTEUR D'UN FICHIER A ETE MODIFIE * DIAGP INDIQUE S'IL FAUT IMPRIMER CERTAINS MESSAGES. * LOGFIL UNITE FORTRAN QUI RECEVRA LES MESSAGES DE TOUT POIL. * DEBUG OPTION DE TRACE POUR LA ROUTINE STDDBG. * * CE BLOC COMMON CONTIENT AUSSI LE RESULTAT DE L'EXPANSION DE LA * DERNIERE "SLOT" ACTIVE (VOIR DECK PCKUNP) DANS LES VARIABLES * DATE A UBC. LE TOUT EST AUSSI DISPONIBLE SOUS FORME DE TABLE * DANS LE TABLEAU TABPRM (FORMAT HOLLERITH MAX. 4 CARACTERES). * COMMON /FSTC88/ DATE, DEET, NPAS, NI, NJ, NK,NBITS, % DATYP, IP1, IP2, IP3, TYPVAR,NOMVAR, ETIQ14, ETIQ58, % GRTYP, IG1, IG2,IG3, IG4, SWA, LNG, DLTF, UBC, % ETIQ56, ETIQ78 INTEGER DATE, DEET, NPAS, NI, NJ, NK,NBITS, DATYP, % ETIQ14, NOMVAR, TYPVAR, IP1,IP2, IP3, GRTYP, IG1, % IG2, IG3,IG4, SWA, LNG, DLTF, UBC, ETIQ58, % ETIQ56, ETIQ78 INTEGER TABPRM(26) EQUIVALENCE (TABPRM(1),DATE) INTEGER RDSYNC, RDSYN2, SQSYNC, SQSYN2 COMMON /FSTSYNC/ RDSYNC, RDSYN2, SQSYNC, SQSYN2 * *MODULES * EXTERNAL FSTINF, FSTEFF,QSTEOI INTEGER FSTINF, FSTEFF,QSTEOI,IEOI EXTERNAL QDRGET,QSTWDE,QSTWHD,QSTRHD,QSTWDR,QSTRDR EXTERNAL QSTINT,INCDAT,XXPAK,IIPAK,QSTPKA,QSTPKC,QSTWPM,QSTARG EXTERNAL QSTUPC,WAREAD,WAWRIT,MOVLEV INTEGER QSTWDE,QSTINT,QDRGET,QSTWHD,QSTRHD,QSTWDR,QSTRDR *