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