Sie sind auf Seite 1von 28

*******************************************************************************

* 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'

*
*
*
*
*

FRMTYP(4) = 'Normalized & Zero corr'


FRMTYP(5) = 'Raw Normalization Data '
FRMTYP(6) = ' UNKNOWN/NONSTANDARD '
FRMTYP(7) = 'ZRC Normalization Data '
FRMTYP(8) = 'ZRC-Normed & Zero Corr'
ENDIF
* 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
CL(I) = CARR(I)
J = I + 80
CT(I,1) = CARR(J)
J = I + 160
CT(I,2) = CARR(J)
J = I + 240
CT(I,3) = CARR(J)
1 CONTINUE
*
* DATE/TIME - 32 char long padded to 34 chars w/ CR/LF
*
*
* Lab Notebook (reference) NUMBER
*
DO 3 I = 1,16
J = I + 352
NOTES1(I) = CARR(J)
3 CONTINUE
READ (NOTES,'(10X,I4.4)',ERR=1030) LABOOK
1030 CONTINUE
*
* Electrode data: FIRST electrode is LEFT, SECOND is RIGHT
*
DO 4 I = 1,25
J = I + 368
LCTRD1(I,1) = CARR(J)
J = I + 393
LCTRD1(I,2) = CARR(J)
4 CONTINUE
READ (LCTRDS(1),'(5X,A1,1X,A15)',ERR=1040) PLRITY(1),ELCTRD(1)
1040 WRITE (LCTRDS(2),'(5X,A1,1X,A15)',ERR=1041) PLRITY(2),ELCTRD(2)
1041 CONTINUE
*
* POLARIZATION, CHARGING VOLTAGE, LASER TIME DELAY - in printable ASCII
*
DO 5 I = 1,78
J = I + 418
LKJH(J) = CARR(I)
5 CONTINUE
WRITE (ASDFGH,'(3P,A2,19X,G14.4E3,1X,2X,5X,12X,G14.4E3)',
1 ERR=1050) POLARZ,CHGVLT,TLASER
1050 CONTINUE
*
* PARAMETERS in binary (real*4) form: CHGVLT, TLASER, RHO(4), TEMP(5), FLOW,
*
DENS, WCHGV, TL, TINCR
*
CHGVLT = RARR(126)
TLASER = RARR(127)
RHO(1) = RARR(128)

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

DTFRM = 'Data Frame'


JX = LX
JY = LY
JTYP = TYP
CALL SWRITE(10,TI(1,1),22,0,0,0,IERROR)
IF (IERROR.NE.0) THEN
DO 5902 I = 1,22
TI(I,2) = TI(I,1)
5902
CONTINUE
CALL SWRITE(10,TI(1,2),22,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8999
ENDIF
IFOO = LX*LY*2
IWH = 1
5002 CONTINUE
IF (IFOO.GT.64000) THEN
CALL SWRITE(10,IT(IWH),64000,0,0,0,IERROR)
IWH = IWH + 32000
IFOO = IFOO - 64000
ELSE
CALL SWRITE(10,IT(IWH),IFOO,0,0,0,IERROR)
IFOO = 0
ENDIF
IF (IERROR.NE.0) THEN
PRINT *,'WRITE ERROR = ',IERROR
GOTO 8999
ENDIF
IF (IFOO.GT.0) GOTO 5002
*
IF (NOPNTS.EQ.0.OR..NOT.(TEK468.OR.TK7854.OR.TK7D20)) GOTO L900
IF (.NOT.(NOPNTS.EQ.0.OR..NOT.(TEK468.OR.TK7854.OR.TK7D20))) THEN
DTFRM = 'Waveform: '
JX = WFM0DX
JY = WFM1DX
JTYP = NOPNTS
CALL SWRITE(10,TI(1,1),22,0,0,0,IERROR)
IF (IERROR.NE.0) THEN
DO 5992 I = 1,22
TI(I,2) = TI(I,1)
5992
CONTINUE
CALL SWRITE(10,TI(1,2),22,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8996
ENDIF
CALL SWRITE(10,TIME(0),NOPNTS*4,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8995
CALL SWRITE(10,PWFM0(0),NOPNTS*4,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8994
CALL SWRITE(10,PWFM1(0),NOPNTS*4,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8993
ENDIF
I = PRPDUN()
IIT = KADDR(IT(1))
IF ( (I.GT.0.AND.(TYP.EQ.5.OR.TYP.EQ.7)) .OR. (PTHDUN.AND. (TYP.EQ.0.OR.
&
TYP.EQ.1.OR.TYP.EQ.3.OR.TYP.EQ.4.OR.TYP.EQ.5.OR.TYP.EQ.7.OR.
&
TYP.EQ.8) .AND. (IIT.GE.IAPS(5).AND.IIT.LE.IAPS(5)+1024)) ) THEN
DTFRM = 'Path Info:'
CALL SWRITE(10,IDTFRM,10,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8992
CALL SWRITE(10,LOWCUT,4,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8896
CALL SWRITE(10,IHICUT,4,0,0,0,IERROR)

9900
9994
9001

9095
9700

IF (IERROR.NE.0) GOTO 8895


CALL SWRITE(10,LINEX(1),1024,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8894
CALL SWRITE(10,LINEY(1),512,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8893
CALL SWRITE(10,POINTA(1,1),8192,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8892
CALL SWRITE(10,POINTB(1,1),4096,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8891
CALL SWRITE(10,PROGX(1,1),80,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8890
CALL SWRITE(10,PROGY(1,1),80,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8889
CALL SWRITE(10,PROGNX(1,1),4096,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8888
CALL SWRITE(10,PROGNY(1,1),2048,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8887
CALL SWRITE(10,PATH(1,1),20,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8886
CALL SWRITE(10,PTHDUN,2,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8885
C1(1) = MGFRMN(1)
C1(2) = MGFRMN(2)
PS4(1) = LLCTRD
PS4(2) = RLCTRD
PS4(3) = BLCTRD
PS4(4) = TLCTRD
P(10) = INDXB
P(11) = INDXE
P(12) = INDYB
P(13) = INDYE
P(14) = VCNTLR
P(15) = HCNTLR
P(16) = KI
P(17) = KJ
P(18) = IXBEG
P(19) = IYBEG
P(20) = IXEND
P(21) = IYEND
L2(22) = MGLR
L2(23) = MGUD
L2(24) = MGOTHR
L2(25) = MGOK
L2(26) = BLCTOK
L2(27) = TLCTOK
CALL SWRITE(10,P(1),56,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8884
ENDIF
CONTINUE
CALL SYSCLO(10,IERROR)
CLOSE (10,STATUS='KEEP',ERR=9994)
IF (IERROR.NE.0) GOTO 9004
CONTINUE
DO 9095 I = 1,-NN
CALL BEEP
CALL WAIT(0.05)
CONTINUE
IF (NN.LT.-1) THEN
CLOSE (UNIT=10,STATUS='DELETE',ERR=9700)
CONTINUE

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

WRITE (10,ERR=9900) (WFM0(I),I=0,NOPNTS-1)


WRITE (10,ERR=9900) (WFM1(I),I=0,NOPNTS-1)
IF (OTHERW.NE.0) WRITE (10,ERR=9006) (WFMS(I,OTHERW+1),I=0,NOPNTS-1)
ENDIF
CONTINUE
IF (PTHDUN) THEN
DTFRM = 'Path Info:'
WRITE (10,ERR=9011) DTFRM
ENDIF
CONTINUE
IF (PTHDUN) THEN
WRITE (10,ERR=9011) LOWCUT
ENDIF
CONTINUE
WRITE (10,ERR=9012) IHICUT
CONTINUE
WRITE (10,ERR=9013) (LINEX(I),I=1,512)
CONTINUE
WRITE (10,ERR=9014) (LINEY(I),I=1,256)

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

NCOOL = N.NE.0 .OR. DOIMG


DEFDRV = IDRIVE.EQ.-1 .OR. IDRIVE.EQ.10
IF (.NOT.NCOOL) THEN
DO 1 I = 999,0,-1
N = I
CALL OMAFNM(FILE,IRUN,I,DRIVE)
INQUIRE (FILE=FILE,EXIST=FILEXS)
IF (FILEXS) GOTO 3
CONTINUE
GOTO 9000
CONTINUE
ENDIF
CONTINUE
LNGTRD = .FALSE.
IMGTRD = .FALSE.
SHRTRD = .FALSE.
RETRY = .FALSE.
JTRIES = JTRIES + 1
IF (NCOOL) THEN
CALL OMAFNM(FILE,IRUN,N,DRIVE)
ELSE
TC = FILE(1:1)
IJ = ICHAR(TC)
IF (IJ.GE.$30.AND.IJ.LE.$39) THEN
IJ = IJ + 1
IF (IJ.GE.$38) IJ = $30
FILE(1:1) = CHAR(IJ)
ELSE
FILE2 = '4:'//FILE
FILE = FILE2
ENDIF
ENDIF
CONTINUE
OPEN (10,FILE=FILE,STATUS='OLD',FORM='BINARY',ERR=9000)
CONTINUE
IF (DOLONG) THEN
LNGTRD = .TRUE.
READ (10,ERR=9002,END=9106) (IARR(IJK),IJK=1,256)
READ (10,ERR=9002,END=9107) DTFRM
IF (DTFRM.NE.'Data Frame'.AND.DTFRM.NE.'DATA FRAME') GOTO 9106
CALL RDHEAD(CHGVLT,TLASER,POLAR)
CALL CRCLS
PRINT *,' Charging voltage in kV was: ',CHGVLT
PRINT *,' Laser delay in microSec was: ',TLASER
IF (POLAR(1:1).EQ.'A') THEN
PRINT *,' FRAME is ALIGNED Polarization; ',FRMTYP(TYPFRM)
ELSEIF (POLAR(1:1).EQ.'C') THEN
PRINT *,' FRAME is CROSSED Polarization; ',FRMTYP(TYPFRM)
ENDIF
PRINT '(A77/)',(TITLE(I),I=1,3),LABEL
DOIMG = .FALSE.
ELSEIF (DOIMG) THEN
IMGTRD = .TRUE.
CALL SREAD(10,IM,2,0,0,0,IERROR)
IF (IERROR.NE.0) THEN
CALL REWIND(10)
READ (10,ERR=9002,END=9107) CIM
ENDIF
IF (CIM.EQ.'MI'.OR.CIM.EQ.'mi') THEN
PRINT *,'ImageAction Frame ? detected -- bytes reversed!?'

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

IF (DTFRM.NE.'Data Frame'.AND.DTFRM.NE.'DATA FRAME') GOTO 9106


CHGVLT = 0.0
TLASER = 0.0
POLAR = ' '
DOIMG = .FALSE.
ENDIF
CALL SREAD(10,JX,4,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8998
LX = JX
CALL SREAD(10,JY,4,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8998
LY = JY
CALL SREAD(10,TYP,4,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8998
LLX = JX
LLY = JY
IFOO = LX*LY*2
IWH = 1
5002 CONTINUE
IF (IFOO.GT.64000) THEN
CALL SREAD(10,IT(IWH),64000,0,0,0,IERROR)
IWH = IWH + 32000
IFOO = IFOO - 64000
IF (IFOO.GT.0) GOTO 5002
ELSE
CALL SREAD(10,IT(IWH),IFOO,0,0,0,IERROR)
ENDIF
IF (IERROR.NE.0) THEN
IF (RETRY.OR..NOT.DOLONG) PRINT *,'READ ERROR = ',IERROR
GOTO 8998
ENDIF
IF (DOIMG) CALL FIXIMG(IT(1),IBAR)
NOPNTS = 0
WFM0DX = 0
WFM1DX = 0
*
* after reading in the frame try for a waveform or two ...
*
CALL SREAD(10,IDTFRM,10,0,0,0,IERROR)
IF (IERROR.EQ.8.OR.IERROR.EQ.$85) GOTO 9091
IF (IERROR.NE.0) GOTO 8997
IF (DTFRM.NE.'Waveform: ') GOTO 9081
CALL SREAD(10,I,4,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8996
WFM0DX = I
CALL SREAD(10,I,4,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8995
WFM1DX = I
CALL SREAD(10,I,4,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8994
NOPNTS = I
CALL SREAD(10,TIME(0),NOPNTS*4,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8993
CALL SREAD(10,PWFM0(0),NOPNTS*4,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8992
CALL SREAD(10,PWFM1(0),NOPNTS*4,0,0,0,IERROR)
IF (IERROR.NE.0) GOTO 8991
*
* try reading path info ...
*

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

Das könnte Ihnen auch gefallen