Beruflich Dokumente
Kultur Dokumente
* SOURCE CODE and DOCUMENTATION COPYRIGHT (C) 1987 KEVIN G. RHOADS AND THE *
* HIGH VOLTAGE RESEARCH LAB., L.E.E.S, Massachusetts Institute of Technology *
*******************************************************************************
*******************************************************************************
*
*
* This file is part of the DATAACQ.LIB library, other components are in files:*
* INITOMA.FOR, GLABEL.FOR, LABELS.FOR, TSTSUB.FOR, ETSTSUB.FOR, XTSTSUB.FOR, *
* KTSTSUB.FOR, CTSTSUB.FOR, MTSTSUB.FOR, FRAMOP.FOR, AFROP.ASM and
*
* MORFROP.ASM. These routines build upon the routines in SCOPEBUS.LIB, which *
* contains the low level interfacing to the IEEE-488 bus, the SENSOR I/O board*
* and the PAR/OMA. This library should always be linked prior to SCOPEBUS, *
* GRAPHICS, UTILS and ASMUTILS. The routines in DATAACQ.LIB are high level *
* interface routines, frame operations & frame i/o, PAR programming and
*
* command & operator interface routines.
*
*-----------------------------------------------------------------------------*
$SEGMENT OMADTACQ
*compiler is directed to place object code in segment OMADTACQ
*
*-----------------------------------------------------------------------------*
$CHAREQU
*compiler is directed NOT to barf on CHARACTER and numeric data types mixed in*
*same COMMON BLOCK or EQUIVALENCE
*
*******************************************************************************
* LIST OF ENTRY POINTS:
*
*
*
*-----------------------------------------------------------------------------*
*
SUBROUTINE STAMP(HEADER,BUFFER)
*
*-----------------------------------------------------------------------------*
*
INTEGER*4 FUNCTION HEADER(CHGVLT,TLASER,POLARZ)
*
*-----------------------------------------------------------------------------*
*
SUBROUTINE GTHEAD(BUFFER)
*
*-----------------------------------------------------------------------------*
*
SUBROUTINE RDHEAD(CHGVLT,TLASER,POLARZ)
*
*-----------------------------------------------------------------------------*
*
SUBROUTINE ST0FRM(IT,LX,LY,TYP,NN,IDRIVE)
*
*
ENTRY ST04FM(IT,LX,LY,TYP,INFILE)
*
*-----------------------------------------------------------------------------*
*
SUBROUTINE STOFRM(IT,LX,LY,TYP,N)
*
*-----------------------------------------------------------------------------*
*
SUBROUTINE IST0FM(IT,LX,LY,TYP,N,DRIVE)
*
*-----------------------------------------------------------------------------*
*
SUBROUTINE ISTOFM(IT,LX,LY,TYP,N)
*
*-----------------------------------------------------------------------------*
*
SUBROUTINE GETFRM(IT,LX,LY,TYP,N)
*
*-----------------------------------------------------------------------------*
*
SUBROUTINE IGETFM(IT,LX,LY,TYP,N)
*
*-----------------------------------------------------------------------------*
*
SUBROUTINE IG3TFM(IT,LX,LY,TYP,N,DRIVE)
*
*-----------------------------------------------------------------------------*
*
SUBROUTINE G3TFRM(IT,LX,LY,TYP,NN,IDRIVE)
*
*
ENTRY G3T4FM(IT,LX,LY,TYP,INFILE)
*
*-----------------------------------------------------------------------------*
*
SUBROUTINE OMAFNM(FNAME,IRUN,ISHOT,IDRIVE)
*
*-----------------------------------------------------------------------------*
*
SUBROUTINE OMAQRY(IFRAME,IDRIVE)
*
*-----------------------------------------------------------------------------*
*
SUBROUTINE STAFRM(IT,LX,LY,TYP,NN,IDRIVE)
*
*
ENTRY STA4FM(IT,LX,LY,TYP,INFILE)
*
*-----------------------------------------------------------------------------*
*
SUBROUTINE STOAFM(IT,LX,LY,TYP,N)
*
*-----------------------------------------------------------------------------*
*
SUBROUTINE ISTAFM(IT,LX,LY,TYP,N,DRIVE)
*
*-----------------------------------------------------------------------------*
*
SUBROUTINE ISTFMA(IT,LX,LY,TYP,N)
*
*******************************************************************************
*---------------------------------------------------------------------SUBROUTINE STAMP(HEADER,BUFFER)
INTEGER*4 HEADER,BUFFER
CALL IIC0PY(HEADER,BUFFER,1024)
BUFFER = BUFFER + 1024
RETURN
END
*---------------------------------------------------------------------INTEGER*4 FUNCTION HEADER(CHGVLT,TLASER,POLARZ)
CHARACTER*22 FRMTYP(-2:20)
CHARACTER*17 PTMP(5),PRHO(4),PDENS
CHARACTER*20 FRAME,FRAME2,FLNM,DFRAME,INPUTS,INPUT2,TMP(5),CRHO(4),FILNAM
CHARACTER*2 POLARZ,CRLF,BCR,FUGAR
CHARACTER*1 CARR(1024),LKJH(78),TIMDAT(32),CR,LF,NUL,BLANK,NOTES1(16)
CHARACTER*1 LCTRD1(25,2),CT(77,3),CL(77),PLRITY(2)
CHARACTER ANSWER*4,DATE*10,TITLE(3)*77,LABEL*77,LCTRDS(2)*25
CHARACTER DATTIM*32,NOTES*16,ASDFGH*78,ELCTRD(2)*15
REAL*4 CHGVLT,TLASER,WCHGV,TL,WTINCR,DENS,WWFM(0:1023),TEMP(5),RHO(4)
REAL*4 RARR(256),FLOW
INTEGER*4 GTYR,GTMO,GTDA,GTHR,GTMIN,GTSEC,GTFR,RUNNUM,SHOTNO,KADDR,HEADRE
INTEGER*4 IXLEN,IYLEN,IIXLEN,IIYLEN,IXNUM,IYNUM,LABOOK,TYPFRM,IARR(256)
INTEGER*2 FLUID(2)
INTEGER*1 BARR(1024),AUX(256)
LOGICAL*4 INTRPS,MODE2D,PICTUR,HEXIT,DATACQ,QWERTY,INITYT
EQUIVALENCE (RARR(1),IARR(1),BARR(1),CARR(1))
EQUIVALENCE (DATTIM,TIMDAT(1)),(TITLE(1),CT(1,1)),(LABEL,CL(1))
EQUIVALENCE (NOTES,NOTES1(1)),(ASDFGH,LKJH(1))
EQUIVALENCE (LCTRDS(1),LCTRD1(1,1))
COMMON /LECTRD/ELCTRD,PLRITY,/CTMPRH/TMP,CRHO,/PTMPRH/PTMP,PRHO,PDENS
COMMON /ASCGAR/DATE,TITLE,LABEL,/FILES/FILNAM,RUNNUM,SHOTNO
COMMON /OMAPAR/IXNUM,IYNUM,INTRPS,MODE2D,PICTUR,HEXIT,DATACQ,FRAME,QWERTY,
IA128,SENBAS,SENDAT
COMMON /OMAPR2/IIXLEN,IIYLEN,IXLEN,IYLEN,IA256,IA512
COMMON /RWNUM/WCHGV,TL,WTINCR,DENS,WWFM,FLUID,AUX,TEMP,RHO,FLOW
COMMON /TIMES/ GTYR,GTMO,GTDA,GTHR,GTMIN,GTSEC,GTFR
COMMON /LBBKRF/NOTES,LABOOK,/TIMDAT/DATTIM,/CARLF/CRLF
COMMON /OMAHED/HEADRE,IARR,/XFRAME/TYPFRM,FRMTYP
SAVE /CTMPRH/,/PTMPRH/,/RWNUM/,/OMAHED/,/XFRAME/
SAVE /CARLF/,/TIMDAT/,/TIMES/,/OMAPAR/,/ASCGAR/,/FILES/,/LBBKRF/,/LECTRD/
DATA INITYT/.FALSE./
HEADRE = KADDR(IARR(0))
IF (.NOT.INITYT) THEN
INITYT = .TRUE.
BLANK = ' '
CR = CHAR(13)
BCR = BLANK//CR
LF = CHAR(10)
CRLF = CR//LF
NUL = CHAR(0)
ENDIF
CALL HITIT(BARR(1),1024,$20202020)
* first
* LABEL then TITLE(1..3); each is 77 char long, padded to 80 chars w/ BLANK,BLAN
K,CR
*
DO 1 I = 1,77
CARR(I) = CL(I)
J = I + 80
CARR(J) = CT(I,1)
J = I + 160
CARR(J) = CT(I,2)
J = I + 240
CARR(J) = CT(I,3)
1 CONTINUE
I = 78
CARR(I) = BLANK
J = I + 80
CARR(J) = BLANK
J = I + 160
CARR(J) = BLANK
J = I + 240
CARR(J) = BLANK
I = 79
CARR(I) = BLANK
J = I + 80
CARR(J) = BLANK
J = I + 160
CARR(J) = BLANK
J = I + 240
CARR(J) = BLANK
CARR(355) = BLANK
I = 80
CARR(I) = CR
J = I + 80
CARR(J) = CR
J = I + 160
CARR(J) = CR
J = I + 240
CARR(J) = CR
CARR(356) = CR
*
* DATE/TIME - 32 char long padded to 34 chars w/ CR/LF
*
CALL DODATE
DO 2 I = 1,30
J = I + 320
CARR(J) = TIMDAT(I)
2 CONTINUE
CARR(351) = BLANK
CARR(352) = CR
CARR(353) = NUL
CARR(354) = CR
CARR(355) = NUL
CARR(356) = CR
*
* Lab Notebook (reference) NUMBER
*
WRITE (NOTES,'(''Notebook #'',I4.4,A2)',ERR=1030) LABOOK,BCR
1030 CONTINUE
DO 3 I = 1,16
J = I + 352
CARR(J) = NOTES1(I)
3 CONTINUE
*
* Electrode data: FIRST electrode is LEFT, SECOND is RIGHT
*
WRITE (LCTRDS(1),'(''LEFT '',A1,'' '',A17)',ERR=1040) PLRITY(1),ELCTRD(1)
//BCR
1040 WRITE (LCTRDS(2),'(''RIGHT '',A1,'' '',A17)',ERR=1041) PLRITY(2),ELCTRD(2)
//BCR
1041 CONTINUE
DO 4 I = 1,25
J = I + 368
CARR(J) = LCTRD1(I,1)
J = I + 393
CARR(J) = LCTRD1(I,2)
4 CONTINUE
*
* POLARIZATION, CHARGING VOLTAGE, LASER TIME DELAY - in printable ASCII
*
WRITE (ASDFGH,'(3P,A2,'' Charging Voltage '',G14.4E3,1X,''kV'',4X,''Laser
Delay '',G14.4E3,'' microSec'',A1)',
1 ERR=1050) POLARZ,CHGVLT,TLASER,CR
1050 CONTINUE
DO 5 I = 1,78
J = I + 418
CARR(J) = LKJH(I)
5 CONTINUE
CARR(497) = NUL
CARR(498) = CR
CARR(499) = NUL
CARR(500) = CR
*
* PARAMETERS in binary (real*4) form: CHGVLT, TLASER, RHO(4), TEMP(5), FLOW,
*
DENS, WCHGV, TL, TINCR
*
RARR(126) = CHGVLT
RARR(127) = TLASER
RARR(128) = RHO(1)
RARR(129) = RHO(2)
RARR(130) = RHO(3)
RARR(131) = RHO(4)
RARR(132) = TEMP(1)
RARR(133) = TEMP(2)
RARR(134) = TEMP(3)
RARR(135) = TEMP(4)
RARR(136) = TEMP(5)
RARR(137) = FLOW
RARR(138) = DENS
RARR(139) = WCHGV
RARR(140) = TL
RARR(141) = TINCR
* FRAMING DATA
IARR(142) = IIXLEN
IARR(143) = IIYLEN
*
IARR(252) = TYPFRM
IARR(253) = RUNNUM
IARR(254) = SHOTNO
IARR(255) = LABOOK
*
FILNAM = ' '
WRITE (FILNAM,'(''R'',I3.3,''S'',I3.3,''.DAT'')') RUNNUM,SHOTNO
I = KADDR(BARR(1))
HEADER = I
RETURN
END
*---------------------------------------------------------------------SUBROUTINE GTHEAD(BUFFER)
CHARACTER*2 POLAR
REAL*4 CHGVLT,TLASER
INTEGER*4 HEADER,BUFFER,IARR(256)
COMMON /OMAHED/HEADER,IARR,/OMANOW/CHGVLT,TLASER,POLAR
CALL IICOPY(BUFFER,HEADER,1024)
CALL RDHEAD(CHGVLT,TLASER,POLAR)
RETURN
END
*---------------------------------------------------------------------SUBROUTINE RDHEAD(CHGVLT,TLASER,POLARZ)
CHARACTER*22 FRMTYP(-2:20)
CHARACTER*20 FRAME,FRAME2,FLNM,DFRAME,INPUTS,INPUT2,TMP(5),CRHO(4),FILNAM
CHARACTER*17 PTMP(5),PRHO(4),PDENS
CHARACTER*2 POLARZ,CRLF,BCR,FUGAR
CHARACTER*1 CARR(1024),LKJH(78),PLRITY(2),LCTRD1(25,2),NOTES1(16)
CHARACTER*1 TIMDAT(32),CR,LF,NUL,BLANK,CT(77,3),CL(77)
CHARACTER*77 ANSWER*4,DATE*10,TITLE(3),LABEL
CHARACTER ELCTRD(2)*15,LCTRDS(2)*25,ASDFGH*78,DATTIM*32,NOTES*16
REAL*4 WCHGV,TL,WTINCR,DENS,WWFM(0:1023),TEMP(5),RHO(4),FLOW
REAL*4 CHGVLT,TLASER,RARR(256)
INTEGER*4 GTYR,GTMO,GTDA,GTHR,GTMIN,GTSEC,GTFR,KADDR,HEADRE,TYPFRM
INTEGER*4 IARR(256),RUNNUM,SHOTNO,LABOOK
INTEGER*4 IXLEN,IYLEN,IIXLEN,IIYLEN,IXNUM,IYNUM
INTEGER*2 FLUID(2)
INTEGER*1 BARR(1024),AUX(256)
LOGICAL*4 INTRPS,MODE2D,PICTUR,HEXIT,DATACQ,QWERTY,INITYT
EQUIVALENCE (RARR(1),IARR(1),BARR(1),CARR(1)),(NOTES,NOTES1(1))
EQUIVALENCE (TITLE(1),CT(1,1)),(LABEL,CL(1)),(DATTIM,TIMDAT(1))
EQUIVALENCE (LCTRDS(1),LCTRD1(1,1)),(ASDFGH,LKJH(1))
COMMON /CTMPRH/TMP,CRHO,/LECTRD/ELCTRD,PLRITY,/PTMPRH/PTMP,PRHO,PDENS
COMMON /CARLF/CRLF,/TIMDAT/DATTIM,/OMAHED/HEADRE,IARR,/XFRAME/TYPFRM,FRMTY
P
COMMON /TIMES/ GTYR,GTMO,GTDA,GTHR,GTMIN,GTSEC,GTFR,/LBBKRF/NOTES,LABOOK
COMMON /OMAPAR/IXNUM,IYNUM,INTRPS,MODE2D,PICTUR,HEXIT,DATACQ,FRAME,QWERTY,
IA128,SENBAS,SENDAT
COMMON /OMAPR2/IIXLEN,IIYLEN,IXLEN,IYLEN,IA256,IA512
COMMON /ASCGAR/DATE,TITLE,LABEL,/FILES/FILNAM,RUNNUM,SHOTNO
COMMON /RWNUM/WCHGV,TL,WTINCR,DENS,WWFM,FLUID,AUX,TEMP,RHO,FLOW
SAVE /CARLF/,/TIMDAT/,/TIMES/,/OMAPAR/,/OMAPR2/,/ASCGAR/,/FILES/,/LBBKRF/
SAVE /CTMPRH/,/PTMPRH/,/LECTRD/,/RWNUM/,/OMAHED/,/XFRAME/
DATA INITYT/.FALSE./
IF (.NOT.INITYT) THEN
HEADRE = KADDR(IARR(1))
INITYT = .TRUE.
BLANK = ' '
CR = CHAR(13)
BCR = BLANK//CR
LF = CHAR(10)
CRLF = CR//LF
NUL = CHAR(0)
*
FRMTYP(-2) = ' *** UNINITIALIZED *** '
*
FRMTYP(-1) = 'Zero Correction Data'
*
FRMTYP(0) = 'RAW Data no Zero corr'
*
FRMTYP(1) = 'Zero Corrected Data'
*
FRMTYP(2) = 'Simulated data'
*
FRMTYP(3) = 'Normalized no Zero cor'
*
*
*
*
*
RHO(2) = RARR(129)
RHO(3) = RARR(130)
RHO(4) = RARR(131)
TEMP(1) = RARR(132)
TEMP(2) = RARR(133)
TEMP(3) = RARR(134)
TEMP (4) = RARR(135)
TEMP(5) = RARR(136)
FLOW = RARR(137)
DENS = RARR(138)
WCHGV = RARR(139)
TL = RARR(140)
TINCR = RARR(141)
* FRAMING DATA
IIXLEN = IARR(142)
IXLEN = IIXLEN
IXNUM = IXLEN
IIYLEN = IARR(143)
IYLEN = IIYLEN
IYNUM = IYLEN
*
TYPFRM = IARR(252)
RUNNUM = IARR(253)
SHOTNO = IARR(254)
LABOOK = IARR(255)
*
*
FILNAM = ' '
*
WRITE (FILNAM,'(''R'',I3.3,''S'',I3.3,''.DAT'')') RUNNUM,SHOTNO
RETURN
END
*---------------------------------------------------------------------SUBROUTINE ST0FRM(IT,LX,LY,TYP,NN,IDRIVE)
CHARACTER*(*) INFILE
CHARACTER*20 FILE,DFRAME,DTFRM*10,POLAR*2,MGFRMN(2)*1,C1(200)*1
CHARACTER*8 HAPS(32)
REAL*8 R8(25)
REAL*4 WFMS(0:1023,-10:11),WFMA(0:1023),CHGVLT,TINCR
REAL*4 WCHGV,TL,WTINCR,DENS,WWFM(0:1023),TEMP(5),RHO(4),FLOW
REAL*4 WFM0(0:1023),PWFM0(0:1023),WFM1(0:1023),PWFM1(0:1023),TIME(0:1023)
REAL*4 WFM2(0:1023),PWFM2(0:1023),WFM3(0:1023),PWFM3(0:1023)
REAL*4 WFM4(0:1023),PWFM4(0:1023),WFM5(0:1023),PWFM5(0:1023)
REAL*4 WFM6(0:1023),PWFM6(0:1023),WFM7(0:1023),PWFM7(0:1023)
REAL*4 WFM8(0:1023),PWFM8(0:1023),WFM9(0:1023),PWFM9(0:1023)
REAL*4 CHRGV,TLASER,R4(50),RS4(49)
INTEGER*4 LX,LY,TYP,N,DRIVE,LLX,LLY,JX,JY,HEADRE,IARR(256),RUNNUM,SHOTNO
INTEGER*4 ERROR,RECLEN,FREC,JTYP,OTHERW,SCRCHW,LLCTRD,RLCTRD,BLCTRD,TLCTRD
INTEGER*4 P4(50),PS4(49),PRPDUN,IAPS(32),LENS(32)
INTEGER*2 WFM0DX,WFM1DX,TENCPI,SXTNCP,FLUID(2),NOPNTS,PRPNTS
INTEGER*2 IT(131072),IDTFRM,CSZ,W,H,ZILCH2,FPCKTA(100),P(100)
INTEGER*2 INDXB,INDXE,INDYB,INDYE,VCTRLN,HCTRLN,VCNTRL,HCNTRL
INTEGER*2 POINTY(4,2,256),POINTB(8,256),POINTX(4,2,512),POINTA(8,512)
INTEGER*2 LINEY(256),LINEX(512),YREGS(0:3),XREGS(0:3),PROGX(10,4)
INTEGER*2 PROGY(10,4),PROGNX(512,4),PROGNY(256,4)
INTEGER*2 PATH1X,PATH1Y,PATH2X,PATH2Y,PATH3X,PATH3Y,KI,KJ
INTEGER*2 PATH(2,5),PATH4X,PATH4Y,PATH5X,PATH5Y,IXBEG,IYBEG,IXEND,IYEND
INTEGER*1 TI(22,2),AUX(256),P1(200)
LOGICAL*4 FILEXS, L4(50),LS4(49)
LOGICAL*2 DONE,TEK468,TK7854,TK7D20,L2(100)
LOGICAL*2 MGLR,MGUD,MGOTHR,MGOK,BLCTOK,TLCTOK,PTHDUN
LOGICAL*1 DISK,END,PARAM,FUBAR,NCOOL,DEFDRV,DOLONG,DOIMG,L1(200)
EQUIVALENCE
EQUIVALENCE
EQUIVALENCE
EQUIVALENCE
EQUIVALENCE
EQUIVALENCE
EQUIVALENCE
EQUIVALENCE
EQUIVALENCE
EQUIVALENCE
EQUIVALENCE
EQUIVALENCE
EQUIVALENCE
EQUIVALENCE
EQUIVALENCE
EQUIVALENCE
EQUIVALENCE
EQUIVALENCE
EQUIVALENCE
EQUIVALENCE
(IDTFRM,DTFRM,TI(1,1)),(TI(11,1),JX),(TI(15,1),JY)
(WFMS(0,11),WFMA(0)),(TI(19,1),JTYP)
(TIME(0),WFMS(0,0)),(WFM0(0),WFMS(0,1)),(WFM1(0),WFMS(0,2))
(PWFM0(0),WFMS(0,-1)),(PWFM1(0),WFMS(0,-2))
(WFM2(0),WFMS(0,3)),(WFM3(0),WFMS(0,4))
(PWFM2(0),WFMS(0,-3)),(PWFM3(0),WFMS(0,-4))
(WFM4(0),WFMS(0,5)),(WFM5(0),WFMS(0,6))
(PWFM4(0),WFMS(0,-5)),(PWFM5(0),WFMS(0,-6))
(WFM6(0),WFMS(0,7)),(WFM7(0),WFMS(0,8))
(PWFM6(0),WFMS(0,-7)),(PWFM7(0),WFMS(0,-8))
(WFM8(0),WFMS(0,9)),(WFM9(0),WFMS(0,10))
(PWFM8(0),WFMS(0,-9)),(PWFM9(0),WFMS(0,-10))
(POINTY(1,1,1),POINTB(1,1)),(POINTX(1,1,1),POINTA(1,1))
(VCNTRL,VCTRLN),(HCNTRL,HCTRLN)
(PATH(1,1),PATH1X),(PATH(2,1),PATH1Y)
(PATH(1,2),PATH2X),(PATH(2,2),PATH2Y)
(PATH(1,3),PATH3X),(PATH(2,3),PATH3Y)
(PATH(1,4),PATH4X),(PATH(2,4),PATH4Y)
(PATH(1,5),PATH5X),(PATH(2,5),PATH5Y)
(FPCKTA(1),P(1),P4(1),P1(1),L4(1),L2(1),L1(1),R8(1),R4(1),C1(1
))
EQUIVALENCE (PS4(1),RS4(1),LS4(1),P(3))
COMMON /FILES/DFRAME,RUNNUM,SHOTNO,/OMAHED/HEADRE,IARR,/OMANOW/CHGVLT,TLAS
ER,POLAR
COMMON /WFMS/WFMS,/PNTS/PRPNTS,NOPNTS,/SCTYPE/TEK468,TK7854,TK7D20
COMMON /RWNUM/WCHGV,TL,WTINCR,DENS,WWFM,FLUID,AUX,TEMP,RHO,FLOW
COMMON /GARBAG/ERROR,DISK,END,PARAM,FUBAR,WFM0DX,WFM1DX,CHRGV,TINCR,
1FREC,RECLEN,TENCPI,SXTNCP,/WFMFOO/OTHERW,SCRCHW
COMMON /OMALBL/DONE,/I2ENML/LOWCUT,IHICUT,/FUNPKT/FPCKTA
COMMON /MGFORM/LINEX,LINEY,POINTY,POINTX,IXBEG,IYBEG,IXEND,IYEND
COMMON /MGSTAT/YREGS,XREGS,PROGX,PROGY,PROGNX,PROGNY,KI,KJ,INDXB,INDXE,IND
YB,INDYE
COMMON /MGFRAM/MGFRMN,MGLR,MGUD,MGOTHR,MGOK,/MGPATH/PATH,PTHDUN
COMMON /FETURE/LLCTRD,RLCTRD,BLCTRD,TLCTRD,VCNTRL,HCNTRL,BLCTOK,TLCTOK
COMMON /OMACNT/IAPS,HAPS,LENS
SAVE /WFMS/,/RWNUM/,/SCTYPE/,/GARBAG/,/PNTS/,/FILES/,/OMAHED/,/OMALBL/
SAVE /MGPATH/,/I2ENML/,/MGFORM/,/MGSTAT/,/FETURE/,/MGFRAM/,/WFMFOO/
SAVE /FUNPKT/,/OMACNT/
EXTERNAL LABELS,OMAFNM,LAB3LS,PRPDUN
SAVE
*
IRUN = (NN/1000)
DOLONG = IRUN .GT. 0
N = MOD(NN,1000)
DOIMG = IRUN .LT. 0 .OR. N .LT. 0
IF (DOLONG.AND.N.EQ.0.AND.SHOTNO.GE.0.AND.SHOTNO.LE.999) N = SHOTNO
DRIVE = IDRIVE
JTRIES = 0
NCOOL = N .NE. 0
IF (IRUN.GE.1000.OR.IRUN.LE.-1000) THEN
IRUN = 0
N = 0
DOIMG = .TRUE.
NCOOL = .TRUE.
ENDIF
DEFDRV = IDRIVE.EQ.-1 .OR. IDRIVE.EQ.10
IF (.NOT.NCOOL) THEN
DO 1 I = 0,999
N = I
CALL OMAFNM(FILE,IRUN,I,DRIVE)
INQUIRE (FILE=FILE,EXIST=FILEXS)
IF (.NOT.FILEXS) GOTO 3
CONTINUE
GOTO 9000
CONTINUE
1
3
ELSE
CALL OMAFNM(FILE,IRUN,N,DRIVE)
ENDIF
9010 CONTINUE
OPEN (10,FILE=FILE,STATUS='NEW',FORM='BINARY',ERR=7000)
7000 CLOSE (10,ERR=7001)
7001 OPEN (10,FILE=FILE,STATUS='NEW',FORM='BINARY',ERR=9000)
IF (DOLONG) THEN
RUNNUM = IRUN
SHOTNO = N
IF (.NOT.DONE) THEN
CALL SETPG0
CALL GCRCLS
PRINT *,' '
PRINT *,' PLEASE ENTER RELEVANT RUN PARAMETERS AS PROMPTED '
CALL WAIT(1.2)
CALL LAB3LS
ENDIF
CALL SETPG0
CALL GCRCLS
PRINT *,' '
PRINT *,' PLEASE ENTER RELEVANT SHOT PARAMETERS AS PROMPTED '
CALL WAIT(1.2)
CALL GLABEL(CHGVLT,TLASER,POLAR)
IJ = HEADER(CHGVLT,TLASER,POLAR)
CALL SWRITE(10,IARR(1),1024,0,0,0,IERROR)
IF (IERROR.NE.0) THEN
PRINT *,'HEADER WRITE ERROR = ',IERROR,' TRYING RECOVERY'
REWIND (10)
WRITE (10,ERR=9002) (IARR(IJK),IJK=1,256)
GOTO 8999
ENDIF
ELSEIF (DOIMG) THEN
W = LX
H = LY
CSZ = 10
ZILCH2 = 0
WRITE (10,ERR=9500) 'IM',CSZ,W,H,(ZILCH2,I=1,28),'OMA FRAME '
* WRITE .IMG GOES HERE
IFOO = INDST2(LX,LY)
WRITE (10,ERR=9501) (IT(I),I=1,IFOO)
GOTO 9599
9500
CONTINUE
PRINT *,' ERROR WRITING IMAGEACTION FORMAT HEADER '
REWIND (10,ERR=9598)
9501
CONTINUE
PRINT *,' ERROR WRITING IMAGEACTION FORMAT FILE'
REWIND (10,ERR=9598)
9598
CONTINUE
CLOSE (UNIT=10,ERR=9599,STATUS='DELETE')
9599
CONTINUE
CLOSE (UNIT=10,ERR=9597,STATUS='KEEP')
9597
CONTINUE
RETURN
ENDIF
9900
9994
9001
9095
9700
ENDIF
RETURN
9000 CONTINUE
NN = -1
GOTO 9001
9002 CONTINUE
NN = -2
GOTO 9001
9003 CONTINUE
NN = -3
GOTO 9001
9005 CONTINUE
NN = -5
GOTO 9001
9006 CONTINUE
NN = -6
GOTO 9001
9004 CONTINUE
NN = -10
GOTO 9001
9011 CONTINUE
NN = -11
GOTO 9001
9012 CONTINUE
NN = -12
GOTO 9001
9013 CONTINUE
NN = -13
GOTO 9001
9014 CONTINUE
NN = -14
GOTO 9001
9015 CONTINUE
NN = -15
GOTO 9001
9016 CONTINUE
NN = -16
GOTO 9001
9017 CONTINUE
NN = -17
GOTO 9001
9018 CONTINUE
NN = -18
GOTO 9001
9019 CONTINUE
NN = -19
GOTO 9001
9020 CONTINUE
NN = -20
GOTO 9001
9021 CONTINUE
NN = -21
GOTO 9001
9022 CONTINUE
NN = -22
GOTO 9001
9023 CONTINUE
NN = -23
GOTO 9001
*----------
8000
8001
8998
8999
8997
*
8996
8995
8994
8993
*
ENTRY ST04FM(IT,LX,LY,TYP,INFILE)
CALL FNCHCK(INFILE,'DAT',FILE)
DOLONG = .TRUE.
GOTO 9010
FORMAT ('FRAME',I3.3,'.DAT')
FORMAT (I1,':FRAME',I3.3,'.DAT')
CONTINUE
REWIND (10)
GOTO 8997
CONTINUE
PRINT *,' FRAME WRITE ERROR = ',IERROR,' TRYING RECOVERY '
CONTINUE
DTFRM = 'Data Frame'
JX = LX
JY = LY
JTYP = TYP
WRITE (10,ERR=9002) (TI(I,1),I=1,22)
IFOO = INDST2(LX,LY)
WRITE (10,ERR=9003) (IT(I),I=1,IFOO)
IF (NOPNTS.EQ.0.OR..NOT.(TEK468.OR.TK7854.OR.TK7D20)) GOTO 9900
CONTINUE
IF (.NOT.(NOPNTS.EQ.0.OR..NOT.(TEK468.OR.TK7854.OR.TK7D20))) THEN
DTFRM = 'Waveform: '
JX = WFM0DX
JY = WFM1DX
JTYP = NOPNTS
WRITE (10,ERR=9005) (TI(I,1),I=1,22)
ENDIF
CONTINUE
IF (.NOT.(NOPNTS.EQ.0.OR..NOT.(TEK468.OR.TK7854.OR.TK7D20))) THEN
WRITE (10,ERR=9006) (TIME(I),I=0,NOPNTS-1)
ENDIF
CONTINUE
IF (.NOT.(NOPNTS.EQ.0.OR..NOT.(TEK468.OR.TK7854.OR.TK7D20))) THEN
WRITE (10,ERR=9006) (PWFM0(I),I=0,NOPNTS-1)
ENDIF
CONTINUE
IF (.NOT.(NOPNTS.EQ.0.OR..NOT.(TEK468.OR.TK7854.OR.TK7D20))) THEN
WRITE (10,ERR=9006) (PWFM1(I),I=0,NOPNTS-1)
IF (OTHERW.NE.0) WRITE (10,ERR=9006) (WFMS(I,-(OTHERW+1)),I=0,NOPNTS-1
)
*
8992
8896
8895
8894
8893
8892 CONTINUE
WRITE (10,ERR=9015)
8891 CONTINUE
WRITE (10,ERR=9016)
8890 CONTINUE
WRITE (10,ERR=9017)
8889 CONTINUE
WRITE (10,ERR=9018)
8888 CONTINUE
WRITE (10,ERR=9019)
8887 CONTINUE
WRITE (10,ERR=9020)
8886 CONTINUE
WRITE (10,ERR=9021)
8885 CONTINUE
WRITE (10,ERR=9022)
8884 CONTINUE
WRITE (10,ERR=9023)
&
&
&
((POINTA(J,I),J=1,8),I=1,512)
((POINTB(J,I),J=1,8),I=1,256)
((PROGX(J,I),J=1,10),I=1,4)
((PROGY(J,I),J=1,10),I=1,4)
((PROGNX(J,I),J=1,512),I=1,4)
((PROGNY(J,I),J=1,256),I=1,4)
((PATH(J,I),J=1,2),I=1,5)
PTHDUN
MGFRMN(1),MGFRMN(2),LLCTRD,RLCTRD,BLCTRD,TLCTRD,
INDXB,INDXE,INDYB,INDYE,VCNTRL,HCNTRL,KI,KJ,
IXBEG,IYBEG,IXEND,IYEND,MGLR,MGUD,MGOTHR,MGOK,
BLCTOK,TLCTOK
*
GOTO 9900
END
*---------------------------------------------------------------------SUBROUTINE STOFRM(IT,LX,LY,TYP,N)
INTEGER*4 LX,LY,TYP,N
INTEGER*2 IT(1:LX,1:LY)
CALL ST0FRM(IT(1,1),LX,LY,TYP,N,-1)
RETURN
END
*---------------------------------------------------------------------SUBROUTINE IST0FM(IT,LX,LY,TYP,N,DRIVE)
INTEGER*4 LX,LY,TYP,N,IT,KADDR,DRIVE
INTEGER*4 ILX,ILY,ITYP,IN,IDRIVE,IIT
EXTERNAL ST0FRM,CALL6,KADDR
SAVE
IIT = IT
ILX = KADDR(LX)
ILY = KADDR(LY)
ITYP = KADDR(TYP)
IN = KADDR(N)
IDRIVE = KADDR(DRIVE)
CALL CALL6(ST0FRM,IIT,ILX,ILY,ITYP,IN,IDRIVE)
RETURN
END
*---------------------------------------------------------------------SUBROUTINE ISTOFM(IT,LX,LY,TYP,N)
INTEGER*4 LX,LY,TYP,N,IT,KADDR
INTEGER*4 ILX,ILY,ITYP,IN,IIT
EXTERNAL STOFRM,CALL5,KADDR
SAVE
IIT = IT
ILX = KADDR(LX)
ILY = KADDR(LY)
ITYP = KADDR(TYP)
IN = KADDR(N)
CALL CALL5(STOFRM,IIT,ILX,ILY,ITYP,IN)
RETURN
END
*---------------------------------------------------------------------SUBROUTINE GETFRM(IT,LX,LY,TYP,N)
INTEGER*4 LX,LY,TYP,N
INTEGER*2 IT(1:LX,1:LY)
CALL G3TFRM(IT(1,1),LX,LY,TYP,N,-1)
RETURN
END
*---------------------------------------------------------------------SUBROUTINE IGETFM(IT,LX,LY,TYP,N)
INTEGER*4 LX,LY,TYP,N,IT,KADDR
INTEGER*4 ILX,ILY,ITYP,IN,IIT
EXTERNAL GETFRM,CALL5,KADDR
SAVE
IIT = IT
ILX = KADDR(LX)
ILY = KADDR(LY)
ITYP = KADDR(TYP)
IN = KADDR(N)
CALL CALL5(GETFRM,IIT,ILX,ILY,ITYP,IN)
RETURN
END
*---------------------------------------------------------------------SUBROUTINE IG3TFM(IT,LX,LY,TYP,N,DRIVE)
INTEGER*4 LX,LY,TYP,N,IT,KADDR,DRIVE
INTEGER*4 ILX,ILY,ITYP,IN,IDRIVE,IIT
EXTERNAL G3TFRM,CALL6,KADDR
SAVE
IIT = IT
ILX = KADDR(LX)
ILY = KADDR(LY)
ITYP = KADDR(TYP)
IN = KADDR(N)
IDRIVE = KADDR(DRIVE)
CALL CALL6(G3TFRM,IIT,ILX,ILY,ITYP,IN,IDRIVE)
RETURN
END
*---------------------------------------------------------------------SUBROUTINE G3TFRM(IT,LX,LY,TYP,NN,IDRIVE)
CHARACTER*(*) INFILE
CHARACTER*22 FRMTYP(-2:20),TITLE(3)*77,LABEL*77,CIM*2,CMMENT*255
CHARACTER*20 FILE,DFRAME,DTFRM*10,POLAR*2,DATE*10,FILE2,TC*1,MGFRMN(2)*1
CHARACTER*1 C1(200)
REAL*8 R8(25)
REAL*4 CHGVLT,TLASER,WFMS(0:1023,-10:11),WFMA(0:1023),CHRGV,TINCR
REAL*4 WCHGV,TL,WTINCR,DENS,WWFM(0:1023),TEMP(5),RHO(4),FLOW,R4(50)
REAL*4 WFM0(0:1023),PWFM0(0:1023),WFM1(0:1023),PWFM1(0:1023),TIME(0:1023)
REAL*4 WFM2(0:1023),PWFM2(0:1023),WFM3(0:1023),PWFM3(0:1023),RS4(49)
REAL*4 WFM4(0:1023),PWFM4(0:1023),WFM5(0:1023),PWFM5(0:1023)
REAL*4 WFM6(0:1023),PWFM6(0:1023),WFM7(0:1023),PWFM7(0:1023)
REAL*4 WFM8(0:1023),PWFM8(0:1023),WFM9(0:1023),PWFM9(0:1023)
INTEGER*4 LX,LY,TYP,N,DRIVE,LLX,LLY,JX,JY,HEADRE,IARR(256),RUNNUM,SHOTNO
INTEGER*4 TYPFRM,ERROR,RECLEN,FREC,IMCMT,LLCTRD,RLCTRD,BLCTRD,TLCTRD
INTEGER*4 LOWCUT,IHICUT,PRPDUN,P4(50),PS4(49)
INTEGER*2 WFM0DX,WFM1DX,TENCPI,SXTNCP,FLUID(2),NOPNTS,PRPNTS
INTEGER*2 IT(131072),IDTFRM,IM,JJC,JJX,JJY,FPCKTA(100),P(100)
INTEGER*2 INDXB,INDXE,INDYB,INDYE,VCTRLN,HCTRLN,VCNTRL,HCNTRL
INTEGER*2 POINTY(4,2,256),POINTB(8,256),POINTX(4,2,512),POINTA(8,512)
INTEGER*2 LINEY(256),LINEX(512),YREGS(0:3),XREGS(0:3),PROGX(10,4)
INTEGER*2 PROGY(10,4),PROGNX(512,4),PROGNY(256,4),I2
INTEGER*2 PATH1X,PATH1Y,PATH2X,PATH2Y,PATH3X,PATH3Y,KI,KJ
INTEGER*2 PATH(2,5),PATH4X,PATH4Y,PATH5X,PATH5Y,IXBEG,IYBEG,IXEND,IYEND
INTEGER*1 AUX(256),P1(200)
LOGICAL*4 FILEXS,L4(50),LS4(49)
LOGICAL*2 TEK468,TK7854,TK7D20,MGLR,MGUD,MGOTHR,MGOK,BLCTOK,TLCTOK,PTHDUN
LOGICAL*2 L2(100)
LOGICAL*1 DISK,END,PARAM,FUBAR,NCOOL,DEFDRV,DOLONG,RETRY,DOIMG
LOGICAL*1 LNGTRD,IMGTRD,SHRTRD, L1(200)
EQUIVALENCE (DTFRM,IDTFRM),(IM,CIM),(IMCNT,CMMENT),(WFMS(0,11),WFMA(0))
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))
EQUIVALENCE (WFM2(0),WFMS(0,3)),(WFM3(0),WFMS(0,4))
EQUIVALENCE (PWFM2(0),WFMS(0,-3)),(PWFM3(0),WFMS(0,-4))
EQUIVALENCE (WFM4(0),WFMS(0,5)),(WFM5(0),WFMS(0,6))
EQUIVALENCE (PWFM4(0),WFMS(0,-5)),(PWFM5(0),WFMS(0,-6))
EQUIVALENCE (WFM6(0),WFMS(0,7)),(WFM7(0),WFMS(0,8))
EQUIVALENCE (PWFM6(0),WFMS(0,-7)),(PWFM7(0),WFMS(0,-8))
EQUIVALENCE (WFM8(0),WFMS(0,9)),(WFM9(0),WFMS(0,10))
EQUIVALENCE (PWFM8(0),WFMS(0,-9)),(PWFM9(0),WFMS(0,-10))
EQUIVALENCE (POINTY(1,1,1),POINTB(1,1)),(POINTX(1,1,1),POINTA(1,1))
EQUIVALENCE (VCNTRL,VCTRLN),(HCNTRL,HCTRLN)
EQUIVALENCE (PATH(1,1),PATH1X),(PATH(2,1),PATH1Y)
EQUIVALENCE (PATH(1,2),PATH2X),(PATH(2,2),PATH2Y)
EQUIVALENCE (PATH(1,3),PATH3X),(PATH(2,3),PATH3Y)
EQUIVALENCE (PATH(1,4),PATH4X),(PATH(2,4),PATH4Y)
EQUIVALENCE (PATH(1,5),PATH5X),(PATH(2,5),PATH5Y)
EQUIVALENCE (FPCKTA(1),P(1),P4(1),P1(1),L4(1),L2(1),L1(1),R8(1),R4(1),C1(1
))
EQUIVALENCE (PS4(1),RS4(1),LS4(1),P(3))
COMMON /FILES/DFRAME,RUNNUM,SHOTNO,/OMAHED/HEADRE,IARR,/OMANOW/CHGVLT,TLAS
ER,POLAR
COMMON /XFRAME/TYPFRM,FRMTYP,/ASCGAR/DATE,TITLE,LABEL
COMMON /WFMS/WFMS,/PNTS/PRPNTS,NOPNTS,/SCTYPE/TEK468,TK7854,TK7D20
COMMON /RWNUM/WCHGV,TL,WTINCR,DENS,WWFM,FLUID,AUX,TEMP,RHO,FLOW
COMMON /GARBAG/ERROR,DISK,END,PARAM,FUBAR,WFM0DX,WFM1DX,CHRGV,TINCR,
1FREC,RECLEN,TENCPI,SXTNCP
COMMON /I2ENML/LOWCUT,IHICUT
COMMON /MGFORM/LINEX,LINEY,POINTY,POINTX,IXBEG,IYBEG,IXEND,IYEND
COMMON /MGSTAT/YREGS,XREGS,PROGX,PROGY,PROGNX,PROGNY,KI,KJ,INDXB,INDXE,IND
YB,INDYE
COMMON /MGFRAM/MGFRMN,MGLR,MGUD,MGOTHR,MGOK,/MGPATH/PATH,PTHDUN
COMMON /FETURE/LLCTRD,RLCTRD,BLCTRD,TLCTRD,VCNTRL,HCNTRL,BLCTOK,TLCTOK
COMMON /FUNPKT/FPCKTA
SAVE /WFMS/,/RWNUM/,/SCTYPE/,/GARBAG/,/PNTS/,/OMAHED/,/XFRAME/,/ASCGAR/
SAVE /FILES/,/MGPATH/,/I2ENML/,/MGFORM/,/MGSTAT/,/FETURE/,/MGFRAM/
SAVE /FUNPKT/
EXTERNAL PRPDUN
SAVE
*
IRUN = (NN/1000)
DOIMG = NN .LE. 0
DOLONG = IRUN .NE. 0 .AND. (.NOT.DOIMG)
N = MOD(NN,1000)
IF (DOLONG.AND.N.EQ.0.AND.SHOTNO.GE.0.AND.SHOTNO.LE.999) N = SHOTNO
DRIVE = IDRIVE
JTRIES = 0
IF (IRUN.GE.1000.OR.IRUN.LE.-1000) THEN
IRUN = 0
N = 0
DOIMG = .TRUE.
ENDIF
1
3
9090
9010
9110
ENDIF
IF (CIM.NE.'IM'.AND.CIM.NE.'im') GOTO 9106
CHGVLT = 0.0
TLASER = 0.0
POLAR = ' '
* bytes 2,3 size of command area
CALL SREAD(10,JJC,2,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8998
* bytes 4,5 width of image
CALL SREAD(10,JJX,2,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8998
LX = JJX
* bytes 6,7 height of image
CALL SREAD(10,JJY,2,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8998
LY = JJY
* bytes 8,9 x pos. 10,11 y pos -- ignored
CALL SREAD(10,JX,4,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8998
* bytes 12,13 = file type flag
CALL SREAD(10,JJF,2,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8998
IF (JJF.NE.0) THEN
PRINT *,'File is NON-STANDARD ImageAction format'
IF (JJF.EQ.1) THEN
PRINT *,'IMAGE IS COMPRESSED'
ELSEIF (JJF.EQ.2) THEN
PRINT *,'IMAGE IS SPECIAL'
ELSE
PRINT *,'IMAGE IS UNKNOWN TYPE'
ENDIF
GOTO 9002
ENDIF
* next 50 bytes are RESERVED
* SKIP REST OF HEADER
CALL SREAD(10,ICMNT,50,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8998
CMMENT = ' '
* after which are comments, if any ...
IF (JJC.NE.0) THEN
IJC = JJC
CALL SREAD(10,ICMNT,ICJ,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8998
ENDIF
** READ IM FRAME HERE ...
LLX = JJX
LLY = JJY
IFOO = LX*LY
IBAR = IFOO * 2
IWH = 1
DOIMG = .TRUE.
DOLONG = .FALSE.
GOTO 5002
ELSE
SHRTRD = .TRUE.
CALL SREAD(10,IDTFRM,10,0,0,0,IERROR)
IF (IERROR.NE.0) THEN
CALL REWIND(10)
READ (10,ERR=9002,END=9107) DTFRM
ENDIF
CALL SREAD(10,IDTFRM,10,0,0,0,IERROR)
IF (IERROR.EQ.8.OR.IERROR.EQ.$85) GOTO 9091
IF (IERROR.NE.0) GOTO 8897
IF (DTFRM.NE.'Path Info:'.AND.DTFRM.NE.'PATH INFO:') GOTO 9071
I = PRPDUN()
IF (I.NE.0) GOTO 9071
*
9081 CONTINUE
CALL SREAD(10,I,4,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8896
LOWCUT = I
CALL SREAD(10,I,4,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8895
IHICUT = I
CALL SREAD(10,LINEX(1),1024,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8894
CALL SREAD(10,LINEY(1),512,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8893
CALL SREAD(10,POINTA(1,1),8192,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8892
CALL SREAD(10,POINTB(1,1),4096,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8891
CALL SREAD(10,PROGX(1,1),80,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8890
CALL SREAD(10,PROGY(1,1),80,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8889
CALL SREAD(10,PROGNX(1,1),4096,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8888
CALL SREAD(10,PROGNY(1,1),2048,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8887
CALL SREAD(10,PATH(1,1),20,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8886
CALL SREAD(10,PTHDUN,2,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8885
CALL SREAD(10,P(1),56,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8884
MGFRMN(1) = C1(1)
MGFRMN(2) = C1(2)
LLCTRD = PS4(1)
RLCTRD = PS4(2)
BLCTRD = PS4(3)
TLCTRD = PS4(4)
INDXB = P(10)
INDXE = P(11)
INDYB = P(12)
INDYE = P(13)
VCNTLR = P(14)
HCNTLR = P(15)
KI = P(16)
KJ = P(17)
IXBEG = P(18)
IYBEG = P(19)
IXEND = P(20)
IYEND = P(21)
MGLR = L2(22)
MGUD = L2(23)
MGOTHR = L2(24)
MGOK = L2(25)
BLCTOK = L2(26)
TLCTOK = L2(27)
*
9071 CONTINUE
9091 CONTINUE
CLOSE (10,STATUS='KEEP',ERR=9001)
9001 CONTINUE
RETURN
9002 CONTINUE
NN = -2
GOTO 9001
9003 CONTINUE
NN = -3
GOTO 9001
9004 CONTINUE
NN = -4
GOTO 9001
9006 CONTINUE
NN = -6
GOTO 9001
9011 CONTINUE
NN = -11
GOTO 9001
9012 CONTINUE
NN = -12
GOTO 9001
9013 CONTINUE
NN = -13
GOTO 9001
9014 CONTINUE
NN = -14
GOTO 9001
9015 CONTINUE
NN = -15
GOTO 9001
9016 CONTINUE
NN = -16
GOTO 9001
9017 CONTINUE
NN = -17
GOTO 9001
9018 CONTINUE
NN = -18
GOTO 9001
9019 CONTINUE
NN = -19
GOTO 9001
9020 CONTINUE
NN = -20
GOTO 9001
9021 CONTINUE
NN = -21
GOTO 9001
9022 CONTINUE
NN = -22
GOTO 9001
9023 CONTINUE
NN = -23
GOTO 9001
9107 CONTINUE
IF (.NOT.DOLONG) GOTO 9000
9106 CONTINUE
IF (.NOT.RETRY) THEN
DOLONG = .NOT. LNGTRD
DOIMG = .NOT. IMGTRD
CALL REWIND(10)
RETRY = (LNGTRD.AND.IMGTRD) .OR. (LNGTRD.AND.SHRTRD) .OR. (SHRTRD.AND.
IMGTRD)
GOTO 9110
ENDIF
9005 CONTINUE
9000 CONTINUE
IF (DEFDRV.AND.NCOOL) THEN
IF (JTRIES.LE.1) THEN
DRIVE = 4
CLOSE (UNIT=10,ERR=9090)
GOTO 9090
ELSE
DRIVE = DRIVE + 1
IF (DRIVE.EQ.10) DRIVE = 0
IF (DRIVE.NE.4) THEN
CLOSE (UNIT=10,ERR=9090)
GOTO 9090
ENDIF
ENDIF
ELSEIF (DEFDRV.AND.JTRIES.LT.10) THEN
GOTO 9090
ENDIF
NN = -1
GOTO 9001
*---------ENTRY G3T4FM(IT,LX,LY,TYP,INFILE)
CALL FNCHCK(INFILE,'DAT',FILE)
NCOOL = .FALSE.
DEFDRV = .TRUE.
DOLONG = .TRUE.
GOTO 9010
8000 FORMAT ('FRAME',I3.3,'.DAT')
8001 FORMAT (I1,':FRAME',I3.3,'.DAT')
8998 CONTINUE
PRINT *,'FRAME READ ERROR = ',IERROR,' ATTEMPTING RECOVERY'
CALL REWIND(10)
READ (10,ERR=9002,END=9107) DTFRM,JX,JY,TYP
IF (DTFRM.NE.'Data Frame'.AND.DTFRM.NE.'DATA FRAME') THEN
CALL REWIND(10)
READ (10,ERR=9002,END=9106) (IARR(IJK),IJK=1,256)
READ (10,ERR=9002,END=9107) DTFRM,JX,JY,TYP
IF (DTFRM.NE.'Data Frame'.AND.DTFRM.NE.'DATA FRAME') GOTO 9106
CALL RDHEAD(CHGVLT,TLASER,POLAR)
ELSE
CHGVLT = 0.0
TLASER = 0.0
POLAR = ' '
ENDIF
LX = JX
LY = JY
LLX = JX
LLY = JY
IFOO = LX*LY
READ (10,ERR=9003,END=9107) (IT(I),I=1,IFOO)
*
8997 CONTINUE
8996
8995
8994
8993
8992
8991
NOPNTS = 0
WFM0DX = 0
WFM1DX = 0
READ (10,ERR=9091,END=9091) DTFRM
IF (DTFRM.NE.'Waveform: '.AND.DTFRM.NE.'WAVEFORM: ') GOTO 9091
CONTINUE
READ (10,ERR=9004,END=9091) I
WFM0DX = I
CONTINUE
READ (10,ERR=9004,END=9091) I
WFM1DX = I
CONTINUE
READ (10,ERR=9004,END=9091) I
NOPNTS = I
CONTINUE
READ (10,ERR=9006,END=9091) (TIME(I),I=0,NOPNTS-1)
CONTINUE
READ (10,ERR=9006,END=9091) (PWFM0(I),I=0,NOPNTS-1)
CONTINUE
READ (10,ERR=9006,END=9091) (PWFM1(I),I=0,NOPNTS-1)
READ (10,ERR=9091,END=9091) (WFM0(I),I=0,NOPNTS-1)
READ (10,ERR=9091,END=9091) (WFM1(I),I=0,NOPNTS-1)
*
8897 CONTINUE
READ (10,ERR=9091,END=9091) DTFRM
IF (DTFRM.NE.'Path Info:'.AND.DTFRM.NE.'PATH INFO:') GOTO 9071
GOTO 9091
8896 CONTINUE
READ (10,ERR=9011,END=9091) I
LOWCUT = I
8895 CONTINUE
READ (10,ERR=9012,END=9091) I
IHICUT = I
8894 CONTINUE
READ (10,ERR=9013,END=9091) (LINEX(I),I=1,512)
8893 CONTINUE
READ (10,ERR=9014,END=9091) (LINEY(I),I=1,256)
8892 CONTINUE
READ (10,ERR=9015,END=9091) ((POINTA(J,I),J=1,8),I=1,512)
8891 CONTINUE
READ (10,ERR=9016,END=9091) ((POINTB(J,I),J=1,8),I=1,256)
8890 CONTINUE
READ (10,ERR=9017,END=9091) ((PROGX(J,I),J=1,10),I=1,4)
8889 CONTINUE
READ (10,ERR=9018,END=9091) ((PROGY(J,I),J=1,10),I=1,4)
8888 CONTINUE
READ (10,ERR=9019,END=9091) ((PROGNX(J,I),J=1,512),I=1,4)
8887 CONTINUE
READ (10,ERR=9020,END=9091) ((PROGNY(J,I),J=1,256),I=1,4)
8886 CONTINUE
READ (10,ERR=9021,END=9091) ((PATH(J,I),J=1,2),I=1,5)
8885 CONTINUE
READ (10,ERR=9022,END=9091) PTHDUN
8884 CONTINUE
READ (10,ERR=9023,END=9091) MGFRMN(1),MGFRMN(2),LLCTRD,RLCTRD,BLCTRD,TLCTR
D,
&
INDXB,INDXE,INDYB,INDYE,VCNTRL,HCNTRL,KI,KJ,
&
IXBEG,IYBEG,IXEND,IYEND,MGLR,MGUD,MGOTHR,MGOK,
&
BLCTOK,TLCTOK
*
GOTO 9091
END
*---------------------------------------------------------------------SUBROUTINE OMAFNM(FNAME,IRUN,ISHOT,IDRIVE)
CHARACTER*20 FNAME,INFIL*32,OUTFIL*32,VOL*6
INTEGER*4 IRUN,ISHOT,IDRIVE
LOGICAL*2 ISTEST
LOGICAL*1 NORMAL
COMMON /TST/ISTEST
NORMAL = .TRUE.
9999 CONTINUE
IF (IDRIVE.LT.0.OR.IDRIVE.GT.9) IDRIVE = -1
IF (IRUN.EQ.0.AND.ISHOT.EQ.0) THEN
* CODE FOR USER SUPPLIED NAME GOES HERE
PRINT *,' FILE NAME FOR FRAME I/O? '
READ (*,*,ERR=9000,END=9000) INFIL
IF (IDRIVE.EQ.-1) THEN
VOL = ' '
ELSE
WRITE (VOL,'(I1.1)') IDRIVE
ENDIF
CALL CHCKFN(INFIL,OUTFIL,VOL,'FRAME ','IMG')
FNAME = OUTFIL
ELSEIF (IRUN.EQ.0.AND.IDRIVE.EQ.-1.AND.ISHOT.LT.0) THEN
ISHOT = -ISHOT
WRITE (FNAME,8004,ERR=9000) ISHOT
ELSEIF (IRUN.EQ.0.AND.IDRIVE.NE.-1.AND.ISHOT.LT.0) THEN
ISHOT = -ISHOT
WRITE (FNAME,8005,ERR=9000) IDRIVE,ISHOT
ELSEIF (IRUN.EQ.0.AND.IDRIVE.EQ.-1.AND.NORMAL) THEN
WRITE (FNAME,8000,ERR=9000) ISHOT
ELSEIF (IRUN.EQ.0.AND.IDRIVE.NE.-1.AND.NORMAL) THEN
WRITE (FNAME,8001,ERR=9000) IDRIVE,ISHOT
ELSEIF (IRUN.GT.0.AND.IDRIVE.EQ.-1.AND.NORMAL) THEN
WRITE (FNAME,8002,ERR=9000) IRUN,ISHOT
ELSEIF (IRUN.GT.0.AND.IDRIVE.NE.-1.AND.NORMAL) THEN
WRITE (FNAME,8003,ERR=9000) IDRIVE,IRUN,ISHOT
ELSEIF (IRUN.EQ.0.AND.IDRIVE.EQ.-1) THEN
WRITE (FNAME,8010,ERR=9000) ISHOT
ELSEIF (IRUN.EQ.0.AND.IDRIVE.NE.-1) THEN
WRITE (FNAME,8011,ERR=9000) IDRIVE,ISHOT
ELSEIF (IRUN.GT.0.AND.IDRIVE.EQ.-1) THEN
WRITE (FNAME,8012,ERR=9000) IRUN,ISHOT
ELSEIF (IRUN.GT.0.AND.IDRIVE.NE.-1) THEN
WRITE (FNAME,8013,ERR=9000) IDRIVE,IRUN,ISHOT
ELSEIF (IRUN.LT.0.AND.IDRIVE.EQ.-1) THEN
IRUN = IABS(IRUN)
ISHOT = IABS(ISHOT)
WRITE (FNAME,8006,ERR=9000) IRUN,ISHOT
ELSEIF (IRUN.LT.0.AND.IDRIVE.NE.-1) THEN
IRUN = IABS(IRUN)
ISHOT = IABS(ISHOT)
WRITE (FNAME,8007,ERR=9000) IDRIVE,IRUN,ISHOT
ENDIF
*
IF (ISTEST) THEN
*
GOTO 9002
*
ELSE
GOTO 9001
*
ENDIF
9000 CONTINUE
CALL GOTOXY(0,0)
CALL GRCLS
PRINT *,'OMAFNM: Error assembling file name; FNAME=',FNAME
CALL BEEP
9002 CONTINUE
PRINT *,'OMAFNM: File name, FNAME=',FNAME
PRINT *,'OMAFNM:
IRUN =',IRUN
PRINT *,'OMAFNM:
ISHOT=',ISHOT
PRINT *,'OMAFNM:
IDRIVE',IDRIVE
PRINT *,' '
CALL WAIT(1.0)
9001 CONTINUE
RETURN
*
ENTRY ASCFNM(FNAME,IRUN,ISHOT,IDRIVE)
NORMAL = .FALSE.
GOTO 9999
*
8000
8001
8002
8003
8004
8005
8006
8007
8010
8011
8012
8013
FORMAT ('FRAME',I3.3,'.DAT')
FORMAT (I1,':FRAME',I3.3,'.DAT')
FORMAT ('R',I3.3,'S',I3.3,'.DAT')
FORMAT (I1,':R',I3.3,'S',I3.3,'.DAT')
FORMAT ('FRAME',I3.3,'.IMG')
FORMAT (I1,':FRAME',I3.3,'.IMG')
FORMAT ('R',I3.3,'S',I3.3,'.IMG')
FORMAT (I1,':R',I3.3,'S',I3.3,'.IMG')
FORMAT ('FRAME',I3.3,'.ASC')
FORMAT (I1,':FRAME',I3.3,'.ASC')
FORMAT ('R',I3.3,'S',I3.3,'.ASC')
FORMAT (I1,':R',I3.3,'S',I3.3,'.ASC')
END
*---------------------------------------------------------------------SUBROUTINE OMAQRY(IFRAME,IDRIVE)
CHARACTER*20 FNAME,TC*1
INTEGER*4 IFRAME,IDRIVE,NFRAME,NDRIVE
LOGICAL*4 EXISTS
EXTERNAL SETPG0,GCRCLS
IF (IFRAME.EQ.0) THEN
KFRAME = NFRAME
RETURN
ELSE
KFRAME = IFRAME
ENDIF
IRUN = KFRAME/1000
ISHOT = MOD(KFRAME,1000)
KDRIVE = IDRIVE
IF (IRUN.EQ.0) RETURN
*
IF (IRUN.GE.1000.OR.IRUN.LE.-1000) THEN
*
IRUN = 0
*
ISHOT = 0
*
ENDIF
IF (IDRIVE.LT.0.OR.IDRIVE.GT.7) IDRIVE = -1
CALL OMAFNM(FNAME,IRUN,ISHOT,IDRIVE)
INQUIRE (FILE=FNAME,EXIST=EXISTS)
IF ((.NOT.EXISTS).AND.KDRIVE.EQ.-1) THEN
DO 1 I=0,9
JDRIVE = I + 4
IF (JDRIVE.GE.8) JDRIVE = I - 4
IF (I.GE.8) JDRIVE = I
CALL OMAFNM(FNAME,IRUN,ISHOT,JDRIVE)
INQUIRE (FILE=FNAME,EXIST=EXISTS)
IF (EXISTS) GOTO 2
1
CONTINUE
2
CONTINUE
ELSEIF (.NOT.EXISTS) THEN
RETURN
ENDIF
CALL SETPG0
CALL GCRCLS
J = 0
CLOSE (UNIT=254,ERR=3)
3 CONTINUE
J = J + 1
IF (J.GT.3) RETURN
OPEN (UNIT=254,FILE=FNAME,STATUS='OLD',FORM='UNFORMATTED',ERR=3)
PRINT *,' For frame ',FNAME
PRINT *,' '
DO 4 I = 1,500
READ (254,END=5,ERR=6) TC
WRITE (12,'(\A1\)',ERR=7) TC
4 CONTINUE
7 CONTINUE
RETURN
5 CONTINUE
WRITE (11,*,ERR=7) 'Premature end of file ',FNAME
GOTO 7
6 CONTINUE
WRITE (11,*,ERR=7) 'ERROR reading file ',FNAME
GOTO 7
END
*---------------------------------------------------------------------SUBROUTINE STAFRM(IT,LX,LY,TYP,NN,IDRIVE)
CHARACTER*(*) INFILE
CHARACTER*20 FILE,DFRAME,DTFRM*10,POLAR*2
REAL*4 WFMS(0:1023,-10:11),WFMA(0:1023),CHGVLT,TINCR
REAL*4 WCHGV,TL,WTINCR,DENS,WWFM(0:1023),TEMP(5),RHO(4),FLOW
REAL*4 WFM0(0:1023),PWFM0(0:1023),WFM1(0:1023),PWFM1(0:1023),TIME(0:1023)
REAL*4 WFM2(0:1023),PWFM2(0:1023),WFM3(0:1023),PWFM3(0:1023)
REAL*4 WFM4(0:1023),PWFM4(0:1023),WFM5(0:1023),PWFM5(0:1023)
REAL*4 WFM6(0:1023),PWFM6(0:1023),WFM7(0:1023),PWFM7(0:1023)
REAL*4 WFM8(0:1023),PWFM8(0:1023),WFM9(0:1023),PWFM9(0:1023)
REAL*4 CHRGV,TLASER
INTEGER*4 LX,LY,TYP,N,DRIVE,LLX,LLY,JX,JY,HEADRE,IARR(256),RUNNUM,SHOTNO
INTEGER*4 ERROR,RECLEN,FREC,JTYP,OTHERW,SCRCHW
INTEGER*2 WFM0DX,WFM1DX,TENCPI,SXTNCP,FLUID(2),NOPNTS,PRPNTS
INTEGER*2 IT(131072),IDTFRM,CSZ,W,H,ZILCH2
INTEGER*1 TI(22,2),AUX(256)
LOGICAL*4 FILEXS
LOGICAL*2 DONE,TEK468,TK7854,TK7D20
LOGICAL*1 DISK,END,PARAM,FUBAR,NCOOL,DEFDRV,DOLONG,DOIMG
EQUIVALENCE (IDTFRM,DTFRM,TI(1,1)),(TI(11,1),JX),(TI(15,1),JY)
EQUIVALENCE (WFMS(0,11),WFMA(0)),(TI(19,1),JTYP)
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))
EQUIVALENCE (WFM2(0),WFMS(0,3)),(WFM3(0),WFMS(0,4))
EQUIVALENCE (PWFM2(0),WFMS(0,-3)),(PWFM3(0),WFMS(0,-4))
EQUIVALENCE (WFM4(0),WFMS(0,5)),(WFM5(0),WFMS(0,6))
EQUIVALENCE (PWFM4(0),WFMS(0,-5)),(PWFM5(0),WFMS(0,-6))
EQUIVALENCE (WFM6(0),WFMS(0,7)),(WFM7(0),WFMS(0,8))
EQUIVALENCE (PWFM6(0),WFMS(0,-7)),(PWFM7(0),WFMS(0,-8))
EQUIVALENCE (WFM8(0),WFMS(0,9)),(WFM9(0),WFMS(0,10))
EQUIVALENCE (PWFM8(0),WFMS(0,-9)),(PWFM9(0),WFMS(0,-10))
COMMON /FILES/DFRAME,RUNNUM,SHOTNO,/OMAHED/HEADRE,IARR,/OMANOW/CHGVLT,TLAS
ER,POLAR
COMMON /WFMS/WFMS,/PNTS/PRPNTS,NOPNTS,/SCTYPE/TEK468,TK7854,TK7D20
COMMON /RWNUM/WCHGV,TL,WTINCR,DENS,WWFM,FLUID,AUX,TEMP,RHO,FLOW
COMMON /GARBAG/ERROR,DISK,END,PARAM,FUBAR,WFM0DX,WFM1DX,CHRGV,TINCR,
1FREC,RECLEN,TENCPI,SXTNCP,/WFMFOO/OTHERW,SCRCHW
COMMON /OMALBL/DONE
SAVE /WFMS/,/RWNUM/,/SCTYPE/,/GARBAG/,/PNTS/,/FILES/,/OMAHED/,/OMALBL/
SAVE /WFMFOO/
EXTERNAL LABELS,ASCFNM,LAB3LS
SAVE
IRUN = (NN/1000)
DOLONG = IRUN .GT. 0
N = MOD(NN,1000)
DOIMG = IRUN .LT. 0 .OR. N .LT. 0
IF (DOLONG.AND.N.EQ.0.AND.SHOTNO.GE.0.AND.SHOTNO.LE.999) N = SHOTNO
DRIVE = IDRIVE
JTRIES = 0
NCOOL = N .NE. 0
IF (IRUN.GE.1000.OR.IRUN.LE.-1000) THEN
IRUN = 0
N = 0
DOIMG = .TRUE.
NCOOL = .TRUE.
ENDIF
DEFDRV = IDRIVE.EQ.-1
IF (.NOT.NCOOL) THEN
DO 1 I = 0,999
N = I
CALL ASCFNM(FILE,IRUN,I,DRIVE)
INQUIRE (FILE=FILE,EXIST=FILEXS)
IF (.NOT.FILEXS) GOTO 3
1
CONTINUE
GOTO 9000
3
CONTINUE
ELSE
CALL ASCFNM(FILE,IRUN,N,DRIVE)
ENDIF
9010 CONTINUE
OPEN (10,FILE=FILE,STATUS='NEW',ERR=7000)
7000 CLOSE (10,ERR=7001)
7001 OPEN (10,FILE=FILE,STATUS='NEW',ERR=9000)
IF (DOLONG) THEN
WRITE (10,FMT='(////)',ERR=9501)
ELSEIF (DOIMG) THEN
ELSE
WRITE (10,FMT='(////)',ERR=9501)
ENDIF
9501 CONTINUE
IFOO = LX*LY
WRITE (10,100) LX,LY,(IT(I),I=1,IFOO)
CLOSE (10)
RETURN
9000 CONTINUE
NN = -1
9001 CONTINUE
DO 9095 I = 1,-NN
CALL BEEP
CALL WAIT(0.05)
9095 CONTINUE
IF (NN.LT.-1) THEN
CLOSE (UNIT=10,STATUS='DELETE',ERR=9700)
9700
CONTINUE
ENDIF
RETURN
*---------ENTRY STA4FM(IT,LX,LY,TYP,INFILE)
CALL FNCHCK(INFILE,'DAT',FILE)
DOLONG = .TRUE.
GOTO 9010
8000 FORMAT ('FRAME',I3.3,'.DAT')
8001 FORMAT (I1,':FRAME',I3.3,'.DAT')
100 FORMAT (I5/I5/(I5,13(:,',',I5)))
END
*---------------------------------------------------------------------SUBROUTINE STOAFM(IT,LX,LY,TYP,N)
INTEGER*4 LX,LY,TYP,N
INTEGER*2 IT(1:LX,1:LY)
CALL STAFRM(IT(1,1),LX,LY,TYP,N,-1)
RETURN
END
*---------------------------------------------------------------------SUBROUTINE ISTAFM(IT,LX,LY,TYP,N,DRIVE)
INTEGER*4 LX,LY,TYP,N,IT,KADDR,DRIVE
INTEGER*4 ILX,ILY,ITYP,IN,IDRIVE,IIT
EXTERNAL STAFRM,CALL6,KADDR
SAVE
IIT = IT
ILX = KADDR(LX)
ILY = KADDR(LY)
ITYP = KADDR(TYP)
IN = KADDR(N)
IDRIVE = KADDR(DRIVE)
CALL CALL6(STAFRM,IIT,ILX,ILY,ITYP,IN,IDRIVE)
RETURN
END
*---------------------------------------------------------------------SUBROUTINE ISTFMA(IT,LX,LY,TYP,N)
INTEGER*4 LX,LY,TYP,N,IT,KADDR
INTEGER*4 ILX,ILY,ITYP,IN,IIT
EXTERNAL STOAFM,CALL5,KADDR
SAVE
IIT = IT
ILX = KADDR(LX)
ILY = KADDR(LY)
ITYP = KADDR(TYP)
IN = KADDR(N)
CALL CALL5(STOAFM,IIT,ILX,ILY,ITYP,IN)
RETURN
END