C*********************************************************************** C C C BIBRMCLE.FTN EST LA SOUSROUTINE QUI PERMET DE RETROUVER C LES FICHES BIBLIO GRAPHIQUE PAR UNE OU DES COMBINAISONS C DE MOTS CLE. C C LE RESULTAT DE LA RECHERCHE SORT DANS UN TABLEAU LA(512) C AVEC EN NDF LE NOMBRE DE FICHES A PRINTER. C ELLES DOIVENT ETRE PRINTEES PAR UNE AUTRE SOUSROUTINE DANS BIBLIO.FTN C C C********************************************************************** SUBROUTINE RMCLE(NBA,LA,COMM) DIMENSION LA(512),MOT(512),CLE(1000,12),MOC(12) DIMENSION LB(512),LC(512),COMM(132),REL(3) BYTE CLE,MOC,COMM,REL COMMON /ASVAR/L,J OPEN (UNIT=2,NAME='DL1:[204,100]CODCLE.BIB',TYPE='OLD' 2,ACCESS='SEQUENTIAL',FORM='UNFORMATTED',SHARED) READ(2)NMC,NF,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='SY:RMCFIC.REF',TYPE='NEW', 2ACCESS='SEQUENTIAL',FORM='UNFORMATTED') COMM(127)='.' COMM(128)='.' COMM(129)='.' COMM(130)='E' COMM(131)='T' COMM(132)='C' NBA=0 DO 1360 I=1,512 LA(I)=0 LB(I)=0 LC(I)=0 1360 CONTINUE TYPE 404 404 FORMAT(//,' Pour indiquer que l''on a termine,taper RETURN.'/) DO 1350 I=1,126 1350 COMM(I)=' ' ICO=1 MCF=1 121 TYPE 110,MCF 110 FORMAT(/,'$MOT CLE #',I4,' :') ACCEPT 103,NCHA,MOC 103 FORMAT(Q,12A1) IF (MOC(1).GE.'A') GO TO 204 DECODE(NCHA,1200,MOC) KMC 1200 FORMAT(I12) IF ((KMC.GT.NMC).OR.(KMC.LE.0)) GO TO 202 DO 1210 KI=1,12 1210 MOC(KI)=CLE(KMC,KI) TYPE 1215,MOC 1215 FORMAT(/,'$Vous voulez dire ',12A1,'?<[O] ou N>:') ACCEPT 507,CR 507 FORMAT(A1) 1220 FORMAT(A3) IF (CR.EQ.'N') GO TO 121 DO 1225 KI=1,12 1225 MOC(KI)=CLE(KMC,KI) K=KMC GO TO 1226 204 K=0 201 K=K+1 DO 300 KI=1,12 IF (MOC(KI).NE.CLE(K,KI)) GO TO 302 300 CONTINUE 1226 DO 303 KI=1,12 IF (ICO.EQ.127) GO TO 304 COMM(ICO)=MOC(KI) ICO=ICO+1 303 CONTINUE 304 GO TO 210 302 IF (K-NMC) 201,202,202 202 TYPE 203,(MOC(KI),KI=1,12) 203 FORMAT(//,1X,12A1,' N''EXISTE PAS !',//) GO TO 121 210 READ(7'K)MOT NBA=MOT(1) DO 100 IL=1,NBA 100 LA(IL)=MOT(IL+1) 770 TYPE 600 600 FORMAT(/,'$Relation booleenne a appliquer :') ACCEPT 6,REL 6 FORMAT(3A1) IF (REL(1).EQ.' ') GO TO 1000 IF (ICO.EQ.127) GO TO 305 COMM(ICO)=' ' ICO=ICO+1 IF (ICO.EQ.127) GO TO 305 COMM(ICO)=REL(1) ICO=ICO+1 IF (ICO.EQ.127) GO TO 305 COMM(ICO)=REL(2) ICO=ICO+1 IF (ICO.EQ.127) GO TO 305 COMM(ICO)=REL(3) ICO=ICO+1 IF (ICO.EQ.127) GO TO 305 COMM(ICO)=' ' IC0=ICO+1 305 MCF=MCF+1 122 TYPE 110,MCF ACCEPT 103,NCHA,MOC IF (MOC(1).GE.'A') GO TO 704 DECODE(NCHA,1200,MOC) KMC IF ((KMC.GT.NMC).OR.(KMC.LE.0)) GO TO 702 DO 1310 KI=1,12 1310 MOC(KI)=CLE(KMC,KI) TYPE 1215,MOC ACCEPT 507,CR IF (CR.EQ.'N') GO TO 122 DO 1227 KI=1,12 1227 MOC(KI)=CLE(KMC,KI) K=KMC GO TO 1228 704 K=0 701 K=K+1 DO 310 KI=1,12 IF (MOC(KI).NE.CLE(K,KI)) GO TO 312 310 CONTINUE 1228 CONTINUE DO 306 KI=1,12 IF (ICO.EQ.127) GO TO 307 COMM(ICO)=MOC(KI) ICO=ICO+1 306 CONTINUE 307 GO TO 710 312 IF (K-NMC) 701,702,702 702 TYPE 203,(MOC(KI),KI=1,12) GO TO 122 710 READ(7'K)MOT NBB=MOT(1) DO 720 IL=1,NBB 720 LB(IL)=MOT(IL+1) KA=0 NBC=0 740 KA=KA+1 IF (KA.GT.NBA) GO TO 750 KB=0 741 KB=KB+1 IF (KB.GT.NBB) GO TO 740 IF (LA(KA).EQ.LB(KB)) GO TO 730 GO TO 741 730 NBC=NBC+1 LC(NBC)=LA(KA) GO TO 741 750 IF (REL(1).NE.'E') GO TO 800 DO 760 IL=1,NBC 760 LA(IL)=LC(IL) NBA=NBC GO TO 770 800 KA=0 840 KA=KA+1 IF (KA.GT.NBA) GO TO 850 KB=0 841 KB=KB+1 IF (KB.GT.NBC) GO TO 840 IF (LA(KA).EQ.LC(KB)) GO TO 842 GO TO 841 842 LA(KA)=0 GO TO 840 850 NBC=0 DO 516 I=1,NBA IF (LA(I).EQ.0) GO TO 516 NBC=NBC+1 LC(NBC)=LA(I) 516 CONTINUE DO 517 I=1,NBC 517 LA(I)=LC(I) NBA=NBC IF (REL(1).EQ.'N') GO TO 770 NBD=0 NBAA=NBA+1 NBA=NBA+NBB DO 920 I=NBAA,NBA NBD=NBD+1 LA(I)=LB(NBD) 920 CONTINUE GO TO 770 1000 CONTINUE IF (NBA.GT.0) GO TO 1116 TYPE *,'IL N''Y A PAS DE FICHES POUR CETTE COMBINAISON DE 2 MOTS CLE!!' GO TO 1117 1116 TYPE 1100,NBA 1100 FORMAT(//' j''ai retenu ',I5,' fiches bibliographiques'// 2' voyez le listing <> ou <> sur l''imprimante',/) DO 1110 I=1,NBA 1110 TYPE 1115,LA(I) 1115 FORMAT(I5) WRITE(3)NBA,LA 1117 CLOSE (UNIT=3) CLOSE (UNIT=2) CLOSE (UNIT=7) IF (ICO.GE.127) GO TO 1120 DO 1121 I=127,132 1121 COMM(I)=' ' 1120 RETURN END