Você está na página 1de 14

PROGRAM PMT

$CHAREQU
$BINARY
$SEGMENT PMT_PROG
* (C) COPYRIGHT: Kevin G. Rhoads & High Voltage Research Lab (MIT) - 1983,86.
CHARACTER PROGNM*18,MAINLN*54,DATTIM*28,CRLF*2
CHARACTER FILNAM*20,ANSWER*4,DATE*10,TITLE(3)*77,LABEL*77
REAL*4 CHGVLT,TINCR,RNUM,YZERO,YMULT,VGND,TTRIG,VTRIG
INTEGER*4 SCRN0,CNSL0,KPD,PR,BUSA,BUSB,BUSC,BUSD,FILE,GR
INTEGER*4 GTYR,GTMO,GTDA,GTHR,GTMIN,GTSEC,GTFR,VOLTN,MOD,GETINT
INTEGER*4 ERROR,RECLEN,FREC,ASCOPN,ZERO,ONE,TWO,WHICH
INTEGER*2 WFM0DX,WFM1DX,TENCPI,SXTNCP,PCOLOR,ACOLOR
LOGICAL*2 CONFRM,TEK468,TK7854,TK7D20,ISTEST,PAUSES,DUMPIT,ERRORS(4)
LOGICAL*2 DOPR,DODISK,DOPLOT,VSTIME,LOGLOG,APRTSC
LOGICAL*1 DISK,END,PARAM,FUBAR
COMMON /NAMEPR/PROGNM,MAINLN,/TST/ISTEST,/PAWS/PAUSES,/DUMP/DUMPIT
COMMON /UNITS/SCRN0,CNSL0,KPD,PR,BUSA,BUSB,BUSC,BUSD,FILE,GR,/ERRRPT/ERRORS
COMMON /SCTYPE/TEK468,TK7854,TK7D20,/TIMDAT/DATTIM,/NUMBER/ZERO,ONE,TWO
COMMON /FILES/FILNAM,/ASCGAR/DATE,TITLE,LABEL,/CARLF/CRLF
COMMON /TIMES/GTYR,GTMO,GTDA,GTHR,GTMIN,GTSEC,GTFR
COMMON /GARBAG/ERROR,DISK,END,PARAM,FUBAR,WFM0DX,WFM1DX,CHGVLT,TINCR,
1FREC,RECLEN,TENCPI,SXTNCP
COMMON /FOO5/VOLTN,RNUM,YZERO,YMULT,VGND,TTRIG,VTRIG
COMMON /COLORS/PCOLOR,ACOLOR,/CNFRM/CONFRM
COMMON /PMTOUT/DOPR,DODISK,DOPLOT,VSTIME,LOGLOG,APRTSC,IDRIVE
SAVE /GARBAG/,/UNITS/,/FILES/,/ASCGAR/,/TIMES/,/CARLF/,/FOO5/
SAVE /NAMEPR/,/TIMDAT/,/SCTYPE/,/NUMBER/,/TST/,/PAWS/,/DUMP/,/ERRRPT/
SAVE /PMTOUT/
INTRINSIC MOD
EXTERNAL DOSCOP,INIT,HELLO,LABELR,PRINT,CRUNCH
EXTERNAL RESETP,GETINT,SWRITE,PAUSE,CLOCON
SAVE
*
PROGNM = 'KERR'
MAINLN = 'SCOPE DATA ACQUISITION PROGRAM - '
WRITE (DATTIM,9987) GTMO,GTDA,GTYR,GTHR,GTMIN
9987 FORMAT (I2,'/',I2.2,'/19',I2,5X,'Time: ',I2,':',I2.2)
PAUSES = .FALSE.
DUMPIT = .FALSE.
*
CALL INIT
CALL HELLO
CALL OCCAS
ZERO = 0
ONE = 1
TWO = 2
2 CONTINUE
DO 1 I = 1,10000
CALL LABELR
IF (END) THEN
CALL GCRCLS
CALL CLOCON
IF (.NOT.ISTEST) THEN
OPEN (UNIT=PR,FILE='#PR')
* WRITE (7,'(A)') CHAR(12)//CHAR(13)
CALL PICA
CALL LPI6
CALL BLACK
ENDIF
CLOSE(7,ERR=91)
91 CLOSE(6,ERR=92)
92 CLOSE(16,ERR=93)
93 CLOSE(26,ERR=94)
94 CLOSE(36,ERR=95)
95 CLOSE(5,ERR=96)
96 CLOSE(4,ERR=97)
97 STOP ' Bye! '
ENDIF
IF (PARAM) THEN
CALL OCCAS
PARAM = .FALSE.
GOTO 2
ENDIF
IF (FUBAR) THEN
CONFRM = .TRUE.
PRINT *,'Shall we do DOSCOP? (y/N)'
I = MENU(0,0,1)
IF (I.EQ.1) CALL DOSCOP
PRINT *,'Shall we do CRUNCH? (y/N)'
I = MENU(0,0,1)
IF (I.EQ.1) CALL CRUNCH
PRINT *,'Shall we do OUTPUT? (y/N)'
I = MENU(0,0,1)
IF (I.EQ.1) CALL OUTPUT
PRINT *,'BACK TO NORMAL? (Y/n)'
I = MENU(1,0,1)
FUBAR = .NOT. (I.EQ.0)
ELSE
CALL DOSCOP
CALL CRUNCH
CALL OUTPUT
ENDIF
1 CONTINUE
GOTO 2
END
*----------------------------------------------------------------------
SUBROUTINE INIT
*
* (C) COPYRIGHT: Kevin G. Rhoads & High Voltage Research Lab (MIT) - 1983.
*
CHARACTER PROGNM*18,MAINLN*54,FSCOPE*12,STRNG*128
CHARACTER*20 TMP(5),CRHO(4),FILNAM
CHARACTER*17 PTMP(5),PRHO(4),PDENS
CHARACTER*2 CRLF,FUGAR,CISTST
CHARACTER*1 CR,LF,TAB,FF,ASCOPA(8192),ASCOP0(8192)
REAL*4 W0MAX,W0MIN,W1MAX,W1MIN,RANGE0,RANGE1,RLMAX,RLMIN
REAL*4 RNUM,YZERO,YMULT,VGND,TTRIG,VTRIG,CHGVLT,TINCR
REAL*4 WCHGV,TL,WTINCR,DENS,WWFM(0:1023),TEMP(5),RHO(4),FLOW
REAL*4 SUPSUB,WFM0ZR,WFM1ZR,TMP0ZR,TMP1ZR
INTEGER*4 ZERO,ONE,TWO,TSCOPE,DIBOPT,DIBBIO(4),FIXVAR
INTEGER*4 ERROR,RECLEN,FREC,ASCOPN,VOLTN,INT4MX,INT4MN
INTEGER*4 SCRN0,CNSL0,KPD,PR,BUSA,BUSB,BUSC,BUSD,FILE,GR
INTEGER*4 SPLIN,SPHLIN,GETINT,MENU,ISTART,LENDB,HENDB
INTEGER*2 I,BEGIN,CHANGE,PRPNTS,NOPNTS,FLUID(2),INT2MX,INT2MN
INTEGER*2 IASC,ISCAN,IKBF1,IKBF2,IERR,PCOLOR,ACOLOR
INTEGER*2 FPCKTA(100),WFM0DX,WFM1DX,TENCPI,SXTNCP
INTEGER*1 TRANS(0:255),DTCB,DTCBA(50),SCOPE0(8192),AUX(256),INT1MX,INT1MN
LOGICAL*2 ABORT,ESCAPE,INTRPT,CONFRM,DUMPIT,PAUSES
LOGICAL*2 TASCII,BINARY,NTRPLT,CONDNS,TEK468,TK7854,TK7D20
LOGICAL*2 ERRORS(4),ISTEST
LOGICAL*1 DISK,END,PARAM,FUBAR
EQUIVALENCE (DTCB,DTCBA(1))
COMMON /GARBAG/ERROR,DISK,END,PARAM,FUBAR,WFM0DX,WFM1DX,CHGVLT,TINCR,
1FREC,RECLEN,TENCPI,SXTNCP
COMMON /FOO5/VOLTN,RNUM,YZERO,YMULT,VGND,TTRIG,VTRIG
COMMON /NAMEPR/PROGNM,MAINLN,/WFMFMT/TASCII,BINARY,NTRPLT
COMMON /WFMRNG/W0MAX,W0MIN,W1MAX,W1MIN,RANGE0,RANGE1,WFM0ZR,WFM1ZR,TMP0ZR,TMP1ZR
COMMON /GET/STRNG,/NUMBER/ZERO,ONE,TWO,/CONCHR/CR,LF,TAB,FF
COMMON /CARLF/CRLF,/MESEND/LENDB,HENDB,/PRNTMD/CONDNS
COMMON /SCTYPE/TEK468,TK7854,TK7D20,/COLORS/PCOLOR,ACOLOR
COMMON /SP/SPLIN,SPHLIN,SUPSUB,/CTMPRH/TMP,CRHO,/DUMP/DUMPIT
COMMON /TABLE/TRANS,/KEYGET/IASC,ISCAN,IKBF1,IKBF2,IERR
COMMON /NTRVN/ABORT,ESCAPE,INTRPT,/CNFRM/CONFRM,/ERRRPT/ERRORS
COMMON /PTMPRH/PTMP,PRHO,PDENS,/PNTS/PRPNTS,NOPNTS
COMMON /RWNUM/WCHGV,TL,WTINCR,DENS,WWFM,FLUID,AUX,TEMP,RHO,FLOW
COMMON /WFM0SV/SCOPE0,/FUNPKT/FPCKTA,/FILES/FILNAM
COMMON /REPLIM/RLMAX,RLMIN,INT1MX,INT1MN,INT2MX,INT2MN,INT4MX,INT4MN
COMMON /DTCBS/DTCBA,/PAWS/PAUSES,/TST/ISTEST,/WFMS/WFMS
COMMON /UNITS/SCRN0,CNSL0,KPD,PR,BUSA,BUSB,BUSC,BUSD,FILE,GR
COMMON /ASCVAR/ASCOPA,ASCOP0,/ASCNDX/ASCOPN
SAVE /UNITS/,/ASCVAR/,/ASCNDX/,/TST/,/WFMS/,/FILES/,/FOO5/
SAVE /PAWS/,/PNTS/,/DTCBS/,/ERRRPT/,/CNFRM/,/NTRVN/,/KEYGET/
SAVE /FUNPKT/,/REPLIM/,/WFM0SV/,/RWNUM/,/TABLE/,/DUMP/,/GARBAG/
SAVE /WFMFMT/,/NAMEPR/,/WFMRNG/,/GET/,/CONCHR/,/MESEND/,/NUMBER/
SAVE /CARLF/,/PRNTMD/,/SCTYPE/,/CTMPRH/,/PTMPRH/
EXTERNAL GETINT,MENU,CRCLS,OPEBUS,PAUSE,OPECON
*
REAL*4 WFMS(0:1023,-10:11),WFMA(0:1023)
EQUIVALENCE(WFMS(0,11),WFMA(0))
REAL*4 WFM0(0:1023),PWFM0(0:1023),WFM1(0:1023),PWFM1(0:1023),TIME(0:1023)
EQUIVALENCE (TIME(0),WFMS(0,0)),(WFM0(0),WFMS(0,1)),(WFM1(0),WFMS(0,2))
EQUIVALENCE (PWFM0(0),WFMS(0,-1)),(PWFM1(0),WFMS(0,-2))
REAL*4 WFM2(0:1023),PWFM2(0:1023),WFM3(0:1023),PWFM3(0:1023)
EQUIVALENCE (WFM2(0),WFMS(0,3)),(WFM3(0),WFMS(0,4))
EQUIVALENCE (PWFM2(0),WFMS(0,-3)),(PWFM3(0),WFMS(0,-4))
REAL*4 WFM4(0:1023),PWFM4(0:1023),WFM5(0:1023),PWFM5(0:1023)
EQUIVALENCE (WFM4(0),WFMS(0,5)),(WFM5(0),WFMS(0,6))
EQUIVALENCE (PWFM4(0),WFMS(0,-5)),(PWFM5(0),WFMS(0,-6))
REAL*4 WFM6(0:1023),PWFM6(0:1023),WFM7(0:1023),PWFM7(0:1023)
EQUIVALENCE (WFM6(0),WFMS(0,7)),(WFM7(0),WFMS(0,8))
EQUIVALENCE (PWFM6(0),WFMS(0,-7)),(PWFM7(0),WFMS(0,-8))
REAL*4 WFM8(0:1023),PWFM8(0:1023),WFM9(0:1023),PWFM9(0:1023)
EQUIVALENCE (WFM8(0),WFMS(0,9)),(WFM9(0),WFMS(0,10))
EQUIVALENCE (PWFM8(0),WFMS(0,-9)),(PWFM9(0),WFMS(0,-10))
*
SAVE
*
* INITIALIZE VARIOUS COMMON VARIABLES
*
PROGNM = 'KERR >INIT'
MAINLN = 'SCOPE DATA ACQUISITION PROGRAM - '
SCRN0 = 12
CNSL0 = 11
GR = 14
KPD = 5
BUSA = 36
BUSB = 6
BUSD = 26
BUSC = 16
PR = 7
FILE = 10
CALL OPECON
CALL OPESCR
*
CALL GCRCLS
SPLIN = 56
SPHLIN = 28
SUPSUB = 0.5
OPEN (UNIT=7,FILE='#PR',FORM='FORMATTED')
CALL PRTEST
CLOSE (UNIT=7)
CONFRM = .TRUE.
PAUSES = .FALSE.
PRINT *,'IS THIS A TEST? (Y/N [2=D,3=P])'
I = MENU(0,0,3)
ISTEST = (I.EQ.1) .OR. (I.EQ.2) .OR. (I.EQ.3)
CONFRM = .TRUE.
PAUSES = I.EQ.3
DUMPIT = I.EQ.2
ABORT = .FALSE.
ESCAPE = .FALSE.
INTRPT = .FALSE.
J = 0
DO 30 I = -11,10,1
DO 31 J = 0,1023
WFMS(J,I) = 0.0
31 CONTINUE
30 CONTINUE
*
TAB = CHAR(9)
LF = CHAR(10)
FF = CHAR(12)
CR = CHAR(13)
CRLF = LF // CR
TEK468 = .FALSE.
TK7D20 = .FALSE.
TK7854 = .FALSE.
ONE = 1
TWO = 2
ZERO = 0
RLMAX = 3.4E38
RLMIN = 1.0D0/RLMAX
INT4MX = 2147483647
INT4MN = -2147483648
INT2MX = 32767
INT2MN = -32768
INT1MX = 127
INT1MN = -128
LENDB = 0
HENDB = 0
DO 20 I = 1,4
ERRORS(I) = .FALSE.
20 CONTINUE
TENCPI = 0
SXTNCP = 2
ERROR = 0
DISK = .FALSE.
END = .FALSE.
PARAM = .FALSE.
FUBAR = .FALSE.
ACOLOR = 0
PCOLOR = 3
IF (ISTEST) THEN
PRINT *,'DEBUG MODE? (y/N)'
I = MENU(0,0,1)
FUBAR = I.EQ.1
ENDIF
*
TMP(1) = 'Cell Temperature'
TMP(2) = 'Tank Temperature'
TMP(3) = 'Oil1 Temperature'
TMP(4) = 'Oil2 Temperature'
TMP(5) = 'Room Temperature'
CRHO(1) = 'Cell Resistivity'
CRHO(2) = 'Nano Resistivity'
CRHO(3) = 'Tank Resistivity'
CRHO(4) = 'ResistivityCHECK'
PDENS = 'Density: '
PTMP(5) = TMP(5)(1:16) // ':'
DO 21 I = 1,4
PTMP(I) = TMP(I)(1:16) // ':'
PRHO(I) = CRHO(I)(1:16) // ':'
RHO(I) = 0.0
TEMP(I) = 0.0
21 CONTINUE
TEMP(5) = 0.0
*
DO 1 I = 1,50
DTCBA(I) = 0
FPCKTA(2*I) = 0
FPCKTA(2*I-1) = 0
1 CONTINUE
STRNG = ' '
DO 22 I = 32,254
TRANS(I) = I
22 CONTINUE
TRANS(255) = 0
DO 23 I = 0,31
TRANS(I) = 0
23 CONTINUE
PRPNTS = 200
*
IF (ISTEST) THEN
12 PRINT *,'WHAT PRINT FORMAT? (1=1 Page, Wide Spacing, 200 POINTS;'
PRINT *,' 2=1 Page, Narrow Spacing, 256 POINTS;'
PRINT *,' 3=1 Page, Narrow Spacing, 300 POINTS;'
PRINT *,' 4=2 Pages, Narrow, ALL 512 POINTS.'
PRINT *,' 5=4 Pages, Narrow, ALL 1024 POINTS.'
PRINT *,' 0=DEFAULT (200 POINTS)'
I = MENU(1,0,5)
IF (I.EQ.1) THEN
PRPNTS = 200
ELSEIF (I.EQ.2) THEN
PRPNTS = 256
ELSEIF (I.EQ.3) THEN
PRPNTS = 300
ELSEIF (I.EQ.4) THEN
PRPNTS = 512
ELSEIF (I.EQ.5) THEN
PRPNTS = 1024
ELSE
PRPNTS = 200
ENDIF
CONFRM = .TRUE.
PRINT *,'For printing what are your choices of color?'
PRINT *,'PRIMARY PRINT COLOR (1=green, 2=blue, 3=BLACK)'
PCOLOR = MENU(3,0,3)
PRINT *,'ACCENT PRINT COLOR (0=RED, 1=green, 2=blue)'
ACOLOR = MENU(0,0,2)
PRINT *,'Do you need to reposition the printer paper? (Y/N)'
I = MENU(0,0,1)
IF (I.EQ.1) CALL PRSET
CLOSE (UNIT=7,ERR=6621)
6621 CONTINUE
OPEN (UNIT=7,FILE='#PR',FORM='FORMATTED')
CALL PRTEST
CLOSE (UNIT=7,ERR=6622)
6622 CONTINUE
ENDIF
*
CALL WHICHS
IF (ISTEST) PRINT *,'ABOUT TO OPEN BUS ...'
CALL OPEBUS
IF (TK7D20.AND.ISTEST) THEN
PRINT *,'ASCII OR BINARY FORMAT ON READS?(0=ASCII,1=BINARY)'
I = MENU(0,0,1)
TASCII = I.EQ.0
BINARY = I.EQ.1
PRINT *,'TO INTERPOLATE(Y) OR NOT TO INTERPOLATE(N)? (Y/N)'
I = MENU(0,0,1)
NTRPLT = I.EQ.1
ELSEIF (TK7D20) THEN
TASCII = .TRUE.
BINARY = .FALSE.
NTRPLT = .FALSE.
ELSEIF (TK7854) THEN
TASCII = .TRUE.
BINARY = .FALSE.
ELSEIF (TEK468) THEN
TASCII = .FALSE.
BINARY = .TRUE.
ENDIF
10 CONTINUE
IF (TK7854) THEN
PRINT *,'PRELOADING WFM 0 INTO COMPUTER FOR INITIALIZATION PURPOSES.'
CALL TIMOUT
PRINT *,'INIT: ABOUT TO READ WFM 0 INTO COMPUTER.'
WRITE (6,'(A)') '0 WFM SENDX'
CALL AREAD(DTCB,6,SCOPE0(1),8192,LENDB,HENDB,0,ERROR)
ENDIF
*
PROGNM = 'KERR'
RETURN
END
*____________________________________________________________________________
*
SUBROUTINE OCCAS
* (C) COPYRIGHT: Kevin G. Rhoads & High Voltage Research Lab (MIT) - 1983,84.
CHARACTER PROGNM*18,MAINLN*54,SAVENM*5,CDENS*12
CHARACTER*77 TITLE(3),LABEL,WLABEL
CHARACTER*20 TMP(5),CRHO(4),FILNAM
CHARACTER*10 DATE,WDATE
CHARACTER*4 ELECT(2),ANSWER
CHARACTER*2 CRLF,TYPE
CHARACTER*1 CR,LF,TAB,FF,CANS,ASCOPA(8192),ASCOP0(8192),POLAR(2)
REAL*4 WCHGV,TL,WTINCR,DENS,WWFM(0:1023),TEMP(5),RHO(4),FLOW
REAL*4 GETRL,CHGVLT,TINCR
INTEGER*4 SCRN0,CNSL0,KPD,PR,BUSA,BUSB,BUSC,BUSD,FILE,GR
INTEGER*4 ERROR,RECLEN,FREC,ASCOPN,GETINT
INTEGER*2 WFM0DX,WFM1DX,TENCPI,SXTNCP,FLUID(2)
INTEGER*2 PCOLOR,ACOLOR,I,BEGIN,CHANGE,PRPNTS,NOPNTS
INTEGER*1 AUX(256)
LOGICAL*2 ABORT,ESCAPE,INTRPT,DOPR,DODISK,DOPLOT,ISTEST,NOGOOD
LOGICAL*2 VSTIME,LOGLOG,APRTSC,CONFRM
LOGICAL*1 DISK,END,PARAM,FUBAR
COMMON /GARBAG/ERROR,DISK,END,PARAM,FUBAR,WFM0DX,WFM1DX,CHGVLT,TINCR,
1FREC,RECLEN,TENCPI,SXTNCP
COMMON /ASCGAR/DATE,TITLE,LABEL,/ASCVAR/ASCOPA,ASCOP0,/ASCNDX/ASCOPN
COMMON /FILES/FILNAM,/RWCHAR/TYPE,WDATE,WLABEL,ELECT,POLAR
COMMON /CONCHR/CR,LF,TAB,FF,/NAMEPR/PROGNM,MAINLN,/CNFRM/CONFRM
COMMON /UNITS/SCRN0,CNSL0,KPD,PR,BUSA,BUSB,BUSC,BUSD,FILE,GR
COMMON /NTRVN/ABORT,ESCAPE,INTRPT,/PMTOUT/DOPR,DODISK,DOPLOT,VSTIME,LOGLOG,APRTSC,IDRIVE
COMMON /COLORS/PCOLOR,ACOLOR,/CARLF/CRLF,/PNTS/PRPNTS,NOPNTS
COMMON /RWNUM/WCHGV,TL,WTINCR,DENS,WWFM,FLUID,AUX,TEMP,RHO,FLOW
COMMON /CTMPRH/TMP,CRHO,/TST/ISTEST
SAVE /RWCHAR/,/FILES/,/ASCVAR/,/ASCNDX/,/ASCGAR/,/GARBAG/,/CTMPRH/
SAVE /RWNUM/,/PNTS/,/TST/,/CARLF/,/NTRVN/,/PMTOUT/,/UNITS/,/NAMEPR/
SAVE /CONCHR/,/CNFRM/
EXTERNAL GETINT,GETRL,GCRCLS,CRCLS
SAVE
*
*
IF (ISTEST.AND.(.NOT.PARAM)) RETURN
SAVENM = PROGNM
PROGNM = SAVENM//'>OCCAS'
CALL GCRCLS
CONFRM = .TRUE.
PRINT *,' '
PRINT *,'WHAT OUTPUT(s) FOR WAVEFORMS? (1=SCREEN PLOT '
PRINT *,' 2=print values '
PRINT *,' 4=store to disk '
PRINT *,' 3=1+2, 5=1+4, 6=2+4, 7=1,2+4) '
I = MENU(1,0,7)
DODISK = I.GE.4
I = MOD(I,4)
DOPR = I.GE.2
I = MOD(I,2)
DOPLOT = I.NE.0
IF (DOPLOT) THEN
CALL CRCLS
PRINT *,' '
PRINT *,' WHAT KIND OF PLOT? (1=TWO WFMS vs TIME, '
PRINT *,' 2=log-log plot of wfm2 vs wfm1'
PRINT *,' 3=both) '
I = MENU(1,0,3)
VSTIME = I.NE.2
LOGLOG = I.EQ.2 .OR. I.EQ.3
CALL CRCLS
PRINT *,' '
PRINT *,' AUTOMATIC SCREEN PRINT OF PLOT(S)? (y/N)'
I = MENU(0,0,1)
APRTSC = I.EQ.1
ENDIF
IF (DODISK) THEN
6612 CONTINUE
CALL CRCLS
PRINT *,' DATA WILL BE STORED UNDER THE FILENAMES: PMTWFMxx.DAT '
PRINT *,' WHERE xx STARTS AT 00 AND IS INCREMENTED'
PRINT *,' '
PRINT *,'WHAT DRIVE TO STORE FILES TO? (0 .. 7, 8=DEFAULT DRIVE)'
I = MENU(8,0,8)
IF (I.EQ.8) I = -1
IDRIVE = I
ENDIF
IF (DOPR) THEN
12 PRINT *,'WHAT PRINT FORMAT? (1=1 Page, Wide Spacing, 200 POINTS;'
PRINT *,' 2=1 Page, Narrow Spacing, 256 POINTS;'
PRINT *,' 3=1 Page, Narrow Spacing, 300 POINTS;'
PRINT *,' 4=2 Pages, Narrow, ALL 512 POINTS.'
PRINT *,' 5=4 Pages, Narrow, ALL 1024 POINTS.'
PRINT *,' 0=DEFAULT (200 POINTS)'
I = MENU(1,0,5)
IF (I.EQ.1) THEN
PRPNTS = 200
ELSEIF (I.EQ.2) THEN
PRPNTS = 256
ELSEIF (I.EQ.3) THEN
PRPNTS = 300
ELSEIF (I.EQ.4) THEN
PRPNTS = 512
ELSEIF (I.EQ.5) THEN
PRPNTS = 1024
ELSE
PRPNTS = 200
ENDIF
PARAM = .FALSE.
PRINT *,'For printing what are your choices of color?'
PRINT *,'PRIMARY PRINT COLOR (1=green, 2=blue, 3=BLACK)'
PCOLOR = MENU(3,0,3)
PRINT *,'ACCENT PRINT COLOR (0=RED, 1=green, 2=blue)'
ACOLOR = MENU(0,0,2)
PRINT *,'Do you need to reposition the printer paper? (Y/N)'
I = MENU(0,0,1)
IF (I.EQ.1) CALL PRSET
IF (ISTEST) THEN
PRINT *,'DEBUG MODE? (y/N)'
I = MENU(0,0,1)
FUBAR = I.EQ.1
ENDIF
ENDIF
*
3144 CONTINUE
PARAM = .FALSE.
* PRINT *,'ARE FLUID PARAMTERS RELEVANT? (Y/N) '
I = 0
NOGOOD = I.EQ.0
IF (NOGOOD) THEN
DENS = 0.0
TEMP(5) = 0.0
DO 3142 I = 1,4
TEMP(I) = 0.0
RHO(I) = 0.0
3142 CONTINUE
RETURN
ENDIF
PRINT *,'PLEASE ENTER FLUID PARAMETERS, ENTER NUMBERS WITH EXPLICIT'
PRINT *,'DECIMAL POINT (EG. 12.0 NOT 12)'
1 PRINT *,'THE DENSITY IS ... '
DENS = GETRL()
WRITE (*,'(A,F10.2,A)')'Density: ',DENS,' OK?(Y/N)'
I = MENU(1,0,1)
NOGOOD = I.EQ.0
IF (INTRPT) GOTO 3144
IF (NOGOOD) GOTO 1
CALL GCRCLS
*
DO 3 I = 1,5
2 PRINT *,'THE ',TMP(I),' IS ... '
TEMP(I) = GETRL()
WRITE (*,'(A,F10.2,A)')TMP(I),TEMP(I),' OK?(Y/N)'
I = MENU(1,0,1)
NOGOOD = I.EQ.0
IF (INTRPT) GOTO 3144
IF (NOGOOD) GOTO 2
CALL CRCLS
3 CONTINUE
*
DO 5 I = 1,4
4 PRINT *,'THE ',CRHO(I),' IS ... '
RHO(I) = GETRL()
WRITE (*,'(A,F10.2,A)')CRHO(I),RHO(I),' OK?(Y/N)'
I = MENU(1,0,1)
NOGOOD = I.EQ.0
IF (INTRPT) GOTO 3144
IF (NOGOOD) GOTO 4
CALL CRCLS
5 CONTINUE
*
OPEN (7,FILE='#PR')
CALL TOPFRM
CALL DSMALL
CALL LPI6
CALL COLOR(ACOLOR)
WRITE (UNIT=PR,FMT='(A/)') TITLE(1)//TITLE(2)//CRLF
WRITE (UNIT=PR,FMT=*) 'The date is ',DATE,CRLF
CALL COLOR(PCOLOR)
DO 10 I = 1,5
WRITE (UNIT=PR,FMT=9111) TMP(I),' = ',TEMP(I),' `C'//CRLF
10 CONTINUE
DO 11 I = 1,4
WRITE (UNIT=PR,FMT=9111) CRHO(I),' = ',RHO(I),' M Ohm-cm'//CRLF
11 CONTINUE
WRITE (UNIT=PR,FMT=*) FF,CR
CALL TOPFRM
CLOSE (7)
*
PROGNM = SAVENM
RETURN
9001 FORMAT (A/)
9002 FORMAT (BN,F12.6/)
9111 FORMAT (A,A,F7.2,A/)
END
*____________________________________________________________________________
*
SUBROUTINE HELLO
* (C) COPYRIGHT: Kevin G. Rhoads & High Voltage Research Lab (MIT) - 1983,84.
CHARACTER PROGNM*18,MAINLN*54,SAVENM*6
CHARACTER FILNAM*20,ANSWER*4,DATE*10,CDENS*12
CHARACTER*77 STRING,TITLE(3),LABEL
CHARACTER*1 CR,LF,TAB,FF
CHARACTER*2 FUGRB
CHARACTER*28 DATTIM
REAL*4 CHGVLT,TINCR
INTEGER*4 GTYR,GTMO,GTDA,GTHR,GTMIN,GTSEC,GTFR,MENU,FREC,ERROR,RECLEN
INTEGER*4 SCRN0,CNSL0,KPD,PR,BUSA,BUSB,BUSC,BUSD,FILE,GR
INTEGER*2 WFM0DX,WFM1DX,TENCPI,SXTNCP,IASC,ISCAN,IKBF1,IKBF2,IERR
LOGICAL*2 ABORT,ESCAPE,INTRPT
LOGICAL*1 DISK,END,PARAM,FUBAR
COMMON /GARBAG/ERROR,DISK,END,PARAM,FUBAR,WFM0DX,WFM1DX,CHGVLT,TINCR,
1FREC,RECLEN,TENCPI,SXTNCP
COMMON /TIMDAT/DATTIM,/NAMEPR/PROGNM,MAINLN,/FOO/ANSWER
COMMON /FOO3/FUGRB,/ASCGAR/DATE,TITLE,LABEL,/CONCHR/CR,LF,TAB,FF
COMMON /UNITS/SCRN0,CNSL0,KPD,PR,BUSA,BUSB,BUSC,BUSD,FILE,GR
COMMON /NTRVN/ABORT,ESCAPE,INTRPT,/KEYGET/IASC,ISCAN,IKBF1,IKBF2,IERR
COMMON /TIMES/GTYR,GTMO,GTDA,GTHR,GTMIN,GTSEC,GTFR,/FILES/FILNAM
SAVE /KEYGET/,/FILES/,/TIMES/,/NTRVN/,/UNITS/,/CONCHR/,/ASCGAR/
SAVE /FOO3/,/FOO/,/NAMEPR/,/TIMDAT/,/GARBAG/
EXTERNAL GETTIM,MENU,GCRCLS
SAVE
*
*$$$$ This routine greets the user and gets various data.
*
SAVENM = PROGNM
PROGNM = SAVENM//'>HELLO'
CALL GCRCLS
*
* WHILE DISK I/O NOT DEBUGGED AND LOOPING A PROBLEM
*
DISK = .FALSE.
TITLE(1) = 'KERR EFFECT MEASUREMENTS'
*
PRINT *,'PLEASE ENTER TITLE/DESCRIPTOR DATA (1 LINE)'
20 READ (*,'(A)') TITLE(2)
PRINT *,'Title: '
PRINT *,TITLE(2)
PRINT *,'IS THIS CORRECT? (Y/N)'
I = MENU(1,0,1)
IF (I.EQ.0) GOTO 20
PROGNM = SAVENM
RETURN
END
*____________________________________________________________________________
*
SUBROUTINE LABELR
* (C) COPYRIGHT: Kevin G. Rhoads & High Voltage Research Lab (MIT) - 1983,84.
CHARACTER FILNAM*20,ANSWER*4,DATE*10,TITLE(3)*77,LABEL*77,CCV*12
CHARACTER PROGNM*18,MAINLN*54,SAVENM*6
CHARACTER*1 CR,LF,TAB,FF
REAL*4 GETRL,CHGVLT,TINCR
INTEGER*4 SCRN0,CNSL0,KPD,PR,BUSA,BUSB,BUSC,BUSD,FILE,GR,MENU
INTEGER*4 GTYR,GTMO,GTDA,GTHR,GTMIN,GTSEC,GTFR
INTEGER*4 ERROR,RECLEN,FREC,ASCOPN
INTEGER*2 WFM0DX,WFM1DX,TENCPI,SXTNCP,PCOLOR,ACOLOR,PRPNTS,NOPNTS
INTEGER*2 IASC,ISCAN,IKBF1,IKBF2,IERR
INTEGER*1 DTCB,DTCBA(50),SCOPE0(8192)
LOGICAL*4 NOGOOD
LOGICAL*2 TEK468,TK7854,TK7D20,CONFRM,ABORT,ESCAPE,INTRPT,ISTEST
LOGICAL*2 DOPR,DODISK,DOPLOT,VSTIME,LOGLOG,APRTSC
LOGICAL*1 DISK,END,PARAM,FUBAR
EQUIVALENCE (DTCB,DTCBA(1))
COMMON /SCTYPE/TEK468,TK7854,TK7D20,/NAMEPR/PROGNM,MAINLN,/FOO/ANSWER
COMMON /UNITS/SCRN0,CNSL0,KPD,PR,BUSA,BUSB,BUSC,BUSD,FILE,GR
COMMON /ASCGAR/DATE,TITLE,LABEL,/CONCHR/CR,LF,TAB,FF,/PNTS/PRPNTS,NOPNTS
COMMON /TIMES/GTYR,GTMO,GTDA,GTHR,GTMIN,GTSEC,GTFR,/NTRVN/ABORT,ESCAPE,INTRPT
COMMON /TST/ISTEST,/DTCBS/DTCBA,/WFM0SV/SCOPE0,/CNFRM/CONFRM,/COLORS/PCOLOR,ACOLOR
COMMON /GARBAG/ERROR,DISK,END,PARAM,FUBAR,WFM0DX,WFM1DX,CHGVLT,TINCR,
1FREC,RECLEN,TENCPI,SXTNCP,/PMTOUT/DOPR,DODISK,DOPLOT,VSTIME,LOGLOG,APRTSC,IDRIVE
SAVE /NAMEPR/,/SCTYPE/,/CONCHR/,/GARBAG/,/FOO/,/UNITS/,/ASCGAR/,/TIMES/
SAVE /WFM0SV/,/TST/,/DTCBS/,/PNTS/,/NTRVN/,/CNFRM/,/KEYGET/
COMMON /KEYGET/IASC,ISCAN,IKBF1,IKBF2,IERR
EXTERNAL GETRL,GETTIM,SWRITE,GCRCLS,MENU,TIMOUT,CLRBUS
SAVE
*
SAVENM = PROGNM
PROGNM = SAVENM//'>LABELR'
PARAM = .FALSE.
60 CONTINUE
CALL GETTIM(GTYR,GTMO,GTDA,GTHR,GTMIN,GTSEC,GTFR)
WRITE (DATE,'(I2,''/'',I2.2,''/19'',I2)') GTMO,GTDA,GTYR
WRITE (TITLE(3),9987) GTMO,GTDA,GTYR,GTHR,GTMIN
9987 FORMAT (I2,'/',I2.2,'/19',I2,5X,'Time: ',I2,':',I2.2)
CALL GCRCLS
PRINT *,'WHAT IS THE CHARGING VOLTAGE FOR THIS NEXT WAVEFORM?'
PRINT *,'PLEASE ENTER THE NUMBER WITH . AS IN 12.0'
10 CONTINUE
CHGVLT = GETRL()
50 CONTINUE
PRINT *,'Charging Voltage: '
WRITE (*,'(F10.2)')CHGVLT
IF (.NOT.DOPR) THEN
LABEL = ' '
IF (CHGVLT.EQ.0.0) GOTO 40
RETURN
ENDIF
PRINT *,'IS THIS CORRECT? (Y/N)'
CONFRM = .FALSE.
I = MENU(1,0,1)
NOGOOD =I.EQ.0
IF (NOGOOD) GOTO 10
CALL CRCLS
IF (CHGVLT.EQ.0.0) GOTO 40
*
PRINT *,'PLEASE ENTER LABEL/DESCRIPTOR DATA (1 LINE)'
20 READ (*,'(A)') LABEL
PRINT *,'Label: '
PRINT *,LABEL
PRINT *,'IS THIS CORRECT? (Y/N)'
I = MENU(1,0,1)
NOGOOD = I.EQ.0
IF (NOGOOD) GOTO 20
CONFRM = .TRUE.
*
PROGNM = SAVENM
RETURN
40 CONTINUE
CONFRM = .TRUE.
PRINT *,'YOU ENTERED ZERO FOR THE THE CHARGING VOLTAGE'
30 PRINT *,'This is the signal to end or change parameters'
PRINT *,'OPTIONS ARE: (0) REENTER THE CHARGING VOLTAGE.'
PRINT *,' (1) Terminate this run.'
PRINT *,' (2) Change parameters.'
PRINT *,' (3) Restore WFM 0 (AS LAST READ) to scope (TK7854)'
PRINT *,' (4) Change number of points printed.'
IANS = MENU(0,0,4)
IF (IANS.EQ.0) THEN
GOTO 60
ELSEIF (IANS.EQ.1) THEN
END = .TRUE.
PROGNM = SAVENM
RETURN
ELSEIF (IANS.EQ.2) THEN
PARAM = .TRUE.
PROGNM = SAVENM
RETURN
ELSEIF (IANS.EQ.3) THEN
IF (TK7854.OR.TK7D20) THEN
9087 IF (DTCB.EQ.3) GOTO 9087
IF (DTCB.EQ.2.OR.DTCB.EQ.0) THEN
ERROR = 0
IF (ISTEST) CALL CANCEL(6,ERROR)
ERROR = 0
CALL CLRBUS
PRINT *,'RESTORING WFM 0 TO SCOPE'
DO 9088 I = 1,50
DTCBA(I) = 0
9088 CONTINUE
CALL TIMOUT
PRINT *,'INIT: About to send WFM 0 from computer to scope.'
IF (TK7854) THEN
WRITE (6,'(A)') '0 WFM READX 0 WFM'
CALL AWRITE(DTCB,6,SCOPE0(1),8192,LENDB,HENDB,0,ERROR)
ELSEIF (TK7D20) THEN
WRITE (26,'(A)') ' '
CALL AWRITE(DTCB,26,SCOPE0(1),8192,LENDB,HENDB,0,ERROR)
ENDIF
ENDIF
ELSE
PRINT *,'LABELR: INVALID CHOICE, SCOPE IS NOT TEKTRONIX 7854 OR 7D20'
GOTO 60
ENDIF
ELSEIF (IANS.EQ.4) THEN
12 PRINT *,'WHAT PRINT FORMAT? (1=1 Page, Wide Spacing, 200 POINTS;'
PRINT *,' 2=1 Page, Narrow Spacing, 256 POINTS;'
PRINT *,' 3=1 Page, Narrow Spacing, 300 POINTS;'
PRINT *,' 4=2 Pages, Narrow, ALL 512 POINTS.'
PRINT *,' 5=4 Pages, Narrow, ALL 1024 POINTS.'
PRINT *,' 0=DEFAULT (200 POINTS)'
I = MENU(1,0,5)
IF (I.EQ.1) THEN
PRPNTS = 200
ELSEIF (I.EQ.2) THEN
PRPNTS = 256
ELSEIF (I.EQ.3) THEN
PRPNTS = 300
ELSEIF (I.EQ.4) THEN
PRPNTS = 512
ELSEIF (I.EQ.5) THEN
PRPNTS = 1024
ELSE
PRPNTS = 200
ENDIF
CONFRM = .TRUE.
PRINT *,'For printing what are your choices of color?'
PRINT *,'PRIMARY PRINT COLOR (1=green, 2=blue, 3=BLACK)'
PCOLOR = MENU(3,0,3)
PRINT *,'ACCENT PRINT COLOR (0=RED, 1=green, 2=blue)'
ACOLOR = MENU(0,0,2)
PRINT *,'Do you need to reposition the printer paper? (Y/N)'
I = MENU(0,0,1)
IF (I.EQ.1) CALL PRSET
GOTO 60
ENDIF
END
*----------------------------------------------------------------------
SUBROUTINE DOSCOP
*
* (C) COPYRIGHT: Kevin G. Rhoads & High Voltage Research Lab (MIT) - 1983.
*
CHARACTER PROGNM*18,MAINLN*54,SAVENM*5
INTEGER*4 GETINT
LOGICAL*2 TEK468,TK7854,TK7D20,ISTEST,DUMPIT,TASCII,BINARY,NTRPLT
COMMON /SCTYPE/TEK468,TK7854,TK7D20,/WFMFMT/TASCII,BINARY,NTRPLT
COMMON /TST/ISTEST,/DUMP/DUMPIT,/NAMEPR/PROGNM,MAINLN
SAVE /DUMP/,/TST/,/WFMFMT/,/SCTYPE/,/NAMEPR/
EXTERNAL GETINT,RD7ASC,RD468,DC468,PAUSE
SAVE
*
SAVENM = PROGNM
PROGNM = SAVENM//'>SCOPE'
IF (TK7854) THEN
CALL RD7ASC
ELSEIF (TEK468) THEN
CALL RD468
CALL DC468
ELSEIF (TK7D20) THEN
IF (TASCII) THEN
CALL RD7ASC
ELSEIF (BINARY) THEN
CALL RD7BIN
ENDIF
ENDIF
PROGNM = SAVENM
RETURN
END
*----------------------------------------------------------------------
SUBROUTINE OUTPUT
CHARACTER*8 HEXOF,THEHEX,FILNAM*20,THEFIL*14
REAL*4 CHGVLT,TINCR,RNUM,YZERO,YMULT,VGND,TTRIG,VTRIG
REAL*4 VSPL1K(1024,2,2),VSPL5(512,2,2),VSPL2(256,2,2),VSPL8(820,2,2)
REAL*4 LLPLOT(4096)
INTEGER*4 ERROR,RECLEN,FREC,FILENO
INTEGER*2 WFM0DX,WFM1DX,TENCPI,SXTNCP,NOPNTS,PRPNTS
LOGICAL*2 DOPR,DODISK,DOPLOT,VSTIME,LOGLOG,APRTSC,REALOK
LOGICAL*1 DISK,END,PARAM,FUBAR
EQUIVALENCE (VSPL1K(1,1,1),VSPL5(1,1,1),VSPL2(1,1,1),VSPL8(1,1,1),LLPLOT(1))
COMMON /GARBAG/ERROR,DISK,END,PARAM,FUBAR,WFM0DX,WFM1DX,CHGVLT,TINCR,
1FREC,RECLEN,TENCPI,SXTNCP,/PNTS/PRPNTS,NOPNTS
COMMON /PMTOUT/DOPR,DODISK,DOPLOT,VSTIME,LOGLOG,APRTSC,IDRIVE
REAL WFMS(0:1023,-10:11),WFMA(0:1023)
EQUIVALENCE(WFMS(0,11),WFMA(0))
REAL WFM0(0:1023),PWFM0(0:1023),WFM1(0:1023),PWFM1(0:1023),TIME(0:1023)
EQUIVALENCE (TIME(0),WFMS(0,0)),(WFM0(0),WFMS(0,1)),(WFM1(0),WFMS(0,2))
EQUIVALENCE (PWFM0(0),WFMS(0,-1)),(PWFM1(0),WFMS(0,-2))
REAL WFM2(0:1023),PWFM2(0:1023),WFM3(0:1023),PWFM3(0:1023)
EQUIVALENCE (WFM2(0),WFMS(0,3)),(WFM3(0),WFMS(0,4))
EQUIVALENCE (PWFM2(0),WFMS(0,-3)),(PWFM3(0),WFMS(0,-4))
REAL WFM4(0:1023),PWFM4(0:1023),WFM5(0:1023),PWFM5(0:1023)
EQUIVALENCE (WFM4(0),WFMS(0,5)),(WFM5(0),WFMS(0,6))
EQUIVALENCE (PWFM4(0),WFMS(0,-5)),(PWFM5(0),WFMS(0,-6))
REAL WFM6(0:1023),PWFM6(0:1023),WFM7(0:1023),PWFM7(0:1023)
EQUIVALENCE (WFM6(0),WFMS(0,7)),(WFM7(0),WFMS(0,8))
EQUIVALENCE (PWFM6(0),WFMS(0,-7)),(PWFM7(0),WFMS(0,-8))
REAL WFM8(0:1023),PWFM8(0:1023),WFM9(0:1023),PWFM9(0:1023)
EQUIVALENCE (WFM8(0),WFMS(0,9)),(WFM9(0),WFMS(0,10))
EQUIVALENCE (PWFM8(0),WFMS(0,-9)),(PWFM9(0),WFMS(0,-10))
COMMON /WFMS/WFMS
SAVE /PMTOUT/,/WFMS/,/GARBAG/,/PNTS/,FILENO
EXTERNAL PRINT,REALOK
SAVE
DATA FILENO/0/
NUMB = 0
ACCUM = 0.0
ACCUM2 = 0.0
IF (DOPLOT.OR..NOT.(DODISK.OR.DOPR)) THEN
IF (VSTIME.OR..NOT.LOGLOG) THEN
IF (NOPNTS.EQ.256) THEN
DO 1002 I = 0,255
VSPL2(I+1,1,1) = TIME(I)
VSPL2(I+1,1,2) = TIME(I)
VSPL2(I+1,2,1) = WFM0(I)
VSPL2(I+1,2,2) = WFM1(I)
1002 CONTINUE
ELSEIF (NOPNTS.EQ.512) THEN
DO 1005 I = 0,511
VSPL5(I+1,1,1) = TIME(I)
VSPL5(I+1,1,2) = TIME(I)
VSPL5(I+1,2,1) = WFM0(I)
VSPL5(I+1,2,2) = WFM1(I)
1005 CONTINUE
ELSEIF (NOPNTS.EQ.820) THEN
DO 1008 I = 0,819
VSPL8(I+1,1,1) = TIME(I)
VSPL8(I+1,1,2) = TIME(I)
VSPL8(I+1,2,1) = WFM0(I)
VSPL8(I+1,2,2) = WFM1(I)
1008 CONTINUE
ELSEIF (NOPNTS.EQ.1024) THEN
DO 1000 I = 0,1023
VSPL1K(I+1,1,1) = TIME(I)
VSPL1K(I+1,1,2) = TIME(I)
VSPL1K(I+1,2,1) = WFM0(I)
VSPL1K(I+1,2,2) = WFM1(I)
1000 CONTINUE
ENDIF
N = NOPNTS
IF (APRTSC) THEN
CALL PLOTNW(VSPL1K(1,1,1),N,2)
CALL PRTSC
CALL WAIT(30.0)
ELSE
CALL PLOTW(VSPL1K(1,1,1),N,2)
ENDIF
ENDIF
IF (LOGLOG) THEN
IF (WFM0DX.GT.0) THEN
JJ = WFM0DX + 6
ELSE
JJ = 1
ENDIF
N = NOPNTS - J + 1
J = INDST3(N,2,2)
DO 1010 I = 0,N-1
J = JJ + I
K = INDEX3(I+1,1,1)
L = INDEX3(I+1,2,1)
KK = INDEX3(I+1,1,2)
LL = INDEX3(I+1,2,2)
R = ABS(PWFM0(J))
S = ABS(PWFM1(J))
R = ALOG(R)
S = ALOG(S)
LLPLOT(K) = R
LLPLOT(KK) = R
LLPLOT(L) = S
LLPLOT(LL) = R*4.0
SLOPE = R/S
IF (REALOK(SLOPE)) THEN
NUMB = NUMB + 1
ACCUM = ACCUM + SLOPE
ACCUM2 = ACCUM2 + SLOPE*SLOPE
ENDIF
1010 CONTINUE
IF (APRTSC) THEN
CALL PLOTNW(LLPLOT(1),N,2)
CALL PRTSC
CALL WAIT(30.0)
ELSE
CALL PLOTW(LLPLOT(1),N,2)
ENDIF
ENDIF
CALL GRCLS
IF (NUMB.GT.0) THEN
PRINT *,' '
PRINT *,' For time = ',TIME(JJ),' through ',TIME(NOPNTS-1)
SLOPE = ACCUM/FLOAT(NUMB)
IF (NUMB.GT.1) NUMB = NUMB-1
SIGMA2 = ACCUM2/FLOAT(NUMB) - SLOPE*SLOPE
SIGMA = SQRT(SIGMA2)
PRINT *,' '
PRINT *,' the average slope [LOG(WFM0)/LOG(WFM1)] = ',SLOPE
PRINT *,' & standard deviation = ',SIGMA
SLOPE = 1.0/SLOPE
PRINT *,' '
PRINT *,' with inverse [LOG(WFM1)/LOG(WFM0)] = ',SLOPE
PRINT *,' '
PRINT *,' '
CALL PAUSE(' ')
ENDIF
ENDIF
IF (DODISK) THEN
THEHEX = HEXOF(FILENO)
THEFIL = 'PMTWFM'//THEHEX(7:8)//'.DAT '
IF (IDRIVE.EQ.-1) THEN
FILNAM = THEFIL
ELSE
WRITE (FILNAM,'(I1.1,'':'',A)') IDRIVE,THEFIL
ENDIF
CALL CRCLS
PRINT *,'OPENING FOR OUTPUT: ',FILNAM
OPEN (UNIT=59,FILE=FILNAM,STATUS='NEW',FORM='BINARY',ERR=9911)
9911 OPEN (UNIT=59,FILE=FILNAM,STATUS='NEW',FORM='BINARY',ERR=9901)
WRITE (59,ERR=9901) NOPNTS
WRITE (59,ERR=9901) (TIME(I),I=0,NOPNTS)
WRITE (59,ERR=9901) (WFM0(I),I=0,NOPNTS)
WRITE (59,ERR=9901) (WFM1(I),I=0,NOPNTS)
WRITE (59,ERR=9903) WFM0DX,WFM1DX
9903 CONTINUE
CLOSE (UNIT=59,STATUS='KEEP',ERR=9902)
ENDIF
GOTO 9902
9901 CONTINUE
PRINT *,'ERROR DURING DISK I/O - DATA NOT CORRECTLY SAVED'
9902 CONTINUE
IF (DOPR) CALL PRINT
IF (DODISK) FILENO = FILENO + 1
RETURN
END

Você também pode gostar