FTN4,L
      SUBROUTINE ANAME(IU,IDISP,IDELY,NOMES),09580-16467 REV.2026 800211
C 
C-------------------------------------
C 
C  SCHLUMBERGER 1172 FREQUENCY RESPONSE ANALYZER
C 
C  RELOCATABLE 09580-16467
C  SOURCE      09580-18467
C 
C  BOB RICHARDS  800211 
C 
C------------------------------------ 
C 
C  !=================================================!
C  !                                                 !
C  ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980      !
C  !                ALL RIGHTS RESERVED              !
C  !                                                 !
C  ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,     !
C  ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM   !
C  ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF   !
C  ! THE HEWLETT-PACKARD COMPANY.                    !
C  !                                                 !
C  !-------------------------------------------------!
C  !                                                 !
C  ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETARY  !
C  ! MATERIAL OF THE HEWLETT-PACKARD COMPANY.        !
C  !                                                 !
C  ! THIS SOURCE DATA SHALL BE USED SOLELY IN        !
C  ! CONJUNCTION WITH ELECTRONIC COMPUTER SYSTEMS    !
C  ! SUPPLIED TO THE USER BY HEWLETT-PACKARD.        !
C  !                                                 !
C  ! THIS PROPRIETARY DATA SHALL NOT BE COPIED OR    !
C  ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN  !
C  ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE     !
C  ! COPY MAY BE MADE AND RETAINED BY THE USER FOR   !
C  ! ARCHIVE PURPOSES.                               !
C  !                                                 !
C  ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY    !
C  ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT !
C  ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL !
C  ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO    !
C  ! PROTECT THIS DATA FROM UNAUTHORIZED USE OR      !
C  ! DISCLOSURE AS THE USER USES TO PROTECT ITS OWN  !
C  ! PROPRIETARY DATA.                               !
C  !                                                 !
C  !=================================================!
C 
C  GENERAL: 
C  -------- 
C 
C   THE FOLLOWING DEVICE SUBROUTINES ARE USED TO PROGRAM THE MEASUR-
C   MENT MODES OF THE SCHLUMBERGER 1172 FREQUENCY RESPONSE ANALYZER.
C 
C  HARDWARE REQUIRED: 
C  ------------------ 
C    A. SCHLUMBERGER 1172 
C    B. HP59310  BUS INTERFACE KIT. 
C 
C         JUMPER POSITION:
C          SW1-1 - 1
C          SW1-2 TO SW1-8 - 0 
C          SW2-1 - 0
C          SW2-2 - 0
C          SW2-3 - 0
C          SW2-4 - 0
C          SW2-5 - 1
C          SW2-6 - REN
C          SW2-7 - ICF
C          SW2-8 - CNX
C 
C    C. HP 21XX SERIES COMPUTER 
C 
C  BRANCH AND MNEMONIC TABLE ENTRIES: 
C  ---------------------------------- 
C 
C    ANAME(I,I,I,IV),      OV=XX,   ENT=ANASU,   FIL=%ANASU 
C 
C  CONFIGURATION TABLE ENTRIES: 
C  ---------------------------- 
C 
C    NO ENTRIES NECESSARY 
C 
C 
C 
C 
C 
C------------------------------------ 
C 
C  ANAME(IU,IDISP,IDELY,NOMES)
C 
C    WHERE: 
C 
C       IU    = UNIT #
C 
C       IDISP = DISPLAY FORMAT
C              0=R, THETA 
C              1=A, B 
C              2=LOG R, THETA 
C 
C       IDELY = MEASUREMENT DELAY 
C              0=0.1 SECONDS
C              1=1 SECOND 
C              2=10 SECONDS 
C              3=100 SECONDS
C 
C       NOMES = RETURNED VALUE - NUMBER OF MEASUREMENTS TAKEN 
C 
C 
C  THIS DEVICE SUBROUTINE INITIALIZES THE MEASUREMENT PROCESS OF THE
C  1172.
C 
C  PRIOR TO USING THIS DEVICE SUBROUTINE A TYPE 1 FILE NAMED 'D1172'
C  MUST BE CREATED ON LU 3.  THE BELOW EXAMPLE DESCRIBES THE FMGR 
C  CALL TO CREATE A DATA FILE CAPABLE OF HOLDING THE MEASUREMENT
C  DATA OF UP TO 200 FREQUENCY MEASUREMENT POINTS.  DO NOT USE A
C  SECURITY CODE WHEN CREATING THE FILE.
C 
C        :CR,D1172::-3:1:200
C 
C*********************************************************************
C 
C                   ***** WARNING ***** 
C 
C   DO NOT TOUCH THE FRONT PANEL CONTROLS AT ANY TIME WHILE THE 1172
C   IS BEING PROGRAMMED IN THE REMOTE MODE.  TOUCHING THE FRONT PANEL 
C   CONTROLS WHILE IN THIS MODE MAY RESULT IN SPURIOUS DATA RETURNING 
C   FROM THE 1172.
C 
C*********************************************************************
C 
C 
C 
C------------------------------------ 
C 
      DIMENSION IERMS(5)
      DATA IDTN / 72 /
      DATA IERMS / 10,5,2HAN,2HAM,2HE  /
C 
      IERMS=10
C 
C  FIND STATION AND LU #'S
C   ISTN = STATION #
C   LU1 = SCHLUMBERGER 1172 LU
C   LUIB = HPIB LU
C 
      ISTN=ISN(DUMMY) 
      LU1=LUDV(ISTN,IDTN,IU)
      LUIB=IBLU0(LU1) 
      IF(LU1 .LE. 0 .OR. LUIB .LE. 0)GOTO 800 
C 
C  CALL X SUB 
C 
      CALL XNAME(LU1,LUIB,IERMS,IU,IDISP,IDELY,NOMES) 
      IF(IERMS)800,20,800 
C 
C  EXIT 
C 
20    RETURN
C 
C  ERROR EXIT 
C 
800   CALL ERROR(IERMS,IERMS(2))
      RETURN
      END 
C 
C---------------------------------------------
C 
      SUBROUTINE XNAME(LU1,LUIB,IERMS,IU,IDISP,IDELY,NOMES),
     +09580-16467 REV.2026 800211 
C 
      DIMENSION IERMS(5),IOBUF(6),INAME(3),IDCB(144),IFNSH(2),ISTRT(4)
      DIMENSION IRBUF(5),IMODE(1),STBUF(64),ISTBF(128),RDATA(2) 
C 
      EQUIVALENCE (STBUF(1),ISTBF(1)) 
C 
      DATA INAME /2HD1,2H17,2H2 / 
      DATA IDTN /72/
      DATA ISTRT /2HS1,2H11,31073B,2H2 /
      DATA IFNSH /2HT2,35460B/
C 
C---------------------------------------------
C 
C 
C  THE PARAMETERS IN THE CALLING SEQUENCE HAVE THE FOLLOWING
C  MEANINGS.
C 
C     LUIB = LU # OF HPIB BUS.
C     LU1  = LU # OF SCHLUMBERGER 1172
C 
C    IERMS IS A FIVE WORD ARRAY WITH IERR(1) CONTAINING 
C    THE ERROR CODE.
C 
C        0 = NO ERROR 
C        1 = PARAMETER ERROR
C        2 = SRQ TIMEOUT
C        3 = ILLEGAL RETURN STATUS FROM 1172
C        4 = DATA FILE 'OPEN' ERROR 
C        5 = DATA FILE FULL 
C        6 = DATA FILE WRITE ERROR
C 
C    ERROR MESSAGES THAT PERTAIN TO THE HPIB. 
C 
C        9 = I/O CALL REJECTED
C       10 = LUIB OR LU1 = 0
C       12 = I/O DEVICE TIME OUT
C       13 = IFC DETECTED DURING I/O REQUEST
C       14 = SRQ ABORTED
C       15 = NON-EXISTENT ALARM PROGRAM 
C       16 = ILLEGAL CONTROL REQUEST
C       17 = EQT EXTENSION AREA FULL
C 
C    IERMS(2) = ERROR MNEMONIC CHARACTER COUNT
C    IERMS(3) TO IERMS(5) = ERROR MNEMONIC
C 
C 
C---------------------------------------------
C 
C 
C 
C  CHECK PARAMETERS 
C 
      IERMS=1 
      IF(IDISP.LT.0.OR.IDISP.GT.2) GOTO 8000
      IF(IDELY.LT.0.OR.IDELY.GT.3) GOTO 8000
      IERMS = 0 
C 
C  PRESET NUMBER OF MEASUREMENTS COUNTER
C 
      NOMES = 0 
C 
C  LOCK SUBROUTINE INTO MEMORY WHILE RUNNING
C 
      CALL EXEC(100000B+22,1) 
      GOTO 9000 
30    CALL ABREG(IA,IB) 
      IF (IB .LT. 0) GOTO 8500
C 
C  OPEN DATA BUFFER 
C 
      CALL OPEN(IDCB,IERR,INAME,3,0,-3) 
      IF (IERR .NE. 1) GOTO 8600
C 
C  OUTPUT DISPLAY AND DELAY, MEASURE MODE TO 'STOP'.
C 
      IOBUF(1) = 2HT2 
      IOBUF(2) = 2H=0 + IDISP 
      IOBUF(3) = 2HT2 
      IOBUF(4) = 2H>0 + IDELY 
      IOBUF(5) = 2HT2 
      IOBUF(6) = 35460B 
C 
C  PRESET BUFFER
C 
      DO 90 JCNT = 1,64 
      STBUF(JCNT) = -1.0E37 
90    CONTINUE
C 
C  REMOTE ENABLE
C 
40    CALL EXEC(100003B,1600B + LUIB) 
      GOTO 9000 
100   CALL ABREG(IA,IB) 
      IF (IB .LT. 0) GOTO 8000
C 
C  SEND OUTPUT BUFFER 
C 
      CALL EXEC(100002B,LU1,IOBUF,6,IDUMY,0)
      GOTO 9000 
110   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
C 
C  SETUP INTERRUPT
C 
      CALL EXEC(100002B,LU1,ISTRT,-7,IDUMY,0) 
      GOTO 9000 
120   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
C 
C  TIMEOUT + RESCHEDULE PROGRAM 
C  WAIT FOR INTERRUPT 
C 
150   ITIME = 0 
      IWAIT = 2*(10**(1+IDELY)) 
200   IOFST = -20 
      CALL EXEC(12,0,1,0,IOFST) 
210   CONTINUE
C 
C  GET STATUS - LOOK FOR '100B' 
C 
      CALL EXEC(100003B,600B + LU1) 
      GOTO 9000 
220   CALL ABREG(IA,IB) 
      ISTAT = IAND(IA,377B) 
      IF(ISTAT .GE. 100B) GOTO 230
      ITIME = ITIME + 1 
      IF (ITIME .LT. IWAIT) GOTO 200
      IERR = 2
      GOTO 8000 
230   IF (ISTAT .EQ. 100B) GOTO 245 
      IERR = 3
      GOTO 8000 
C 
C  READ DATA FROM 1172 MOS STORAGE BUFERS 
C 
245   IOBUF(1) = 2HT3 
      IOBUF(2) = 2HI
      CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) 
      GOTO 9000 
250   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
      CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0)
      GOTO 9000 
260   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
C 
C  GO CONVERT DATA TO FLOATING POINT
C 
      CALL BCONV(IOBUF(2),IRBUF,RDATA)
      STBUF(01) = RDATA 
C 
      IOBUF(2) = 2H1
      CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) 
      GOTO 9000 
270   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
      CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0)
      GOTO 9000 
275   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
C 
C  GO CONVERT DATA TO FLOATING POINT
C 
      CALL BCONV(IOBUF(2),IRBUF,RDATA)
      STBUF(02) = RDATA 
C 
      IOBUF(2) = 2H9
      CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) 
      GOTO 9000 
280   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
      CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0)
      GOTO 9000 
285   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
C 
C  GO CONVERT DATA TO FLOATING POINT
C 
      CALL BCONV(IOBUF(2),IRBUF,RDATA)
      STBUF(03) = RDATA 
C 
      IOBUF(2) = 2HM
      CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) 
      GOTO 9000 
290   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
      CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0)
      GOTO 9000 
295   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
C 
C  GO CONVERT DATA TO FLOATING POINT
C 
      CALL BCONV(IOBUF(2),IRBUF,RDATA)
      STBUF(04) = RDATA 
C 
      IOBUF(2) = 2H5
      CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) 
      GOTO 9000 
300   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
      CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0)
      GOTO 9000 
305   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
C 
C  GO CONVERT DATA TO FLOATING POINT
C 
      CALL BCONV(IOBUF(2),IRBUF,RDATA)
      STBUF(05) = RDATA 
C 
      IOBUF(2) = 2H=
      CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) 
      GOTO 9000 
310   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
      CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0)
      GOTO 9000 
315   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
C 
C  GO CONVERT DATA TO FLOATING POINT
C 
      CALL BCONV(IOBUF(2),IRBUF,RDATA)
      STBUF(06) = RDATA 
C 
      IOBUF(2) = 2HH
      CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) 
      GOTO 9000 
320   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
      CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0)
      GOTO 9000 
325   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
C 
C  GO CONVERT DATA TO FLOATING POINT
C 
      CALL BCONV(IOBUF(2),IRBUF,RDATA)
      STBUF(07) = RDATA 
C 
      IOBUF(2) = 2H0
      CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) 
      GOTO 9000 
330   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
      CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0)
      GOTO 9000 
335   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
C 
C  GO CONVERT DATA TO FLOATING POINT
C 
      CALL BCONV(IOBUF(2),IRBUF,RDATA)
      STBUF(08) = RDATA 
C 
      IOBUF(2) = 2H8
      CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) 
      GOTO 9000 
340   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
      CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0)
      GOTO 9000 
345   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
C 
C  GO CONVERT DATA TO FLOATING POINT
C 
      CALL BCONV(IOBUF(2),IRBUF,RDATA)
      STBUF(09) = RDATA 
C 
      IOBUF(2) = 2HL
      CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) 
      GOTO 9000 
350   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
      CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0)
      GOTO 9000 
355   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
C 
C  GO CONVERT DATA TO FLOATING POINT
C 
      CALL BCONV(IOBUF(2),IRBUF,RDATA)
      STBUF(10) = RDATA 
      STBUF(11) = RDATA(2)
C 
      IOBUF(2) = 2H4
      CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) 
      GOTO 9000 
360   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
      CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0)
      GOTO 9000 
365   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
C 
C  GO CONVERT DATA TO FLOATING POINT
C 
      CALL BCONV(IOBUF(2),IRBUF,RDATA)
      STBUF(12) = RDATA 
      STBUF(13) = RDATA(2)
C 
      IOBUF(2) = 2H<
      CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) 
      GOTO 9000 
370   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
      CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0)
      GOTO 9000 
375   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
C 
C  GO CONVERT DATA TO FLOATING POINT
C 
      CALL BCONV(IOBUF(2),IRBUF,RDATA)
      STBUF(14) = RDATA 
      STBUF(15) = RDATA(2)
C 
      IOBUF(2) = 2HJ
      CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) 
      GOTO 9000 
380   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
      CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0)
      GOTO 9000 
385   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
C 
C  GO CONVERT DATA TO FLOATING POINT
C 
      CALL BCONV(IOBUF(2),IRBUF,RDATA)
      STBUF(16) = RDATA 
C 
      IOBUF(2) = 2H2
      CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) 
      GOTO 9000 
390   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
      CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0)
      GOTO 9000 
395   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
C 
C  GO CONVERT DATA TO FLOATING POINT
C 
      CALL BCONV(IOBUF(2),IRBUF,RDATA)
      STBUF(17) = RDATA 
C 
      IOBUF(2) = 2H:
      CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) 
      GOTO 9000 
400   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
      CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0)
      GOTO 9000 
405   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
C 
C  GO CONVERT DATA TO FLOATING POINT
C 
      CALL BCONV(IOBUF(2),IRBUF,RDATA)
      STBUF(18) = RDATA 
C 
      IOBUF(2) = 35440B 
      CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) 
      GOTO 9000 
410   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
      CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0)
      GOTO 9000 
412   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
C 
C  GO CONVERT DATA TO FLOATING POINT
C 
      CALL BCONV(IOBUF(2),IRBUF,RDATA)
      STBUF(19) = RDATA 
C 
      IOBUF(2) = 2H6
      CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) 
      GOTO 9000 
415   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
      CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0)
      GOTO 9000 
420   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
C 
C  GO CONVERT DATA TO FLOATING POINT
C 
      CALL BCONV(IOBUF(2),IRBUF,RDATA)
      STBUF(20) = RDATA 
C 
      IOBUF(2) = 2HK
      CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) 
      GOTO 9000 
425   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
      CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0)
      GOTO 9000 
430   CALL ABREG(IA,IB) 
      IF(IB .LT. 0) GOTO 8500 
C 
C  GO CONVERT DATA TO FLOATING POINT
C 
      CALL BCONV(IOBUF(2),IRBUF,RDATA)
      STBUF(21) = RDATA 
C 
      CALL EXEC(100002B,LU1,ISTRT,-7,IDUMY,0) 
      GOTO 9000 
485   CALL ABREG(IA,IB) 
      IF (IB .LT. 0) GOTO 8500
C 
C  WRITE TO BUFFER
C 
      CALL WRITF(IDCB,IERR,ISTBF) 
      IF (IERR .EQ. -12) GOTO 8700  
      IF (IERR .LT. 0) GOTO 8800
      DO 487 JCNT = 1,64
      STBUF(JCNT) = -1.0E37 
487   CONTINUE
C 
C  INCREMENT NUMBER OF MEASUREMENTS COUNTER 
C 
      NOMES = NOMES + 1 
C 
C  CHECK TO SEE IF DONE 
C 
      IOBUF(1) = 2HT4 
      IOBUF(2) = 2H8
C 
      CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) 
      GOTO 9000 
490   CALL ABREG (IA,IB)
      IF (IB .LT. 0) GOTO 8500
C 
C  READ MEASUREMENT MODE
C 
      CALL EXEC(100001B,LU1,IMODE,1,IDUMY,0)
      GOTO 9000 
495   CALL ABREG(IA,IB) 
      IF (IB .LT. 0) GOTO 8500
C 
C  IF MEASUREMENT MODE IS 'OFF' OR 'HOLD' STOP MEASUREMENT
C 
      JSTAT = IAND(IMODE,177400B) 
      IF (JSTAT.EQ.30000B.OR.JSTAT.EQ.30400B) GOTO 500
      GOTO 150
C 
C  TURN OFF MEASUREMENT COMMAND 
C 
500   CALL EXEC(100002B,LU1,IFNSH,2,IDUMY,0)
      GOTO 9000 
510   CALL ABREG(IA,IB) 
      IF(IB.LT.0) GOTO 8500 
C 
C  GOOD RETURN
C 
7000  IERMS = 0 
C 
C  CLOSE DATA BUFFER
C 
7100  CALL CLOSE(IDCB)
C 
C  REENABLE SWAPPING
C 
      CALL EXEC(22,0) 
C 
C 
      RETURN
C 
C  ERROR EXIT 
C 
8500  IERMS=IAND(IA,377B)+11
      GOTO 8000 
8600  IERMS = 4 
      GOTO 8000 
8700  IERMS = 5 
      GOTO 8000 
8800  IERMS = 6 
      GOTO 8000 
9000  IERMS=9 
8000  IERMS(2)=5
      IERMS(3)=2HAN 
      IERMS(4)=2HAM 
      IERMS(5)=2HE
      GOTO 7100 
      END 
      SUBROUTINE BCONV(ICHAR,IRBUF,RDATA),09580-16467 REV.2026 800211 
C 
C  THIS SUBROUTINE CONVERTS THE VARIOUS DATA FORMATS AS RECEIVED FROM 
C  THE 1172 TO FLOATING POINT.
C 
C  CALL BCONV(ICHAR,IRBUF,RDATA)
C 
C       WHERE:
C 
C              ICHAR = INPUT CHARACTER IN UPPER 8 BITS, SPACE IN
C                      LOWER 8 BITS.
C 
C              IRBUF = FIVE WORD INPUT ASCII DATA BUFFER
C                      BUFFER FORMAT - "AAAA,AAAA"
C 
C              RDATA = TWO WORD ARRAY CONTAINING THE RETURNED 
C                      FLOATING POINT VALUE(S).  THETA REQUIRES 
C                      TWO CONVERSIONS PER ENTRY. 
C 
C***********************************************************************
C 
      DIMENSION IRBUF(5),RDATA(2),MRBUF(5)
      EQUIVALENCE (MRBUF(1),IVALU),(MRBUF(3),JVALU) 
C 
C  MOVE INPUT BUFFER
C 
      MRBUF(1) = IRBUF(1) 
      MRBUF(2) = IRBUF(2) 
      MRBUF(3) = IRBUF(3) 
      MRBUF(4) = IRBUF(4) 
      MRBUF(5) = IRBUF(5) 
C 
C 
C  GET RID OF IMBEDDED COMMA IN ASCII STRING
C 
      MRBUF(3) = MRBUF(3) * 400B
      MRBUF(3) = MRBUF(3) + (IRBUF(4)/400B) 
      MRBUF(4) = MRBUF(4) * 400B
      MRBUF(4) = MRBUF(4) + (MRBUF(5)/400B) 
      IS = (MRBUF(4)/400B) - 60B
      IE = (IAND(MRBUF(4),377B)) - 60B
C 
C  POINT TO REFORMAT TYPE 
C 
      IF (ICHAR .EQ. 2HI ) GOTO 100 
      IF (ICHAR .EQ. 2H1 ) GOTO 100 
      IF (ICHAR .EQ. 2HM ) GOTO 100 
      IF (ICHAR .EQ. 2H5 ) GOTO 100 
      IF (ICHAR .EQ. 35440B) GOTO 100 
      IF (ICHAR .EQ. 2HH ) GOTO 100 
      IF (ICHAR .EQ. 2H0 ) GOTO 100 
      IF (ICHAR .EQ. 2H8 ) GOTO 100 
      IF (ICHAR .EQ. 2H9 ) GOTO 100 
      IF (ICHAR .EQ. 2H= ) GOTO 100 
      IF (ICHAR .EQ. 2HL ) GOTO 500 
      IF (ICHAR .EQ. 2H4 ) GOTO 500 
      IF (ICHAR .EQ. 2H< ) GOTO 500 
      IF (ICHAR .EQ. 2HJ ) GOTO 600 
      IF (ICHAR .EQ. 2H2 ) GOTO 600 
      IF (ICHAR .EQ. 2H: ) GOTO 600 
      IF (ICHAR .EQ. 2H6 ) GOTO 800 
      IF (ICHAR .EQ. 2HK ) GOTO 1100
      GOTO 9000 
C 
100   CALL CODE 
      READ (IVALU,110) RDATA
110   FORMAT (E6.0) 
      IF (IS .EQ. 1 .OR. IS .EQ. 5) RDATA = -RDATA
      RDATA = RDATA/100000.0
      RDATA = RDATA * (10.0**(IE-4))
      RETURN
C 
500   CALL CODE 
      READ(IVALU,510) RDATA(1)
510   FORMAT (E4.0) 
      RDATA(1) = RDATA(1)/10.0
      CALL CODE 
      READ(JVALU,510) RDATA(2)
      RDATA(2) = RDATA(2)/1000.0
      RETURN
C 
600   CALL CODE 
      READ(IVALU,110) RDATA 
      IF (IS .EQ. 1 .OR. IS .EQ. 5) RDATA = -RDATA
      RDATA = RDATA/1000.0
      RETURN
C 
800   MRBUF(3) = 2H00 
      IS = 0
      GOTO 100
C 
1100  CALL CODE 
      READ (IVALU,110) RDATA
      RDATA = (RDATA/10000.0) - 4.0 
      RETURN
C 
C  PUT 1E38 INTO ERRONEOUS VALUES 
C 
9000  RDATA = 1.0E38
      RDATA(2) = 1.0E38 
      RETURN
      END 
      END$
                                  