1*-----------------------------------------------------------------------
2*     Copyright (C) 2000-2004 GFD Dennou Club. All rights reserved.
3*-----------------------------------------------------------------------
4      SUBROUTINE UVBXLZ(N,UPX,UPY,ITYPE,INDEX)
5
6      REAL      UPX(*),UPY(*)
7
8      LOGICAL   LFLAG, LMISS, LXUNI
9      CHARACTER COBJ*80
10
11      COMMON    /SZBLS2/ LCLIP
12      LOGICAL   LCLIP
13
14
15      IF (N.LT.2) THEN
16        CALL MSGDMP('E','UVBXLZ','NUMBER OF POINTS IS LESS THAN 2.')
17      END IF
18      IF (ITYPE.EQ.0) THEN
19        CALL MSGDMP('M','UVBXLZ','LINETYPE IS 0 / DO NOTHING.')
20        RETURN
21      END IF
22      IF (INDEX.EQ.0) THEN
23        CALL MSGDMP('M','UVBXLZ','LINE INDEX IS 0 / DO NOTHING.')
24        RETURN
25      END IF
26      IF (INDEX.LT.0) THEN
27        CALL MSGDMP('E','UVBXLZ','LINE INDEX IS LESS THAN 0.')
28      END IF
29
30      CALL SGLGET('LCLIP' , LCLIP )
31      CALL GLRGET('RUNDEF', RUNDEF)
32      CALL GLRGET('RMISS' , RMISS)
33      CALL GLLGET('LMISS' , LMISS)
34
35      IF (UPY(1).EQ.RUNDEF) THEN
36        CALL MSGDMP('E', 'UVBXLZ', 'RUNDEF CAN NOT BE UESED FOR UPY.')
37      END IF
38
39      WRITE(COBJ,'(2I8)') ITYPE,INDEX
40      CALL CDBLK(COBJ)
41      CALL SWOOPN('UVBXLZ',COBJ)
42
43      CALL SZSLTI(ITYPE,INDEX)
44      CALL SZOPLU
45
46      LXUNI = UPX(1).EQ.RUNDEF
47
48      IF (LXUNI) THEN
49        CALL UUQIDV(UXMIN, UXMAX)
50        IF (UXMIN.EQ.RUNDEF) CALL SGRGET('UXMIN', UXMIN)
51        IF (UXMAX.EQ.RUNDEF) CALL SGRGET('UXMAX', UXMAX)
52        DX = (UXMAX-UXMIN)/N
53      END IF
54
55      CALL SZOPLU
56
57      LFLAG=.FALSE.
58      DO 20 I=1,N
59        IF (LXUNI) THEN
60          UX1 = UXMIN + DX*(I-1)
61          UX2 = UXMIN + DX*I
62        ELSE
63          UX1 = UPX(I)
64          UX2 = UPX(I+1)
65        END IF
66
67        IF ((UX1.EQ.RMISS .OR. UX2.EQ.RMISS .OR. UPY(I).EQ.RMISS)
68     #    .AND. LMISS) THEN
69          LFLAG=.FALSE.
70        ELSE
71          IF (LFLAG) THEN
72            CALL SZPLLU(UX1,UPY(I))
73            CALL SZPLLU(UX2,UPY(I))
74          ELSE
75            CALL SZMVLU(UX1,UPY(I))
76            CALL SZPLLU(UX2,UPY(I))
77            LFLAG=.TRUE.
78          END IF
79        END IF
80   20 CONTINUE
81
82      CALL SZCLLU
83      CALL SWOCLS('UVBXLZ')
84
85      END
86