* * $Id: proced.F,v 1.1.1.1 1996/02/26 17:16:40 mclareni Exp $ * * $Log: proced.F,v $ * Revision 1.1.1.1 1996/02/26 17:16:40 mclareni * Comis * * #include "comis/pilot.h" *CMZ : 1.11/01 24/01/91 11.37.05 by Rene Brun *-- Author : V.Berezhnoi SUBROUTINE PROCED ********************************************************** * * * THIS ROUTINE PROCEEDS THE MAP FILE, WHICH IS ASSUMED * * TO BE OPENED ON CHANNEL NUMBER 1. * * * ********************************************************** COMMON /JKEYS/ JSECT,JCRF,JSBN,JPSECT,JSYMB,JOVR,JMM,JPM, * JMR,JKFS,JFF,JBLAN * * BUFFER FOR IDENTIFIER: DIMENSION IDN(2) * * BUFFERS FOR SRINGS: CHARACTER*60 STR CHARACTER*132 ISTR * FLAGS: DATA ICMDON/0/,ISBDON/0/ DATA KBLN/4H / * JSTR=MJSCHA(ISTR) JIDN=MJCHAR(IDN) ISTATE=1 * READ THE NEXT STRING: 1 IEOF=ISTRRD(ISTR,N) * IS EOF REACHED? IF(IEOF.NE.0) GO TO 50 * GO TO (10,20,30,40) ISTATE * * STATE 1: SEARCH FOR ONE OF THE KEY STRINGS 10 IF(ICMDON.NE.0) THEN IF(ISBDON.NE.0) THEN GO TO 60 ELSE GO TO 11 ENDIF ENDIF IF(MJSINS(JSECT,24,JSTR,N).NE.0) GO TO 13 * 11 IF(ISBDON.NE.0) GO TO 1 IF(MJSINS(JCRF,22,JSTR,N).NE.0) GO TO 12 IF(MJSINS(JSBN,15,JSTR,N).EQ.0) GO TO 1 * 'SYMBOLS BY NAME' SECTION OF MAP-FILE ISTATE=4 ISTA=1 GO TO 1 * 'SYMBOL CROSS REFERENCE' SECTION OF MAP-FILE 12 ISTATE=3 ISTA=1 GO TO 1 * 'PROGRAM SECTION SYNOPSIS' 13 ISTATE=2 IEOF=ISTRRD(ISTR,N) ISTA=1 GO TO 1 * STATE=2: FIND COMMONS AMONG PROGRAM SECTIONS 20 IF(MJSINS(JPM,4,JSTR,N).NE.0) GO TO 26 GO TO (21,22,23) ISTA 21 IF(MJSINS(JPSECT,5,JSTR,N).EQ.0) GO TO 1 ISTA=2 GO TO 1 22 IF(MJSINS(JMM,4,JSTR,N).EQ.0) GO TO 1 ISTA=3 GO TO 1 **** THE NEXT LINES UNTIL *** ARE INSERTED RECENTLY: * CHECK FOR BLANK COMMON: 23 CALL CSSETC(JIDN,8,KBLN) CALL CCOPYS(JSTR,JIDN,6) J=JSTR+6 M=N-6 IF(MLEQS(JIDN,JBLAN,6).NE.0) GO TO 24 *** * SEARCH FOR SECTION NAME, BEGINNING WITH MLETTE IF(MLETTE(MKCHAR(JSTR)).EQ.0) GO TO 25 J=JSTR M=N * PICK UP IDENT: L=MIDENT(J,M,JIDN,8) L=MIKCHA(J) * CHECK THE CURRENT CHARACTER FOR BLANK OR TAB IF(L.EQ.32) GO TO 24 IF(L.NE.9) GO TO 25 24 L=MKBLAN(J,M) * CHECK FOR 'OVR' ATTRIBUTE IF(MJSINS(JOVR,3,J,M).EQ.0) GO TO 25 * CONVERT THE HEXADECIMAL REPRESENTATION TO NUMBER L=LHXNMB(J,N,IADR) IF(L.EQ.0) GO TO 25 * INSERT RECORD TO TABLE CALL PUTC(IDN,IADR/4) * CHECK FOR NEW PAGE: 25 IF(MJSINS(JFF,1,JSTR,N).EQ.0) GO TO 1 ISTA=1 GO TO 1 * END OF PROGRAM SECTIONS 26 ISTATE=1 ICMDON=1 NCOM=ICMFIN(0) GO TO 1 * STATE=3: ANALYZE THE 'CROSS REFERENCE' SECTION 30 IF(MJSINS(JKFS,15,JSTR,N).NE.0) GO TO 35 GO TO (31,32,33) ISTA 31 IF(MJSINS(JSYMB,6,JSTR,N).EQ.0) GO TO 1 ISTA=2 GO TO 1 32 IF(MJSINS(JMM,4,JSTR,N).EQ.0) GO TO 1 ISTA=3 GO TO 1 * CHECK FOR MLETTE IN THE FIRST POSITION 33 IF(MLETTE(MKCHAR(JSTR)).EQ.0) GO TO 25 J=JSTR M=N L=MIDENT(J,M,JIDN,8) L=MIKCHA(J) * CHECK THE CURRENT CHARACTER FOR BLANK OR TAB IF(L.EQ.32) GO TO 34 IF(L.NE.9) GO TO 25 34 L=MKBLAN(J,M) * CONVERT THE HEXADECIMAL REPRESENTATION TO NUMBER L=LHXNMB(J,M,IADR) IF(L.EQ.0) GO TO 25 * RELOCATABLE? IF(MLEQS(J,JMR,2).EQ.0) GO TO 25 * INSERT RECORD TO TABLE: CALL PUTS(IDN,IADR) GO TO 25 * END OF ROUTINES PROCESSING: 35 ISTATE=1 ISBDON=1 NSB=ISBFIN(0) GO TO 1 * STATE=4: ANALYZE THE 'SYMBOLS BY NAME' SECTION 40 IF(MJSINS(JKFS,15,JSTR,N).NE.0) GO TO 35 GO TO (31,32,433) ISTA 433 J=JSTR M=N * CHECK FOR MLETTE: 43 IF(MLETTE(MKCHAR(J)).EQ.0) GO TO 45 L=MIDENT(J,M,JIDN,8) L=MIKCHA(J) * CHECK FOR BLANK OR TAB IF(L.EQ.32) GO TO 44 IF(L.NE.9) GO TO 45 44 L=MKBLAN(J,M) * CONVERT HEX -> NUMBER L=LHXNMB(J,M,IADR) IF(L.EQ.0) GO TO 45 * RELOCATABLE? IF(MLEQS(J,JMR,2).EQ.0) GO TO 45 * INSERT RECORD TO TABLE CALL PUTS(IDN,IADR) GO TO 46 45 L=KSKPB(J,M) IF(M.EQ.0) GO TO 25 46 L=KSKPB(J,M) IF(M.EQ.0) GO TO 25 GO TO 43 * * EOF: 50 IF(ICMDON.EQ.0) NCOM=ICMFIN(0) IF(ISBDON.EQ.0) NSB=ISBFIN(0) * * END OF MAP PROCESSING: * 60 STR='CST --' J=MJSCHA(STR(8:8)) M=10 CALL CBIS(NCOM,J,M) L=18-M STR(L:60)=' COMMONS' J=J+10 M=10 CALL CBIS(NSB,J,M) L=L+20-M STR(L:60)=' ROUTINES' CALL TISTR(STR(1:L+8)) RETURN END