File: type10.f

package info (click to toggle)
nastran 0.1.95-2
  • links: PTS, VCS
  • area: non-free
  • in suites: bookworm, bullseye, sid
  • size: 122,540 kB
  • sloc: fortran: 284,409; sh: 771; makefile: 324
file content (79 lines) | stat: -rw-r--r-- 2,193 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
      SUBROUTINE TYPE10 (X,Y,XYD,CHR,NN,OPT)
C                                                	
C     (X,Y) = STARTING OR ENDING POINT OF THE LINE TO BE TYPED (ALWAYS
C             LEFT-TO-RIGHT OR TOP-TO-BOTTOM)
C     XYD   = (+/-)1 IF X = STARTING OR ENDING POINT OF THE LINE
C           = (+/-)2 IF Y = STARTING OR ENDING POINT OF THE LINE
C     CHR   = CHARACTERS TO BE TYPED
C     NN    = NUMBER OF CHARACTERS
C     OPT   = -1 TO INITIATE  THE TYPING MODE
C           = +1 TO TERMINATE THE TYPING MODE
C           =  0 TO TYPE A LINE
C
      INTEGER         XYD,CHR(1),OPT,OPTX,A(6),TYPE,D,PLTYPE
      REAL            XY(2,2),CSCALE
      COMMON /PLTDAT/ SKPPLT(2),XYMIN(2),XYMAX(15),CSCALE,SKPA(3),
     1                CNTCHR(6),PLTYPE
      DATA    A(6)  , TYPE,LSTCHR / 0, 4, 48 /
C
      IF (PLTYPE .LT. 0) GO TO 175
      OPTX = -1
      IF (OPT) 200,100,150
  100 A(5) = IFIX(CSCALE+.44)
      XY(1,1) = X
      XY(2,1) = Y
      XY(1,2) = X
      XY(2,2) = Y
      N = 1
      IF (N .LE. 0) N = 1
C
C     SCREEN OUT TRAILING BLANKS
C
      DO 102 J = 1,NN
      IF (IABS(CHR(J)) .NE. 48) N = J
  102 CONTINUE
      IF (N.EQ.1 .AND. IABS(CHR(1)).EQ.48) RETURN
      D = MAX0(IABS(XYD),1)
      S = CNTCHR(D)
      IF (XYD.EQ.-1 .OR. XYD.EQ.2) S = -S
C
C     TYPE THE LINE
C
      DO 125 J = 1,N
      XY(D,2) = XY(D,1) + S*FLOAT(J-1)
      DO 105 I = 1,2
      IF (XY(I,2)+.1.LT.XYMIN(I) .OR. XY(I,2)-.1.GT.XYMAX(I)) GO TO 125
      A(I+2) = XY(I,2) + .1
  105 CONTINUE
C
C     MAKE SURE EACH CHARACTER IS A VALID CHARACTER (UNLESS NN.LE.0)
C
      K = J
      IF (XYD .LT. 0) K = N - J + 1
      A(2) = IABS(CHR(K))
      IF (NN  .LE. 0) GO TO 120
      IF (A(2).EQ.0 .OR. A(2).GT.LSTCHR) GO TO 125
      IF (A(2) .EQ. 0) GO TO 125
C
C     TYPE THE CHARACTER
C
  120 A(1) = TYPE
      IF (OPTX .EQ. 0) GO TO 121
      A(1) = TYPE + 10
      OPTX = 0
  121 CALL WPLT10 (A,0)
  125 CONTINUE
      GO TO 200
C
C     TERMINATE THE TYPING MODE
C
  150 CALL WPLT10 (A,1)
      OPTX = -1
      GO TO 200
C
C     DRAW THE LINE OF CHARACTERS
C
  175 CALL DRWCHR (X,Y,XYD,CHR,NN,OPT)
C
  200 RETURN
      END