1 C -+-+-+-+-+
\ e H A E P R P . F T
\ e -+-+-+-+-+
15 INTEGER I,J,K,DA(3),BAND,LIMIT @ DO LOOP COUNTERS & LIMITS
21 C HERE WE TEST FOR CORRECT FREQUENCY LIMITS OF THE EEG BAND (1-5)
24 IF (FREQU(BAND,LIMIT).LE.SAMRAT/2) GOTO 12
25 WRITE (TTO,101) BAND,SAMRAT
26 FREQU(BAND,LIMIT)=COND(LIMIT.EQ.1,SAMRAT/2.-.1,SAMRAT/2.)
29 IF (OPTION.NE.12 .OR. ENDS.LT.SPAN) CALL ASKHIM(4) @ CO* DOESN'T ASK SCILLY QUESTIONS IF THERE ARE CORRECT PARAMETERS
31 C TEST FOR VALID INPUT PARAMETERS
33 IF BREAK(11) RETURN @ USER GETS RID OF PROGRAM
34 INCR=SAMRAT*SPAN @ NUMBER OF POINTS FOR EACH FFT --> INCR
35 IF (INCR.LE.2048) GOTO 22 @ MORE THAN 2048 POINTS TO SCAN?
36 WRITE (TTO,6) SPAN @ TOO LESS MEMORY
39 IF (SPAN.LE.ENDS) GOTO 23 @ LESS THAN ONE PASS?
40 WRITE (TTO,8) SPAN,ENDS
43 IF (ENDS.LE.SAMCNT/SAMRAT) GOTO 24 @ IF THE END DOES NOT EXCEED THE SAMPLE COUNT THEN WE GO 24 ELSE
44 I=SAMCNT/SAMRAT @ WE COMPUTE THE SAMPLING TIME IN SECONDS
45 WRITE (TTO,2) ENDS,I @ IN ORDER TO PRINT AN DIAGNOSTIC MSG
46 ENDS=SAMCNT/SAMRAT @ AND THE WE BUMP THE SAMPLING TIME INTO ENDS
48 EXPON=LOG2(INCR) @ TEST FOR POWER OF 2
49 IF (EXPON.GT.0) GOTO 20 @ IF INCR IS A POWER OF TWO THEN GOTO 20
50 WRITE (TTO,3) SAMRAT,SPAN @ NO POWER OF TWO
51 GOTO 10 @ READ NEXT VALUE
52 20 TEMP=AMOD(FLOAT(ENDS-BEGIN),FLOAT(SPAN)) @ COMPUTE SECONDS TO TRANSFORM
53 IF (TEMP.LT.0.1) GOTO 30 @ ARE THERE SOME SECONDS LEFT?
54 TEMP=AMOD(FLOAT(SAMCNT)/FLOAT(SAMRAT),FLOAT(SPAN))
55 WRITE (TTO,4) TEMP @ TELL THE USER THERE IS SOMETHING REMAINING
56 30 ENDS=BEGIN+(ENDS-BEGIN)/SPAN*SPAN @ COMPUTE THE END OF THE SPECTRUM TO SCAN
58 I=NCOND(OVRLAP,2*(ENDS-BEGIN)/SPAN,(ENDS-BEGIN)/SPAN) @ IF THE INTERMEDIATE RESULTS FIT ONTO UNIT 5 THEN
59 I=I/4 @ FOUR DATA WORDS PER RECORD
60 I=I+STSCAN @ COMPUTE NUMBER OF RECORDS NESESCARY
61 IF (MAXBL5.GE.I) GOTO 40 @ RETURN ELSE PRINT AN ERROR MSG
63 OPTION=0 @ PREVENT LOOPING IF CO*
67 40 FREQU(1,2)=AMIN1(SAMRAT/2.,FREQU(1,2)) @ HIGHEST FREQUENCY OF THE INPUT SIGNAL --> UPPER LIMIT OF THE FIRST BAND
69 CALL ADATE(DA) @ ASK FRTS FOR THE CURRENT DATE AND INSERT IT INTO THE HEADER
70 WRITE (3,1) SETNUM,CHANEL,LABEL,DA
71 WRITE (3,100) ((FREQU(I,J),J=1,2),I=1,5)
75 1 FORMAT ('1SATZ:',I3,' KANAL',I2,' :',10A6,2(A2,1H/),A2)
76 100 FORMAT (1H0,15X,5(F6.1,' -',F6.1,5X))
77 101 FORMAT (' FUER EEG BAND',I2,' REICHT DIE MESSRATE VON',I4,
78 * ' HZ NICHT AUS. BANDGRENZE VERRINGERT.')
79 2 FORMAT (' RECHNUNG SOLL MIT',I5,' SEC UEBER DAS DATENENDE',
80 * I5,' SEC HINAUSGEHEN.')
81 3 FORMAT (' DAS PRODUKT AUS MESSRATE',I3,' [HZ] UND SPANNE',
82 * I3,' [SEK] IST KEINE ZWEIERPOTENZ.')
83 4 FORMAT (' AM ENDE DES SPEKTRUMS BLEIBEN',F4.1,' SEKUNDEN',
84 * ' UNBERUECKSICHTIGT.')
85 6 FORMAT (' MEHR ALS 2048 PUNKTE FUER EINE FFT:',I7)
86 8 FORMAT (' SPANNE MIT',I3,' SEK. GROESSER ALS DIE MESSZEIT',I3
88 9 FORMAT (' FILE 5 FUER DIE ZWISCHENWERTE ZU KLEIN:',I5,
89 * ' SPANNE VERGROESSERN.')