SUBROUTINE VGETXY(A,IND,IXB,IYB,IEB) INTEGER*2 A(2),IND,IXB,IYB,IEB REAL*4 XFAC,XOFF INTEGER*2 XTYPE,XMAXB,XSMINB,XSMAXB,XSNOWB COMMON/VXDES/XFAC,XOFF,XTYPE,XMAXB,XSMINB,XSMAXB,XSNOWB REAL*4 XAFDU,XADDU,XADDB INTEGER*2 XAFDB,XANDB,XAIND,XAGRID,XANGB,XAING,XATICK,XANTB,XAINT COMMON/VXADES/XAFDU,XADDU,XADDB,XAFDB,XANDB,XAIND , 1 XAGRID,XANGB,XAING,XATICK,XANTB,XAINT REAL*4 YFAC,YOFF INTEGER*2 YTYPE,YMINB,YMAXB COMMON/VYDES/YFAC,YOFF,YTYPE,YMINB,YMAXB INTEGER*2 ANPTS,ATYPE,AXA,AXF,AXI,AXMIN,ADELX INTEGER*2 AYA,AYF,AYI,AEA,AJOIN,AOFF INTEGER*2 AXP,AYP,AEP,AXC,AYC,AEC,AXN,AYN,AEN,AIC COMMON/VAOFF/ANPTS,ATYPE,AXA,AXF,AXI,AYA,AYF,AYI,AEA,AJOIN,AOFF, 1 AXP,AYP,AEP,AXC,AYC,AEC,AXN,AYN,AEN,AIC EQUIVALENCE (AXA,AXMIN),(AXF,ADELX) INTEGER*2 XDTYP,YDTYP REAL*4 R INTEGER*2 IR(2) EQUIVALENCE (R,IR(1)) INTEGER*2 IC LOGICAL*1 C(2) EQUIVALENCE (IC,C(1)) ID=IND IF(ID.GT.A(ANPTS))ID=A(ANPTS) IF(ID.LT.1)ID=1 IC=A(ATYPE) XDTYP=C(1) YDTYP=C(2) IF(XDTYP.EQ.0)GO TO 900 IAXI=A(AXI) IF(IAXI.NE.0)GO TO 810 IDX=ID GO TO 900 810 IT=(IAXI/2)*2 IDX=0 IF(IT.EQ.IAXI)CALL VGCVAL(IT,ID,IDX) IF(IT.NE.IAXI)CALL VGIVAL(IT,ID,IDX) 900 IAYI=A(AYI) IF(IAYI.NE.0)GO TO 910 IDY=ID GO TO 1000 910 IT=(IAYI/2)*2 IDY=0 IF(IT.EQ.IAYI)CALL VGCVAL(IT,ID,IDY) IF(IT.NE.IAYI)CALL VGIVAL(IT,ID,IDY) 1000 IF(XDTYP.NE.0)GO TO 1010 IR(1)=A(ADELX) IR(2)=A(ADELX+1) XB=A(AXMIN)+(ID-1)*R+.5 X=0.0 GO TO 2000 1010 IF(XDTYP.EQ.4)GO TO 1020 IX=0 IF(XDTYP.EQ.1)CALL VGCVAL(A(AXA),IDX,IX) IF(XDTYP.EQ.2)CALL VGIVAL(A(AXA),IDX,IX) IF(XDTYP.EQ.3)CALL VGBVAL(A(AXA),IDX,IX) X=IX GO TO 1030 1020 CALL VGFVAL(A(AXA),IDX,X) 1030 IF(A(AXF).EQ.0)GO TO 1040 CALL VGFVAL(A(AXF),IDX,F) X=X*F 1040 IF(XTYPE.EQ.0) XB=X*XFAC+XOFF+.5 IF(XTYPE.EQ.1) XB=ALOG10(X)*XFAC+XOFF+.5 2000 IF(YDTYP.EQ.4)GO TO 2020 IY=0 IF(YDTYP.EQ.1)CALL VGCVAL(A(AYA),IDY,IY) IF(YDTYP.EQ.2)CALL VGIVAL(A(AYA),IDY,IY) IF(YDTYP.EQ.3)CALL VGBVAL(A(AYA),IDY,IY) Y=IY GO TO 2030 2020 CALL VGFVAL(A(AYA),IDY,Y) 2030 IF(A(AYF).EQ.0)GO TO 2040 CALL VGFVAL(A(AYF),IDY,F) Y=Y*F 2040 IF(YTYPE.EQ.0) YB=Y*YFAC+YOFF+.5 IF(YTYPE.EQ.1) YB=ALOG10(Y)*YFAC+YOFF+.5 IF(XADDU.LT.0.0)GO TO 2050 YB=YB+A(AOFF) GO TO 3000 2050 XB=XB+A(AOFF) 3000 CONTINUE C CHECK THAT XB OR YB WILL NOT CAUSE OVERFLOW. IF(XB.LT.-32767.0)XB=-32767.0 IF(XB.GT.32767.0)XB=32767.0 IF(YB.LT.-16000.0) YB=-16000.0 IF(YB.GT.16000.0) YB=16000.0 IYB=YB IXB=XB IEB=0 IAEA=A(AEA) IF(IAEA.EQ.0)RETURN IT=(IAEA/2)*2-IAEA IF(IT.NE.0)GO TO 3010 CALL VGFVAL(IAEA,IDY,E) GO TO 3020 3010 CALL VECALL(X,Y,E,A) 3020 IF(YTYPE.EQ.0)IEB=E*YFAC IF(YTYPE.EQ.1)IEB=ALOG10(E)*YFAC RETURN END