FTN,L 
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: CSIZE
C      SOURCE: 92840 - 18046
C      RELOC:  92840 - 16001
C 
C 
C 
CC*********************************************************** 
C 
      SUBROUTINE XSIZE(IND,IGCB,P1,P2,P3,IP4) 
     +,92840-16001 REV.2013 790925
C*********************************************************
C IBUFR INCREASED FROM 5 TO 7 WORDS. SY 4-24-79 
C P3A HOLDS THE USER REQUESTED CHARACTER SLANT. 
C 
C IP4 ADDED 9-25-79 TO INDICATE WHETHER THE CSIZE SPECIFICATION 
C IS IN NDC UNITS OR WC UNITS.
C IP4 = 0 TO INDICATE NDC SPECIFICATION.
C     = 1 TO INDICATE WC SPECIFICATION. 
C 
C************************************************************ 
      DIMENSION VAR(4),IBUFR(7),ICHBF(9)
      INTEGER ICODE(2)
      EQUIVALENCE (IBUFR(2),CHRW,SLANT),(IBUFR(4),CHRH) 
      EQUIVALENCE (IBUFR(6),P3A)
      EQUIVALENCE (ICHBF,CWMIN),(ICHBF(3),CHMIN)
      EQUIVALENCE (ICHBF(5),CWMAX),(ICHBF(7),CHMAX),(ICHBF(9),ICHB9)
      EQUIVALENCE (VAR,A),(VAR(3),C)
C 
      DATA ICHW/10404B/ 
      DATA ISLNT/7402B/ 
      DATA ICHMM/33011B/
      DATA ISLOF/10000B/
      DATA ICHR/4404B/
      DATA ICLSZ/4404B/ 
C 
C     THIS IS THE FUNCTIONAL MODULE FOR THE AGL COMMAND CSIZE.
C 
C     THE PARAMETERS IN THE CALLING SEQUENCE HAVE THE FOLLOWING 
C  MEANING
C     P1 = CHARACTER HEIGHT,P2= ASPECT RATIO,P3=SLANT 
C 
      XCH = P1
      IF(P1.EQ.0)XCH = 2.78 
      XCW  =XCH * P2
      IF(P2.EQ.0)XCW  = .7   * XCH
CCCC
C     THIS CALL ESTABLISHES AN ADDRESS LINK BETWEEN THE GRAPGHICS 
C  PACKAGE AND THE CURRENT GCB. 
C 
      ISUSP = 0 
      CALL GCBIM(99,1,IGCB,ISUSP) 
      IF(ISUSP.NE.0)RETURN
C 
C 
C     RETRIEV CHARACTER SIZE INFORMATION FROM THE DEVICE SUBROUTINE.
C 
      CALL OUTPT(1,ICHMM,1) 
      CALL GCBIM(16,1,ICHBF,9,1)
C 
C     TRANSFORM UNITS INTO MUS AND COMPUTE CHARACTER WIDTH
C  WHICH IS EQUAL TO ASPECT RATIO * CHAR HEIGHT *CONVERSION FACTOR. 
C 
      IADP=11 
      IF (IP4 .EQ. 1) IADP=12 
      CALL GCBIM(IADP,1,VAR,0,1)
      CHRH =XCH * C 
      CHRW = XCW  * A 
C*****************************************************************
C 
C     NOW CHECK ON MIN AND MAX CHARACTER SIZES DEVICE WILL TOLERATE 
C 
      IF(CHRH.LT.CHMIN)CHRH = CHMIN 
      IF(CHRH.GT.CHMAX)CHRH = CHMAX 
      IF(CHRW.LT.CWMIN)CHRW = CWMIN 
      IF(CHRW.GT.CWMAX)CHRW = CWMAX 
C 
C     CHECK TO MAKE SURE DEVICE CAN HANDLE NEGATIVE CSIZE 
C 
      IF(P1.LT.0.0.AND.ICHB9.EQ.0)CALL PLTER(22)
      IF(P2.LT.0.0.AND.ICHB9.EQ.0)CALL PLTER(22)
      IBUFR = ICHW
      CALL OUTPT(1,IBUFR,2) 
      CALL GCBIM(7,1,CHRW,0,2)
      CALL OUTPT(1,ICHR,1)
      CALL GCBIM(16,1,7,1,3)
C 
C     NOW FOR THE SLANT IF P3 = 0. SLANT OFF COMMAND IS EMITTED 
C 
      IBUFR = ISLNT 
      IF(P3.EQ.0.)IBUFR = ISLOF 
      SLANT = P3
C 
      IF (IADP .EQ. 12) CALL GANG3(IGCB,P3,SLANT,ICHBF) 
      SLANT=AMOD(SLANT,6.28)
C     IF(ABS(P3).GT.6.28)SLANT = AMOD(P3,6.28)
      CALL OUTPT(1,IBUFR,2) 
C*******************************************************************
C     NOW UPDATE GCB WITH NEW CHARACTER HEIGHT,WIDTH SLANT ETC. 
C     STORE IN SAME UNITS AS SPECIFIED BY THE USER. 
C 
      CHRH=P1 
      CHRW=P1*P2
      P3A=P3
      ICODE(1)=33 
      ICODE(2)=34 
      CALL GCBIM(ICODE,2,CHRW,0,2)
C 
C SET THE BIT IN THE STATUS WORD TO INDICATE WHETHER YOU WILL USE 
C WC OR NDC CHARACTER PLOTTING FROM NOW ON. 
C 
      IOR=0 
      IF (IP4 .EQ. 1) IOR=40000B
      CALL GRSTS(2,37777B,IOR)
      RETURN
      END 
      END$
                                                                                                                                                  