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:  LINE AND PEN (PLOT SETUP) 
C      SOURCE: 92840 - 18027
C      RELOC:  92840 - 16001
C 
C 
C 
CC*********************************************************** 
C 
      SUBROUTINE PLTSU(IND,IGCB,P1), 92840-16001 REV.1819 780515
      INTEGER P1,SELPN,SELP0
      INTEGER DFLIN 
      DIMENSION NCODE(2),IBUFR(4),VAR(4)
      EQUIVALENCE (IBUFR(2),IB2),(IBUFR(3),IB3),(IBUFR(4),IB4)
      EQUIVALENCE (XLIN,IB3)
      DATA NCODE/15000B,15400B/ 
      DATA IADP/11/ 
      DATA DFLIN/17401B/
      DATA LINT/20003B/ 
      DATA NUMPN/16401B/
      DATA SELPN/16001B/
      DATA NUMPH/30001B/
      DATA SELP0/14400B/
C 
C     THIS ROUTINE PROCESSES THE AGL COMMANDS PEN(P1) AND 
C     LINE(P1,P2).WHERE P1 FOR PEN IS THE PEN NUMBER AND
C     P1 FOR LINE IS THE LINE-TYPE NUMBER. PARAMETER P2 IS
C     THE LENGTH OF THE LINE. 
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 
      P2 = 0. 
      IB3 = 0 
      ISUSP= 0
      CALL GCBIM(99,1,IGCB,ISUSP) 
      IF(ISUSP.NE.0)RETURN
      GO TO (10,20),IND 
C 
C     DETERMINE IF PEN INDICATES -1 FOR ERASE OR -2 FOR COMPLEMENT
C 
10    IF(P1.GE.0)GO TO 15 
      IERR = 29 
      IP1 = -P1 
      IF(IP1.NE.1. AND.IP1.NE.2)GO TO 800 
      CALL OUTPT(1,NCODE(IP1),2)
      RETURN
C 
C     GET THE NUMBER OOF PENS AVAILABLE AND COMPUTE 
C PEN# MODULO #PENS IF P1 > #PENS.
C 
15    CALL OUTPT(1,NUMPH,1) 
      CALL GCBIM(16,1,IB3,0,1)
      CALL GRSTS(1,4000B,ISUSP) 
C 
C     IF THE NUMBER OF PHYSICAL PENS IS EQ 1 AND A PREVIOUS LINE
C  TYPE HAS BEEN SELECTED DO NOTHING. 
C  NUMPN = LOGICAL PENS, NUMPH = PHYSICAL PENS
C 
      IF(ISUSP.NE.0.AND.IB3.EQ.1)GO TO 17 
      IB2 = P1
      CALL OUTPT(1,NUMPN,1) 
      CALL GCBIM(16,1,IB4,0,1)
      IF(P1.NE.0.AND.IB3.EQ.1)IB2 = P1 -1 
      IF(P1.GT.IB4.AND.IB3.EQ.1)IB2 = MOD(IB2,IB4) + 1
      IF(P1.GT.IB3.AND.IB3.GT.1)IB2 = MOD(P1,IB3) + 1 
      IBUFR = SELPN 
      IF(P1.EQ.0)IBUFR = SELP0
      CALL OUTPT(1,IBUFR,2) 
      RETURN
C 
17    CALL GCBIM(31,1,IB2,1,1)
      GO TO 600 
C 
C     LINE TYPE - MAXIMUM OF 6 PREDEFINED LINE TYPES
C 
20    IERR = 21 
      IF(P1.GT.6.OR.P1.LT.0)GO TO 800 
      IB2 = P1
C 
C     SEE IF WE USE DEFAULT LINE TYPE 
C 
      CALL GCBIM(IADP,1,VAR,0,1)
C 
C     CONVERT GDUS TO MUS 
C 
C     XLIN = VAR * P2 
C     IBUFR = LINT
C 
C     PUT LINE TYPE AND LENGTH INTO GCB 
C 
25    CALL GCBIM(31,1,IB2,0,2)
      CALL GRSTS(2,73777B,4000B)
600   IBUFR = DFLIN 
      CALL OUTPT(1,IBUFR,2) 
      RETURN
800   CALL PLTER(IERR,40) 
      IF(IERR.EQ.29)RETURN
      IB2 = 0 
      GO TO 25
      END 
                                                                                                                                                                  