IMPLICIT INTEGER*2(A-Z) LOGICAL FLAGA,FILL DIMENSION GRID(131,60),GRID1(7860),LINE1(131),CHAR(3),LINE(131), $NUM(5,5,10),ALPHA(7,9,26),DIG(12),LIM(12),MONTHS(12,9),YEAR(4), *DAYS(63),HM(40),WC(40),CHF(131) EQUIVALENCE (GRID(1),GRID1(1)) DATA LEAD,TRAIL,SAL,PDF,SMH,GRID,LINE,LINE1,CHAR,FLAGA,S7,S10,D2, *PAL/131,1,130,-50,1,7860*' ',131*' ',131*' ','I','-',' ',.FALSE., *7,10,1,-50/ M2D(A,B)=A-(A/B)*B CALL ASSIGN(3,'CALEND.DAT') CALL FDBSET(3,'READONLY') CALL ASGNIT(4,'$OUTPUT FILE:',13) WRITE(4,256) READ(3,100)MONTH,YEAR,START,NO READ(3,101)NUM READ(3,102)ALPHA READ(3,103) DAYS READ(3,104)(DIG(I),LIM(I),(MONTHS(I,J),J=1,9),I=1,12) DO 110 I=20,60,8 DO 110 J=1,131 110 GRID(J,I)=CHAR(2) DO 112 I=13,59 DO 112 J=21,112,18 112 GRID(J,I)=CHAR(1) K=0 DO 114 I=8,117,18 DO 113 J=1,9 113 GRID(I+J-1,11)=DAYS(9*K+J) 114 K=K+1 116 DO 120 I=1,5 DO 120 J=1,5 GRID(I,J+3)=NUM(J,I,YEAR(1)+1) GRID(I+6,J+1)=NUM(J,I,YEAR(2)+1) GRID(I+120,J+1)=NUM(J,I,YEAR(3)+1) 120 GRID(I+126,J+3)=NUM(J,I,YEAR(4)+1) 121 DO 900 MTH=SMH,NO READ(3,800,END=640)FILL,CHARF IF(.NOT.FILL)GOTO506 DO 500 I=1,131 500 LINE1(I)=CHAR(3) 506 IF(FILL.AND.FLAGA.OR..NOT.FILL.AND..NOT.FLAGA)GOTO520 FLAGA=FILL DO 510 I=1,131 CHF(I)=CHARF 510 LINE(I)=CHARF LEAD=132 TRAIL=1 520 DO 630 A=1,120 HMM=20 522 READ(3,801) C,(HM(I),I=1,20),(WC(I),I=1,20),CONT IF(CONT.EQ.CHAR(3))GOTO528 READ(3,801) C,(HM(I),I=21,40),(WC(I),I=21,40) HMM=40 528 IF(HM(2).EQ.0)GOTO640 IF(LEAD.GE.HM(1))GOTO540 J=HM(1) DO 530 I=LEAD,J IF(FILL)LINE1(I)=CHAR(3) 530 LINE(I)=CHARF 540 LEAD=HM(1) ST=HM(1)+1 DO 560 N=2,HMM IF(HM(N).EQ.0)GO TO 570 SP=ST+HM(N)-1 DO 550 I=ST,SP 550 LINE(I)=WC(N) 560 ST=SP+1 570 IF(TRAIL.LE.ST)GOTO580 DO 576 I=ST,TRAIL IF(FILL)LINE1(I)=CHAR(3) 576 LINE(I)=CHARF 580 TRAIL=ST IF(.NOT.FLAGA)GOTO587 DO 585 Z=LEAD,TRAIL IF(LINE(Z).NE.CHARF.AND.LINE(Z).NE.CHAR(3))GOTO581 LINE1(Z)=CHAR(3) GOTO585 581 LINE1(Z)=CHARF 585 CONTINUE 587 IF(A.NE.1)GO TO 589 WRITE(4,256) C=C-1 IF(FILL)WRITE(4,802)CHF 589 IF(C)590,620,600 590 WRITE(4,802) LINE GOTO626 600 DO 610 I=1,C IF(FLAGA)GOTO615 WRITE(4,803) GOTO610 615 WRITE(4,804)CHF 610 CONTINUE 620 WRITE(4,804)LINE 626 IF(FILL)WRITE(4,802)LINE1 630 CONTINUE 640 SA=65-(9*DIG(MONTH)-2)/2 SO=SA+9*DIG(MONTH)-1 IF(SA.LE.SAL)GOTO129 DO127 I=1,7 DO 127 J=SAL,SA 127 GRID(J,I)=CHAR(3) DO 128 I=1,7 DO 128 J=SO,SOL 128 GRID(J,I)=CHAR(3) 129 DO 130 J=SA,SO,9 L=MONTHS(MONTH,1+(J-SA)/9) DO 130 I=1,7 DO 130 K=1,9 130 GRID(J+K-1,I)=ALPHA(I,K,L) SAL=SA SOL=SO IF(PDF.EQ.0)D2=LIM(MONTH)-LIM(MONTH-1) D1=LIM(MONTH) DO 160 D=D2,D1 PD=PDF+D PO=START+D-1 P=1708+1048*(PO/7)+18*M2D(PO,S7) IF(PD/10.EQ.D/10.AND.PD.LE.28.OR.PD.LT.10.AND.PDF.GT.0)GOTO150 IF(D.LT.10)GOTO145 DO 140 I=1,5 DO 140 J=1,5 J1=P+I+(J-1)*131 140 GRID1(J1)=NUM(J,I,D/10+1) GO TO150 145 DO 148 I=1,5 DO 148 J=1,5 J1=P+I+(J-1)*131 148 GRID1(J1)=CHAR(3) 150 P=P+7 DO 160 I=1,5 DO 160 J=1,5 J1=P+I+(J-1)*131 160 GRID1(J1)=NUM(J,I,M2D(D,S10)+1) IF(PDF)200,230,170 170 PDD=START-PDF+1 FDD=START DO 180 R=PDD,FDD P=1715+18*(R-1) DO 180 I=1,5 DO 180 J=1,5 J1=P+I+(J-1)*131 180 GRID1(J1)=CHAR(3) 230 D2=1 200 PO1=PO+1 PDF=M2D(PO1,S7)-START START=PDF+START IF(PAL.LE.PO)GOTO212 DO 210 R=PO1,PAL P=1708+1048*(R/7)+18*M2D(R,S7) DO 210 K=1,12 DO 210 J=1,5 J1=P+K+(J-1)*131 210 GRID1(J1)=CHAR(3) 212 PAL=PO 250 MONTH=MONTH+1 WRITE(4,255)GRID1 IF(MONTH.LT.13)GOTO900 MONTH=1 DO 260 I=1,4 Y=5-I YEAR(Y)=YEAR(Y)+1 IF(YEAR(Y).LT.10)GOTO261 260 YEAR(Y)=0 261 SMS=MTH+1 GO TO 262 900 CONTINUE STOP 262 SMH=SMS GO TO 116 100 FORMAT(I5,1X,4I1,2I5) 101 FORMAT(4X,25A1) 102 FORMAT(4X,63A1) 103 FORMAT(4X,63A1) 104 FORMAT(4X,11I4) 255 FORMAT('1',131A1/(1X,131A1)) 256 FORMAT('1') 800 FORMAT(T10,L1,T20,A1) 801 FORMAT(2X,21I2,T50,20A1,T80,A1) 802 FORMAT('+',131A1) 803 FORMAT(' ') 804 FORMAT(' ',131A1) END SUBROUTINE ASGNIT(IOU,PROMPT,LENP) LOGICAL*1 NAME(40),PROMPT(40) C WRITE(5,1)(PROMPT(I),I=1,LENP) 1 FORMAT(40A1) READ(5,2)LEN,(NAME(I),I=1,LEN) 2 FORMAT(Q,40A1) CALL ASSIGN(IOU,NAME,LEN) RETURN END