C********************************************************************** C C C BIBINDEX.FTN EST LA SOUSROUTINE QUI PERMET C DE CORRIGER ET INDEXER APRES SAUVETAGE LES FICHES C BIBLIOGRAPHIQUES. C C*********************************************************************** SUBROUTINE INDEX(ICM,DAY) DIMENSION MOT(512),T(72,4),TD(72,4),P(6,5),PD(6,5),A(18,5) DIMENSION AD(18,5),EGO(30,12),ABB(40,42),BOOK(36),CLE(1000,12) DIMENSION PAGE(10),VOL(4),DAY(9),MOC(12,10),TAP(10),RPL(72) DIMENSION MCLE(10),NDX(255),NDZ(255),DAYB(9),IAKIL(10) BYTE T,TD,P,PD,A,AD,EGO,ABB,BOOK,CLE,PAGE,VOL,DAY,MOC,TAP BYTE RPL,NSD,CR,DAYB COMMON /ASVAR/L,J COMMON /FKIL/NAKIL,IAKIL OPEN (UNIT=1,NAME='DL1:[204,100]ABBAUT.BIB',TYPE='OLD', 2ACCESS='SEQUENTIAL',FORM='UNFORMATTED',SHARED) READ(1)NABB,ABB,NEGO,EGO OPEN (UNIT=2,NAME='DL1:[204,100]CODCLE.BIB',TYPE='OLD', 2ACCESS='SEQUENTIAL',FORM='UNFORMATTED',SHARED) READ(2)NMC,NFZ,CLE OPEN (UNIT=7,NAME='DL1:[204,100]MOTCLE.BIB',TYPE='OLD', 2ACCESS='DIRECT',SHARED,FORM='UNFORMATTED', 3RECORDSIZE=256,ASSOCIATEVARIABLE=J) OPEN (UNIT=3,NAME='DL1:[204,100]NONINDX.BIB',TYPE='OLD', 2SHARED,FORM='UNFORMATTED',ACCESS='SEQUENTIAL') CALL ASSIGN(4,'DL1:[204,100]FICHES.BIB') CALL FDBSET(4,'OLD') DEFINE FILE 4(8000,256,U,L) READ(3)NX,NDX IF (NX.NE.0) GO TO 601 TYPE 602 602 FORMAT(//,' DESOLE ,AUJOURD''HUI IL N''Y A PLUS DE 2 FICHES A INDEXER. AU REVOIR.'//) GO TO 600 601 TYPE 87,NX 87 FORMAT(/' BONJOUR, IL Y A AUJOURD''HUI ',I4' FICHES A INDEXER'/) TYPE *,'CE SONT LES FICHES NUMERO:' DO 1900 I=1,NX 1900 TYPE 1901,I,NDX(I) 1901 FORMAT(1X,I4,'-->',I6) 8100 TYPE 1902 1902 FORMAT('$Par quelle fiche commence-t-on? :') ACCEPT 1903,IFIC 1903 FORMAT(I5) DO 8000 I=1,NX IF (NDX(I).NE.IFIC) GO TO 8000 IDEB=I GO TO 8015 8000 CONTINUE 8015 CONTINUE DO 88 LZ=IDEB,NX TYPE 404 404 FORMAT(//,' Lors des corrections,taper RETURN si 2 ce qui est ecrit est correct.',/) 400 NF=NDX(LZ) TYPE 1,NF 1 FORMAT(//,' FICHE #',I6,//) 4 FORMAT(I4) READ(4'NF)NSD,NF,NA,A,P,T,BOOK,VOL,PAGE,NAN,TAP,ICB,DAYB,MCLE IF (NSD.EQ.'S') GO TO 86 READ(4'NF)NSD,NF,NA,A,AD,T NFB=NF+1 READ(4'NFB)NSD,NF,P,PD,TD,BOOK,VOL,PAGE,NAN,TAP,ICB,DAYB,MCLE 86 DO 10 I=1,NA 2 FORMAT(/,' AUTEUR #',I3) 3 FORMAT(/,' AUTEUR #',I3,1X,18A1,1X,6A1) IF (I.LE.5) TYPE 3,I,(A(K,I),K=1,18),(P(K,I),K=1,6) IF (I.GT.5) TYPE 3,I,(AD(K,I-5),K=1,18),(PD(K,I-5),K=1,6) 31 FORMAT(18A1) 6 FORMAT(6A1) 10 CONTINUE TYPE 7 7 FORMAT(//,' TITRE',/) 8 FORMAT(72A1) I=1 18 TYPE 691,(T(K,I),K=1,72) IF (T(1,I).EQ.' ') GO TO 17 I=I+1 IF (I-4) 18,18,17 17 CONTINUE IF (NSD.EQ.'S') GO TO 701 I=1 19 TYPE 691,(TD(K,I),K=1,72) IF (TD(1,I).EQ.' ') GO TO 701 I=I+1 IF (I-4) 19,19,701 701 TYPE 9,BOOK,VOL,PAGE,NAN 9 FORMAT(/,' ',36A1,';',4A1,':',10A1,'(',I4,')') TYPE 105,TAP 105 FORMAT(/,' T-A-P:',10A1) TYPE 700,DAYB,ICB 700 FORMAT(/,' FICHE ENTREE OU MODIFIEE LE ',9A1, 2' SOUS L''UIC NUMERO [ 204,',O3,' ]') 100 FORMAT(36A1) 103 FORMAT(10A1) 640 TYPE 505 505 FORMAT(/,'$Y a t-il des corrections a faire? 2 ou la supprime-t-on?:') ACCEPT 507,CR IF (CR.NE.'K') GO TO 8025 TYPE 8026 8026 FORMAT(/'$Vous desirez vraiment "KILLER" la fiche?:') ACCEPT 507,CR IF (CR.NE.'O') GO TO 640 NAKIL=NAKIL+1 IAKIL(NAKIL)=NF GO TO 8030 8025 IF (CR.NE.'O') GO TO 506 500 TYPE 502 502 FORMAT(//,' **** CORRECTIONS ****',//) 508 TYPE 503 503 FORMAT(' A pour les auteurs'/' T pour le titre'/' R pour 2 les references'/'$RETURN pour verifier le tout:') READ(5,507,ERR=508)CR 507 FORMAT(A1) IF (CR.EQ.' ') GO TO 1500 IF (CR.NE.'A') GO TO 255 1500 TYPE 91,NF,NA 91 FORMAT(//,' FICHE #',I6,//,' NOMBRE D''AUTEURS:',I5/'$:') ACCEPT 4,NAW IF (NAW.NE.0) NA=NAW DO 941 I=1,NA TYPE 2,I IF (I.LE.5) TYPE 93,(A(K,I),K=1,18) IF (I.GT.5) TYPE 93,(AD(K,I-5),K=1,18) 93 FORMAT(//,' NOM:',18A1,/'$:') ACCEPT 31,(RPL(KZ),KZ=1,18) IF (RPL(1).EQ.' ') GO TO 610 DO 611 IZ=1,18 IF (I.LE.5) A(IZ,I)=RPL(IZ) IF (I.GT.5) AD(IZ,I-5)=RPL(IZ) 611 CONTINUE 610 IF (I.LE.5) TYPE 95,(P(K,I),K=1,6) IF (I.GT.5) TYPE 95,(PD(K,I-5),K=1,6) 95 FORMAT(/,' PRENOMS:',6A1,/'$:') ACCEPT 6,(RPL(KZ),KZ=1,6) IF (RPL(1).EQ.' ') GO TO 941 DO 612 K=1,6 IF (I.LE.5) P(K,I)=RPL(K) IF (I.GT.5) PD(K,I-5)=RPL(K) 612 CONTINUE 941 CONTINUE 255 IF (CR.EQ.' ') GO TO 1501 IF (CR.NE.'T') GO TO 256 1501 TYPE *,'TITRE:RETURN pour valider' TYPE *,'=Old=New= pour changer Old en New , 2ou bien retaper toute la ligne' TYPE *,'ou encore ! pour effacer toute la ligne.' 691 FORMAT(1X,72A1) I=1 918 IF (I.LE.4) TYPE 691,(T(K,I),K=1,72) IF (I.GT.4) TYPE 691,(TD(K,I-4),K=1,72) ACCEPT 8,RPL IF (RPL(1).NE.'=') GO TO 1110 IF (RPL(1).NE.'!') GO TO 8010 DO 8011 KJ=1,72 8011 RPL(KJ)=' ' GO TO 8012 8010 DO 1300 KJ=2,36 IF (RPL(KJ).EQ.'=') GO TO 1320 1300 CONTINUE 1320 LO=KJ-2 KJ=KJ+1 DO 1330 KL=KJ,36 IF (RPL(KL).EQ.'=') GO TO 1340 1330 CONTINUE 1340 LN=KL-KJ LON=71-LO LOL=LO-1 LNK=LN-1 LNL=LO+3 DO 1115 K=1,LON IF (I-4) 1120,1120,1125 1120 DO 1121 KI=0,LOL 1121 RPL(37+KI)=T(K+KI,I) GO TO 1127 1125 DO 1126 KI=0,LOL 1126 RPL(37+KI)=TD(K+KI,I-4) 1127 DO 1116 KI=1,LO IF (RPL(KI+1).NE.RPL(36+KI)) GO TO 1115 1116 CONTINUE GO TO 1130 1115 CONTINUE GO TO 918 1130 LNN=LN-LO KJ=K+LO IF (LNN) 1400,1600,1700 1400 DO 1450 KI=KJ,72 KL=KI+LNN IF (KL.GT.72) GO TO 1455 IF (I.LE.4) T(KL,I)=T(KI,I) IF (I.GT.4) TD(KL,I-4)=TD(KI,I-4) 1450 CONTINUE 1455 GO TO 1600 1700 DO 1460 KI=72,KJ,-1 KL=KI+LNN IF (KL.GT.72) GO TO 1460 IF (I.LE.4) T(KL,I)=T(KI,I) IF (I.GT.4) TD(KL,I-4)=TD(KI,I-4) 1460 CONTINUE 1600 IF (I-4) 1135,1135,1137 1135 DO 1136 KI=0,LNK 1136 T(K+KI,I)=RPL(LNL+KI) GO TO 918 1137 DO 1138 KI=0,LNK 1138 TD(K+KI,I-4)=RPL(LNL+KI) GO TO 918 1110 IF (I.LE.4) GO TO 1000 IF ((RPL(1).EQ.' ').AND.(TD(1,I-4).EQ.' ')) GO TO 917 GO TO 1100 1000 IF ((RPL(1).EQ.' ').AND.(T(1,I).EQ.' ')) GO TO 917 1100 IF (RPL(1).EQ.' ') GO TO 620 8012 DO 615 IZ=1,72 IF (I.LE.4) T(IZ,I)=RPL(IZ) IF (I.GT.4) TD(IZ,I-4)=RPL(IZ) 615 CONTINUE 620 I=I+1 IF (I-8)918,918,917 917 CONTINUE 256 IF (CR.EQ.' ') GO TO 1502 IF (CR.NE.'R') GO TO 640 1502 TYPE 99,BOOK 99 FORMAT(/,' JOURNAL:',36A1,/'$:') ACCEPT 100,(RPL(KZ),KZ=1,36) IF (RPL(1).EQ.' ') GO TO 930 DO 626 IZ=1,36 626 BOOK(IZ)=RPL(IZ) DO 900 I=1,NABB DO 911 K=1,6 IF (BOOK(K).NE.ABB(I,K)) GO TO 900 911 CONTINUE GO TO 910 900 CONTINUE GO TO 930 910 DO 920 K=1,36 920 BOOK(K)=ABB(I,K+6) 930 TYPE 901,VOL 901 FORMAT(/,' VOLUME:',4A1,/'$:') ACCEPT 6,(RPL(KZ),KZ=1,6) IF (RPL(1).EQ.' ') GO TO 913 DO 914 K=1,4 914 VOL(K)=RPL(K) 913 TYPE 902,PAGE 902 FORMAT(/,' PAGES:',10A1,/'$:') ACCEPT 103,(RPL(KZ),KZ=1,10) IF (RPL(1).EQ.' ') GO TO 630 DO 631 K=1,10 631 PAGE(K)=RPL(K) 630 TYPE 904,NAN 904 FORMAT(/,' ANNEE:',I4/'$:') ACCEPT 4,NAW IF (NAW.NE.0) NAN=NAW TYPE 905,TAP 905 FORMAT(/,' T-A-P:',10A1,/'$:') ACCEPT 103,(RPL(KZ),KZ=1,10) IF (RPL(1).EQ.' ') GO TO 640 DO 645 IZ=1,10 645 TAP(IZ)=RPL(IZ) GO TO 640 506 CONTINUE MCF=0 120 IF (MCF-10) 121,121,130 121 DO 350 NCL=1,10 IF (MCLE(NCL).EQ.0) GO TO 360 MCF=NCL 350 CONTINUE 360 IF (MCF.EQ.0) GO TO 363 TYPE 355 355 FORMAT(//,' MOTS CLE DEJA RENTRES:') DO 357 NCL=1,MCF TYPE 358,NCL,(CLE(MCLE(NCL),K),K=1,12) 358 FORMAT(1X,I3,1X,12A1) 357 CONTINUE 363 CONTINUE MCF=MCF+1 NCL=MCF 1210 TYPE 110,MCF 110 FORMAT(/,'$MOT CLE #',I3,' :') ACCEPT 106,(MOC(K,MCF),K=1,12) 106 FORMAT(12A1) IF (MOC(1,MCF).EQ.' ') GO TO 130 MCF=MCF+1 IF (MCF.LE.10) GO TO 1210 130 MCF=MCF-1 IF (MCF)214,214,131 131 DO 200 I=NCL,MCF 205 IF (MOC(1,I).GE.'A') GO TO 207 KIZ=0 DO 208 KI=1,12 IF (MOC(KI,I).EQ.' ') GO TO 209 KIZ=KIZ+1 RPL(KI)=MOC(KI,I) 208 CONTINUE 209 DECODE(KIZ,206,RPL) K 206 FORMAT(I12) TYPE 217,(CLE(K,KI),KI=1,12) ACCEPT 507,REP IF (CR.NE.'N') GO TO 210 TYPE 110,I ACCEPT 106,(MOC(KI,I),KI=1,12) GO TO 205 207 CONTINUE IF (NMC) 202,202,204 204 K=0 201 K=K+1 NON=0 DO 211 KI=1,12 IF(MOC(KI,I).NE.CLE(K,KI)) NON=NON+1 211 CONTINUE IF (NON.GT.2) GO TO 213 IF (NON.EQ.0) GO TO 210 TYPE 217,(CLE(K,KI),KI=1,12) 217 FORMAT(//'$Vous voulez dire ',12A1,' ? <[O] ou N>:') ACCEPT 507,CR IF (CR.EQ.'N') GO TO 201 DO 218 KI=1,12 218 MOC(KI,I)=CLE(K,KI) GO TO 210 213 IF (K-NMC) 201,202,202 202 TYPE 203,(MOC(KI,I),KI=1,12) 203 FORMAT(//,1H$,12A1,' est un nouveau mot cle !',// 2'$le garde-t-on? <[O] ou N>:') ACCEPT 507,CR IF (CR.EQ.'N') GO TO 220 60 FORMAT(A3) NMC=NMC+1 DO 65 KI=1,12 65 CLE(NMC,KI)=MOC(KI,I) MOT(1)=1 MOT(2)=NF WRITE(7'NMC)MOT MCLE(I)=NMC GO TO 230 220 TYPE 110,I ACCEPT 106,(MOC(KI,I),KI=1,12) GO TO 204 210 READ(7'K)MOT MOT(1)=MOT(1)+1 IN=MOT(1)+1 MOT(IN)=NF WRITE(7'K) MOT MCLE(I)=K 230 CONTINUE 200 CONTINUE 214 IF(NSD.EQ.'D') GO TO 90 WRITE(4'NF)NSD,NF,NA,A,P,T,BOOK,VOL,PAGE,NAN,TAP,ICM,DAY,MCLE GO TO 951 90 WRITE(4'NF)NSD,NF,NA,A,AD,T WRITE(4'NFB)NSD,NF,P,PD,TD,BOOK,VOL,PAGE,NAN,TAP,ICM,DAY,MCLE 951 REWIND 2 WRITE(2)NMC,NFZ,CLE 8030 NDX(LZ)=0 TYPE 8020 8020 FORMAT(/,'$Indexez-vous celle qui suit<[O] ou N>, 2 ou arretez-vous?:') ACCEPT 507,CR IF (CR.EQ.'N') GO TO 8100 IF (CR.EQ.'A') GO TO 1910 88 CONTINUE 1910 NXW=0 DO 370 I=1,NX IF (NDX(I).EQ.0) GO TO 370 NXW=NXW+1 NDZ(NXW)=NDX(I) 370 CONTINUE REWIND 3 WRITE(3)NXW,NDZ 600 CLOSE (UNIT=1) CLOSE (UNIT=2) CLOSE (UNIT=3) CLOSE (UNIT=7) CLOSE (UNIT=4) RETURN END