SUBROUTINE MAIN INTEGER N, I, FLAG, TYPE, X, JUNK INTEGER READF, WRITEF, ROPSCT LOGICAL*1 BUF(5000), NAME(20), Y EQUIVALENCE (X,Y) CALL QUERY(37Husage: objfix output.obj) N=READF(BUF, 5000, 1) 23000 IF (.NOT.(N .GE. 0))GOTO 23002 IF (.NOT.(N .GT. 0))GOTO 23003 IF (.NOT.(BUF(1) .EQ. 1))GOTO 23005 I=3 23007 IF (.NOT.(I .LT. N))GOTO 23009 FLAG = I + 4 TYPE = I + 5 IF (.NOT.(BUF(TYPE) .EQ. 5))GOTO 23010 CALL FMT(BUF(I), NAME) IF (.NOT.(ROPSCT(NAME, 0) .EQ. 1))GOTO 23012 X = 0 Y = BUF(FLAG) X = IOR(X, 16) BUF(FLAG) = Y 23012 CONTINUE CALL PUTLIN(NAME, 3) CALL PUTCH(32, 3) CALL PCHAR(BUF(FLAG), 3) CALL PUTCH(10, 3) 23010 CONTINUE 23008 I=I+8 GOTO 23007 23009 CONTINUE 23005 CONTINUE 23003 CONTINUE JUNK = WRITEF(BUF, N, 2) 23001 N=READF(BUF, 5000, 1) GOTO 23000 23002 CONTINUE RETURN END SUBROUTINE DOIT(I, ZERO, ONE, INT) INTEGER I, INT LOGICAL*1 ZERO(100), ONE(100) IF (.NOT.(MOD(I,2) .EQ. 0))GOTO 23014 CALL PUTLIN(ZERO, INT) GOTO 23015 23014 CONTINUE CALL PUTLIN(ONE, INT) 23015 CONTINUE I = I / 2 RETURN END SUBROUTINE FMT(BUF, STR) LOGICAL*1 STR(100), BUF(100) CALL R50ASC(6, BUF, STR) STR(7) = 0 CALL FOLD(STR) RETURN END SUBROUTINE PCHAR(N, INT) LOGICAL*1 N, X INTEGER I EQUIVALENCE (X, I) I = 0 X = N I = I / 4 CALL DOIT(I, 4HCON , 4HOVR , INT) I = I / 2 CALL DOIT(I, 3HRW , 3HRO , INT) CALL DOIT(I, 4HABS , 4HREL , INT) CALL DOIT(I, 4HLCL , 4HGBL , INT) CALL DOIT(I, 1HI, 1HD, INT) RETURN END INTEGER FUNCTION ROPSCT(NAME, F4PLUS) LOGICAL*1 NAME(100) INTEGER F4PLUS INTEGER EQUAL ROPSCT = 0 IF (.NOT.(F4PLUS .EQ. 1))GOTO 23016 IF (.NOT.(EQUAL(NAME, 6H$code1) .EQ. 1))GOTO 23018 ROPSCT = 1 GOTO 23019 23018 CONTINUE IF (.NOT.(EQUAL(NAME, 6H$pdata) .EQ. 1))GOTO 23020 ROPSCT = 1 23020 CONTINUE 23019 CONTINUE GOTO 23017 23016 CONTINUE IF (.NOT.(EQUAL(NAME, 6H$code ) .EQ. 1))GOTO 23022 ROPSCT = 1 GOTO 23023 23022 CONTINUE IF (.NOT.(EQUAL(NAME, 6H$datap) .EQ. 1))GOTO 23024 ROPSCT = 1 23024 CONTINUE 23023 CONTINUE 23017 CONTINUE RETURN END