INTEGER INF,STATE(4) INTEGER GFNARG,OPEN,DOFILE INTEGER PATH(128) INTEGER AAAAA0 INTEGER AAAAB0 STATE(1)=1 10000 AAAAA0=GFNARG(PATH,STATE) GOTO 10001 10002 INF=OPEN(PATH,1) IF((INF.NE.-3))GOTO 10003 CALL PRINT(-15,'*s: can''t open*n.',PATH) GOTO 10004 10003 IF((DOFILE(INF).NE.-3))GOTO 10005 CALL PRINT(-15,'*s: bad object file*n.',PATH) 10005 CALL CLOSE(INF) 10004 GOTO 10006 10007 CALL PRINT(-15,'*s: can''t open*n.',PATH) GOTO 10006 10008 GOTO 10009 10001 AAAAB0=AAAAA0+4 GOTO(10007,10002,10008),AAAAB0 10006 CONTINUE GOTO 10000 10009 CALL SWT END INTEGER FUNCTION DOFILE(FD) INTEGER FD INTEGER COUNT,BT,BS,INBUF(256) INTEGER RDBIN COUNT=RDBIN(FD,INBUF,256) GOTO 10012 10010 COUNT=RDBIN(FD,INBUF,256) 10012 IF((COUNT.EQ.-1))GOTO 10011 IF((COUNT.EQ.0))GOTO 10011 BT=RS(INBUF(1),12) BS=RT(INBUF(1),8) IF((COUNT.LT.0))GOTO 10014 IF((COUNT.NE.BS))GOTO 10014 IF((BT.EQ.:12))GOTO 10015 IF((BT.EQ.:11))GOTO 10015 IF((BT.EQ.:13))GOTO 10015 GOTO 10014 10015 GOTO 10013 10014 DOFILE=-3 RETURN 10013 CALL INTER0(INBUF,BS) GOTO 10010 10011 DOFILE=-2 RETURN END SUBROUTINE INTER0(BUF,COUNT) INTEGER BUF(1),COUNT INTEGER GT,GS,I I=2 GOTO 10018 10016 I=I+(GS+1) 10018 IF((I.GT.COUNT))GOTO 10017 GT=RS(BUF(I),8) GS=RT(BUF(I),8) CALL INTES0(GT,BUF(I+1),GS) GOTO 10016 10017 RETURN END SUBROUTINE INTES0(GT,BUF,GS) INTEGER GT,BUF(1),GS INTEGER STR(102),NAME(102) SAVE NAME INTEGER AAAAC0 INTEGER AAAAD0(6) INTEGER AAAAE0 DATA AAAAD0/164,205,193,201,206,0/ AAAAC0=GT GOTO 10019 10020 IF((GT.NE.43))GOTO 10021 CALL PTOC(BUF,160,NAME,GS*2+1) GOTO 10022 10021 CALL PTOC(BUF(2),160,NAME,GS*2-1) 10022 CALL MAPSTR(NAME,1) GOTO 10023 10024 CALL PTOC(BUF(2),160,STR,(GS-1)*2+1) CALL MAPSTR(STR,1) CALL PRINT(-11,'*s *s*n.',NAME,STR) GOTO 10023 10025 CALL PTOC(BUF,160,STR,GS*2+1) CALL MAPSTR(STR,1) CALL PRINT(-11,'*s *s*n.',NAME,STR) GOTO 10023 10026 CALL CTOC(AAAAD0,NAME,102) GOTO 10023 10019 AAAAE0=AAAAC0-1 GOTO(10020,10020,10027,10027,10027,10027,10027,10027,10027,10027,1 *0027,10024),AAAAE0 AAAAE0=AAAAC0-29 GOTO(10026,10020,10020,10027,10027,10025,10027,10027,10027,10027,1 *0027,10027,10027,10020),AAAAE0 10027 CONTINUE 10023 RETURN END INTEGER FUNCTION RDBIN(FD,BUF,COUNT) INTEGER FD,BUF(1),COUNT INTEGER CT INTEGER * 4 POS INTEGER READF,SEEKF RDBIN=-1 IF((READF(CT,1,FD).EQ.1))GOTO 10028 RETURN 10028 IF((CT.LE.COUNT))GOTO 10029 POS=CT-COUNT CALL PRINT(-15,'block size (*i) exceeds buffer space*n.',CT) CT=COUNT GOTO 10030 10029 POS=0 10030 IF((READF(BUF,CT,FD).EQ.CT))GOTO 10031 RETURN 10031 IF((POS.EQ.0))GOTO 10032 IF((SEEKF(POS,FD,1).EQ.-2))GOTO 10032 RETURN 10032 RDBIN=CT RETURN END C ---- Long Name Map ---- C interpretgroup intes0 C interpretblock inter0