home *** CD-ROM | disk | FTP | other *** search
-
- C **********************************************************************
- C * *
- C * PRINTS CALENDAR, ONE MONTH PER PAGE WITH PICTURES OPTIONAL. *
- C * *
- C * DIVIDED IN 4(I6) FORMAT ON A CARD IMMEDIATELY FOLLOWING *
- C * CARD 98 OF DECR. *
- C * *
- C * IF GRID LINES ARE DESIRED, A 1 MUST APPEAR IN COLUMN 30 OF *
- C * ABOVE CARD, A BLANK OR ZERO WILL SUPPRESS GRID LINES. *
- C * *
- C * ALL PICTURE DATA DECKS MUST BE TERMINATED WITH CODE -2. *
- C * CONSECUTIVE -2'S WILL RESULT IN NO PICTURE BEING PRINTED *
- C * FOR THAT MONTH. *
- C * *
- C * PICTURE FORMAT CODES -- *
- C * -1 END OF LINE *
- C * -2 END OF PICTURE *
- C * -3 LIST CARDS, ONE PER LINE, FORMAT 13A6 *
- C * -4 LIST CARDS, TWO PER LINE, FORMAT 11A6/11A6 *
- C * -5 LIST CARDS, TWO PER LINE, FORMAT 12A6/10A6 *
- C * *
- C **********************************************************************
-
- PROGRAM SNOOPY
- IMPLICIT REAL*8 (A-H,O-Z)
- DIMENSION AMONTH (12,7,13), ANAM(22), ANUM(2,10,5),
- 1 NODS(12), CAL(60,22)
- COMMON ISET
-
- C GIVE THE FILES NAMES!!
- CALL OPEN(6,'CALENDARPRN',0)
-
- READ (7,1) (((AMONTH(I,J,K),K=1,13),J=1,7),I=1,12)
- READ (7,2) (ANAM(I),I=1,22)
- READ (7,3) (((ANUM(I,J,K),J=1,10),K=1,5),I=1,2)
- READ (7,4) (NODS(I),I=1,12)
- READ (7,1) BLANK,ONE,ALIN1,ALIN2,ALIN3,ALIN4
- READ (7,4) MF,IYR,MTHLST,IYRLST,LNSW
- ISET=25.
- DO 10 I=1,60
- DO 10 J=1,22
- 10 CAL(I,J)=BLANK
- CAL(1,1)=ONE
- DO 20 J=1,22
- 20 CAL(11,J)=ANAM(J)
- IF (LNSW) 122,142,122
- 122 DO 125 I=20,60,8
- DO 125 J=1,22
- 125 CAL(I,J)=ALIN2
- DO 140 J=4,19,3
- I=13.
- 127 DO 130 L=1,7
- CAL(I,J)=ALIN1
- 130 I=I+1
- IF (I-55) 135,135,140
- 135 CAL(I,J)=ALIN3
- I=I+1
- GO TO 127
- 140 CONTINUE
- DO 141 I=20,60,8
- 141 CAL(I,1)=ALIN4
- 142 IDOW=(IYR-1751)+(IYR-1753)/4-(IYR-1701)/100+(IYR-1601)/400
- IDOW=IDOW-7*((IDOW-1)/7)
- 55 IF (IYR-IYRLST) 60,65,100
- 60 ML=12.
- GO TO 70
- 65 ML=MTHLST
- 70 IY1=IYR/1000
- NUMB=IYR-1000*IY1
- IY2=NUMB/100
- NUMB=NUMB-100*IY2
- IY3=NUMB/10
- NUMB=NUMB-10*IY3
- IY4=NUMB
- DO 72 J=1,5
- CAL(J+3,1)=ANUM(2,IY1+1,J)
- CAL(J+1,2)=ANUM(2,IY2+1,J)
- CAL(J+1,21)=ANUM(2,IY3+1,J)
- 72 CAL(J+3,22)=ANUM(2,IY4+1,J)
- LPYRSW=0
- IF (IYR-4*(IYR/4)) 90,75,90
- 75 IF (IYR-100*(IYR/100)) 85,80,85
- 80 IF (IYR-400*(IYR/400)) 90,85,90
- 85 LPYRSW=1
- 90 NODS(2)=NODS(2)+LPYRSW
- IF (MF-1) 100,110,95
- 95 MF=MF-1
- DO 105 MONTH=1,MF
- 105 IDOW=IDOW+NODS(MONTH)
- IDOW=IDOW-7*((IDOW-1)/7)
- MF=MF+1
- 110 DO 51 MONTH=MF,ML
- LSTDAY=NODS(MONTH)
- DO 115 I=1,7
- DO 115 JM=1,13
- J=JM+4
- 115 CAL(I,J)=AMONTH(MONTH,I,JM)
- IF (IDOW-1) 160,160,120
- 120 ID=IDOW-1
- J=2
- DO 155 K=1,ID
- DO 150 I=14,18
- CAL(I,J)= BLANK
- 150 CAL(I,J+1)= BLANK
- J=J+3
- 155 CONTINUE
- 160 IDAY=1
- II=14
- 25 J=3*IDOW-1
- N=IDAY/10+1
- I=II
- DO 30 K=1,5
- CAL(I,J)=ANUM(1,N,K)
- 30 I=I+1
- N=IDAY-10*N+11
- J=J+1
- I=II
- DO 35 K=1,5
- CAL(I,J)=ANUM(2,N,K)
- 35 I=I+1
- IDOW=IDOW+1
- IF (IDOW-7) 45,45,40
- 40 IDOW=1
- II=II+8
- 45 IDAY=IDAY+1
- IF (IDAY-LSTDAY) 25,25,50
- 50 ID=IDOW
- 205 I=II
- J=3*ID-1
- DO 210 K=1,5
- CAL(I,J)= BLANK
- CAL(I,J+1)= BLANK
- 210 I=I+1
- IF (ID-7) 215,220,220
- 215 ID=ID+1
- GO TO 205
- 220 IF (II-54) 225,230,230
- 225 II=54
- ID=1
- GO TO 205
- 230 CALL PICTUR
- C PRINT PICTURE!!! TO AN OUTPUT FILE !!!!!
- WRITE (6,5) ((CAL(I,J),J=1,22),I=1,60)
- 51 CONTINUE
- IF (IYR-IYRLST) 235,100,100
- 235 NODS(2)=NODS(2)-LPYRSW
- IYR=IYR+1
- MF=1
- GO TO 55
- 100 STOP
- 1 FORMAT (13A6)
- 2 FORMAT (11A6)
- 3 FORMAT (10A6)
- 4 FORMAT (12I6)
- 5 FORMAT (22A6)
- END
- C
- C
- C THIS IS THE SUBROUTINE SECTION
- C
- C
- SUBROUTINE PICTUR
- DIMENSION KRD1(25),CRD2(25),ALIN(132)
- COMMON I
- DATA PLUS,AMPSAN/1H+,1H+/
- 11 N=0
- 10 I=I+1
- IF (I-25) 14,14,13
- 13 I=1
- READ (7,1,END=15) (KRD1(K),CRD2(K),K=1,25)
- 14 M=N+1
- IF (KRD1(I)) 15,10,16
- 15 IF (KRD1(I)+2) 18,35,17
- 18 IF (KRD1(I)+4) 55,44,33
- 17 N=132.
- GO TO 20
- 16 N=N+KRD1(I)
- 20 DO 21 J=M,N
- 21 ALIN(J)=CRD2(I)
- IF (N-132) 10,31,31
- 31 IF (ALIN(1).EQ.AMPSAN) ALIN(1)=PLUS
- WRITE (6,2) (ALIN(J),J=1,132)
- GO TO 11
- 33 READ (7,5) (ALIN(J),J=1,13),ICHK
- WRITE (6,7) (ALIN(J),J=1,13)
- IF (ICHK+2) 77,35,33
- 44 READ (7,3) (ALIN(J),J=1,22),ICHK
- WRITE (6,4) (ALIN(J),J=1,22)
- IF (ICHK+2) 77,35,44
- 55 READ (7,6) (ALIN(J),J=1,22),ICHK
- WRITE (6,4) (ALIN(J),J=1,22)
- IF (ICHK+2) 77,35,55
- 77 I=25
- GO TO 11
- 35 RETURN
- 1 FORMAT (25(I2,A1))
- 2 FORMAT (132A1)
- 3 FORMAT (11A6/11A6,I2)
- 4 FORMAT (22A6)
- 5 FORMAT (13A6,I2)
- 6 FORMAT (12A6/10A6,I2)
- 7 FORMAT (30X,13A6)
- END
-