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