C C TECHNICAL WRITTING PROGRAM C C MIKE BOORSTEIN C C DATE 13-SEP-77 C C IMPLICIT INTEGER(A-Z) BYTE COMMA,TITLE(80),PERIOD,STRING BYTE ARROW LOGICAL*1 LSTIM,NOTIM DIMENSION FILNAM(20) COMMON/NMRECS/MAX(3) COMMON/NUMBER/NUM(4) COMMON/ULTIM/ULTIM COMMON/STRING/STRING(132),POINT,EPOINT DATA COMMA,PERIOD/',','.'/ DATA ARROW/'^'/ C C BEGIN EXECUTABLE CODE C CALL RANDOM(0,0,TEMP) CALL SETUP TYPE 100 100 FORMAT(/,' TEK V3.0',/) TYPE 103 103 FORMAT(' OUTPUT FILE SPEC>',$) ACCEPT 104,FILNAM 104 FORMAT(20A2) CALL ASSIGN(4,FILNAM) CALL FDBSET(4,'NEW') 10 TYPE 110 110 FORMAT(' TITLE> ',$) ACCEPT 120,EPOINT,TITLE 120 FORMAT(Q,80A1) C C WRITE OUT THE HEADER C WRITE(4,150)(TITLE(I),I=1,EPOINT) 150 FORMAT('.CENTER ;',80A1) WRITE(4,200)(TITLE(I),I=1,EPOINT) 200 FORMAT('.TITLE ',80A1) WRITE(4,210) 210 FORMAT('.SKIP 10') TYPE 130 130 FORMAT(' HOW MANY PARAGRAPHS> ',$) ACCEPT 140,PARAG 140 FORMAT(I3) C C SET UP LIST AND NOTE VAR AND ULTIM C CALL RANDOM(1,25,ULTIM) CALL RANDOM(2,10,LIST) 15 CALL RANDOM(5,14,NOTE) IF(LIST.EQ.NOTE)GOTO 15 LSTIM=.FALSE. NOTIM=.FALSE. C C NOW START THE FILE C DO 999 J=1,PARAG C C SEE IF LIST OR NOTE C LIST=LIST-1 NOTE=NOTE-1 IF(LIST.EQ.0)LSTIM=.TRUE. IF(NOTE.EQ.0)NOTIM=.TRUE. IF(LSTIM)CALL RANDOM(2,10,LIST) IF(NOTIM)CALL RANDOM(5,14,NOTE) IF(LSTIM.AND.NOTIM)NOTIM=.FALSE. C C START NEW PARAGRAPH C WRITE(4,250) 250 FORMAT('.P') CALL RANDOM(3,6,SENT) CALL RANDOM(2,SENT,TEST) DO 888 K=1,SENT CALL GETNUM IF(J.EQ.PARAG.AND.K.EQ.1)GOTO 25 IF(K.EQ.1)GOTO 30 C C SEE IF LIST OR NOTE C IF(LSTIM.OR.NOTIM)GOTO 20 GOTO 28 20 IF(TEST.NE.K)GOTO 28 IF(LSTIM)CALL PLIST IF(NOTIM)CALL PNOTE LSTIM=.FALSE. NOTIM=.FALSE. GOTO 999 C 25 WRITE(4,300) 300 FORMAT('In conclusion, I would like to state that ') GOTO 30 C C 28 CALL GETREC(3,NUM(3)) EPOINT=EPOINT+1 STRING(EPOINT)=COMMA CALL OUTPUT 30 CALL GETREC(1,NUM(1)) C C NOW SEE IF THE FIRST WORD HAS BEEN UNDERLINED C WHCHAR=1 IF(STRING(1).EQ.ARROW)WHCHAR=3 IF(K.EQ.1.AND.PARAG.NE.J)STRING(WHCHAR)=STRING(WHCHAR).AND."337 CALL OUTPUT CALL GETREC(2,NUM(2)) CALL OUTPUT CALL GETREC(1,NUM(4)) EPOINT=EPOINT+1 STRING(EPOINT)=PERIOD CALL OUTPUT 888 CONTINUE 999 CONTINUE DO 40 J=1,4 40 CALL CLOSE(J) END