FTN,L 
C 
C 
C 
C 
C 
C 
CC************************************************************
C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1978.  ALL RIGHTS    *
C RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, RE- *
C PRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH-  *
C OUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.  *
CC************************************************************
C 
C 
C 
C      NAME: GSTAT
C      SOURCE: 92840 - 18050
C      RELOC:  92840 - 16001
C 
C 
C 
CC*********************************************************** 
C 
C SY2001 MAKES A MOD TO HANDLE A GSTAT(14) CALL WHEN SOFTWARE 
C TEXT IS ENABLED. GSTAT(14) INQUIRES ABOUT LDIR. 
C SY2001 ALSO ADDS NEW CALL OF GSTAT(17) TO INQUIRE IF SOFTWARE 
C TEXT IS CURRENTLY ON. 
C 
C**************************************************************** 
C 
      SUBROUTINE XGSTT(INN,IGCB,INDX,LOOP,
     1IARRY), 92840-16001 REV.2013 790904 
C 
      LOGICAL GSOFT                                                     SY2013
      INTEGER PNPOS,PENZ
      DIMENSION IARRY(2),IGTBL(20),ICODE(3),INDX(2) 
      DIMENSION IBUFR(4)
      DIMENSION VAR(4),VAR1(4)
C 
C     THIS ROUTINE IS RESPONSIBLE FOR RETURNING THE 
C  GRAPHICS PACKAGE STATUS INFORMATION TO THE USER. 
C 
      EQUIVALENCE (IBUFR,IB1),(IBUFR(2),IB2),(IBUFR(3),IB3) 
      EQUIVALENCE(IGTBL,PNPOS),(IGTBL(2),PENZ),(IGTBL(3),IG12)
      EQUIVALENCE(IGTBL(4),IV12),(IGTBL(5),IS12),(IGTBL(6),IAD) 
      EQUIVALENCE(IGTBL(7),IADP),(IGTBL(8),IPRG),(IGTBL(9),ICHR)
      EQUIVALENCE(IGTBL(10),IGDU),(IGTBL(11),IUNIT),(IGTBL(12),LINE)
      EQUIVALENCE(IGTBL(13),LORG),(IGTBL(14),LDIR),(IGTBL(15),IPDIR)
      EQUIVALENCE(IGTBL(16),N),(IGTBL(17),ISOFT)
      EQUIVALENCE (VAR,X1),(VAR(2),Y1),(VAR(3),X2)
      EQUIVALENCE (VAR(4),Y2),(VAR1,A),(VAR1(2),B),(VAR1(3),C)
      EQUIVALENCE (VAR1(4),D) 
C 
C 
C     THE FOLLOWING DATA ITEMS ARE POINTER INTO THE GRAPHICS CONTROL
C  BLOCK VIA THE GCB INTERFACE MODULE (GCBIM).
C     A NEGATIVE NUMBER INDICATES SOMETHING SPECIAL MUST BE DONE. 
C 
C 
      DATA IPXY/5003B/
      DATA PNPOS,PENZ/-3,-1/
      DATA IG12,IV12,IS12/-4,-5,-6/ 
      DATA IADP,IAD/-8,-9/
      DATA IPRG,ICHR/-10,  -7/
      DATA IGDU,IUNIT/2015B,-2/ 
      DATA LINE,LORG/  -11,425B/
      DATA LDIR,IPDIR/1026B,2023B/
C 
      DATA LDIR2/1043B/ 
      DATA ISOFT/-12/ 
C 
      DATA N/432B/
C 
CCCC
C     THIS CALL ESTABLISHES AN ADDRESS LINK BETWEEN THE GRAPGHICS 
C  PACKAGE AND THE CURRENT GCB AND ALSO CHECKS FOR A SUSPENDED GCB. 
C 
      ISUSP= 0
      CALL GCBIM(99,1,IGCB,ISUSP) 
      IF(ISUSP.NE.0)RETURN
C     FIRST DETERMINE IF WE HAVE AN ERROR INDX<1 OR > 17               SY2013 
C     THEN IF NO ERROR COMPUTE POINTER INTO IGTBL TO GET
C GET THE CORRECT INDEX FOR THE GCB. IF THE POINTER IS
C NEGATIVE GO DO SOMETHING SPECIAL. 
C 
      J = 1 
      IF(LOOP)800,800,5 
5     DO 550 I = 1,LOOP 
      INTST = INDX(I) 
      IF(INTST.LE.0.OR.INTST.GT.17)GO TO 800
C 
C     NOW LOOP AROUND AN FILL IARRY WITH ALL THE DATA REQUESTED 
C 
      IPTR = IGTBL(INTST) 
      IF(IPTR.LT.0)GO TO 100
C**************************************************************SY2013 MOD 
C IF IPTR IS INQUIRING ABOUT LDIR, SEE IF SOFTWARE TEXT IS ENABLED. 
C IF SO, MODIFY IPTR TO RETURN THE SOFTWARE LDIR VALUE. 
C 
      IF ((IPTR .EQ. LDIR) .AND. (GSOFT(IGCB))) IPTR=LDIR2
C 
C*******************************************************END OF SY2013 MOD 
C 
C     DETERMINE THE NUMBER OF WORDS THAT WILL BE FILLED UP
C  IN IARRY.
C 
      NUM = IAND(IPTR,177400B)/400B 
      IPTR = IAND(IPTR,377B)
      CALL GCBIM(IPTR,1,IARRY(J),0,1) 
      GO TO 500 
C 
C     GET INFO FROM STATUS WORD 
C 
100   IPTR = -IPTR
      GO TO(110,120,130,140,140,140,150,160,160,125,165,175),IPTR       SY2013
110   ISTAT = 0 
      CALL GRSTS(1,200B,ISTAT)
      IARRY(J) = ISTAT/200B 
      NUM = 1 
      GO TO 500 
C 
C     UNITS MODE: 0=GDUS,1=UDUS,AND 3 = USER UNITS = GDUS 
C 
120   CALL GRSTS(1,1  ,ISTAT) 
      IARRY(J) = ISTAT
      NUM = 1 
      GO TO 500 
C 
C     PORG X,Y
C 
125   CALL GCBIM(17,1,IARRY(J),0,1) 
      NUM = 4 
      GO TO 500 
C 
C     PEN POSITION (X,Y)
C 
130   CALL OUTPT(1,IPXY,1)
      CALL GCBIM(16,1,IBUFR,3,1)
135   X1= IB1 
      Y1= IB2 
      NUM = 4 
      GO TO 200 
C 
C     G1,G2 OR V1,V2 OR S1,S2 
C 
140   IPTR = IPTR + 4 
      CALL GCBIM(IPTR,1,VAR,0,1)
      NUM = 8 
      GO TO 200 
C 
C     CHARACTER SIZE
C 
150   CALL GCBIM(7,1,VAR,0,1) 
      ICD = IADCD(D)
      CALL GCBIM(ICD,1,VAR1,0,1)
      X1 = X1/A 
      Y1 = Y1/C 
      NUM = 4 
      GO TO 300 
C 
C     A - D OR A' - D'
C 
160   IPTR = IPTR + 3 
      CALL GCBIM(IPTR,1,VAR,0,1)
      Y1 = Y1/X1
      Y2 = Y2/X2
      NUM = 8 
      GO TO 300 
165   CALL GCBIM(31,1,IBUFR,0,1)
      IARRY(J) = IBUFR
      NUM = 1 
      GO TO 500 
C********************************************************************** 
C SY2013 ADDS INQUIRY ABOUT WHETHER SOFTWARE TEXT IS ON.
C 
175   IARRY(J)=0
      IF (GSOFT(IGCB)) IARRY(J)=1 
      NUM=1 
      GO TO 500 
C 
C     CONVERT VALUES OF INTEREST TO CURRENT UNITS (UDUS OR GDUS)
C 
200   IPTR = IADCD(D) 
      CALL GCBIM(IPTR,1,VAR1,0,1) 
      X1 = (X1 - B)/A 
      Y1 = (Y1 - D)/C 
      X2 = (X2 - B)/A 
      Y2 = (Y2 - D)/C 
C 
C     NOW DO DE TRANSFER (TRICKERY AT ITS BEST) 
C 
300   CALL GCBIM(16,1,VAR,NUM,2)
      CALL GCBIM(16,1,IARRY(J),NUM,1) 
500   J= J + NUM
550   CONTINUE
C 
      RETURN
800   CALL PLTER(26,11) 
      RETURN
      END 
      END$
                                                                                                                                                                                                                              