SUBROUTINE MAIN LOGICAL*1 BUF(402) INTEGER GETARG, OPEN, CTOI INTEGER I, INT, WIDTH, J, N, FLAG LOGICAL*1 ST001Z(30) DATA FLAG /0/ DATA WIDTH /80/ DATA ST001Z(1)/117/,ST001Z(2)/115/,ST001Z(3)/97/,ST001Z(4)/103/,ST *001Z(5)/101/,ST001Z(6)/58/,ST001Z(7)/32/,ST001Z(8)/32/,ST001Z(9)/1 *17/,ST001Z(10)/110/,ST001Z(11)/114/,ST001Z(12)/111/,ST001Z(13)/116 */,ST001Z(14)/32/,ST001Z(15)/91/,ST001Z(16)/45/,ST001Z(17)/110/,ST0 *01Z(18)/93/,ST001Z(19)/32/,ST001Z(20)/91/,ST001Z(21)/102/,ST001Z(2 *2)/105/,ST001Z(23)/108/,ST001Z(24)/101/,ST001Z(25)/93/,ST001Z(26)/ *32/,ST001Z(27)/46/,ST001Z(28)/46/,ST001Z(29)/46/,ST001Z(30)/0/ CALL QUERY(ST001Z) I=1 23000 IF (.NOT.(GETARG(I,BUF,402).NE.-1))GOTO 23002 IF (.NOT.(BUF(1) .EQ. 45 .AND. BUF(2) .NE. 0))GOTO 23003 J = 2 N = CTOI(BUF,J) IF (.NOT.(N .GT. 0))GOTO 23005 FLAG = 1 WIDTH = N 23005 CONTINUE GOTO 23001 23003 CONTINUE IF (.NOT.(BUF(1) .EQ. 45))GOTO 23007 INT = 1 GOTO 23008 23007 CONTINUE INT = OPEN(BUF, 1) IF (.NOT.(INT .EQ. -3))GOTO 23009 CALL CANT(BUF) 23009 CONTINUE 23008 CONTINUE 23004 CONTINUE CALL NROT (INT, WIDTH) IF (.NOT.(INT .NE. 1))GOTO 23011 CALL CLOSE(INT) 23011 CONTINUE 23001 I=I+1 GOTO 23000 23002 CONTINUE IF (.NOT.(I.EQ.1 .OR. (I.EQ.2 .AND. FLAG .EQ. 1)))GOTO 23013 CALL NROT (1, WIDTH) 23013 CONTINUE RETURN END SUBROUTINE NROT(INT, WIDTH) LOGICAL*1 INBUF(402), OUTBUF(402) INTEGER GETLIN, INDEXC INTEGER INT, I, J, WIDTH, MIDDLE MIDDLE = MAX0(WIDTH/2, 1) 23015 IF (.NOT.(GETLIN(INBUF, INT) .NE. -1))GOTO 23016 I=1 23017 IF (.NOT.(I.LT.WIDTH))GOTO 23019 OUTBUF(I) = 32 23018 I=I+1 GOTO 23017 23019 CONTINUE J = MIDDLE I=1 23020 IF (.NOT.(INBUF(I).NE.36 .AND. INBUF(I).NE.10))GOTO 23022 J = J + 1 IF (.NOT.(I.GT.1 .AND. INBUF(I-1) .EQ. 32))GOTO 23023 IF (.NOT.(NEXTJ(+1,INBUF,I,J) .GE. WIDTH - 1))GOTO 23025 J = 1 23025 CONTINUE 23023 CONTINUE IF (.NOT.(J .GE. WIDTH - 1))GOTO 23027 J = 1 23027 CONTINUE OUTBUF(J) = INBUF(I) 23021 I=I+1 GOTO 23020 23022 CONTINUE IF (.NOT.(INBUF(I) .EQ. 36))GOTO 23029 J = MIDDLE I=INDEXC(INBUF,10)-1 23031 IF (.NOT.(I.GT.0))GOTO 23033 IF (.NOT.(INBUF(I) .EQ. 36))GOTO 23034 GOTO 23033 23034 CONTINUE J = J -1 IF (.NOT.(INBUF(I+1) .EQ. 32))GOTO 23036 IF (.NOT.(NEXTJ(-1,INBUF,I,J) .LE. 0))GOTO 23038 J = WIDTH - 2 23038 CONTINUE 23036 CONTINUE IF (.NOT.(J .LE. 0))GOTO 23040 J = WIDTH - 2 23040 CONTINUE OUTBUF(J) = INBUF(I) 23032 I=I-1 GOTO 23031 23033 CONTINUE 23029 CONTINUE I=WIDTH-2 23042 IF (.NOT.(I .GT. 0))GOTO 23044 IF (.NOT.(OUTBUF(I) .NE. 32))GOTO 23045 GOTO 23044 23045 CONTINUE 23043 I=I-1 GOTO 23042 23044 CONTINUE OUTBUF(I+1) = 10 OUTBUF(I+2) = 0 CALL PUTLIN(OUTBUF, 2) GOTO 23015 23016 CONTINUE RETURN END INTEGER FUNCTION NEXTJ(INCMNT,BUF,I,J) LOGICAL*1 BUF(100) INTEGER INCMNT, I, J, K NEXTJ = J K=I 23047 IF (.NOT.(K.GT.0))GOTO 23049 IF (.NOT.(BUF(K) .EQ. 32 .OR. BUF(K) .EQ. 36 .OR. BUF(K) .EQ. 10)) *GOTO 23050 GOTO 23049 23050 CONTINUE NEXTJ = NEXTJ + INCMNT 23048 K = K + INCMNT GOTO 23047 23049 CONTINUE RETURN END