1*----------------------------------------------------------------------- 2* Copyright (C) 2000-2004 GFD Dennou Club. All rights reserved. 3*----------------------------------------------------------------------- 4 SUBROUTINE UVBXFZ(N,UPX,UPY1,UPY2,ITYPE,INDEX) 5 6 REAL UPX(*),UPY1(*),UPY2(*) 7 8 LOGICAL LMISS, LXUNI, LYC1, LYC2 9 CHARACTER COBJ*80 10 11 COMMON /SZBLS2/ LCLIP 12 LOGICAL LCLIP 13 14 15 IF (N.LT.1) THEN 16 CALL MSGDMP('E','UVBXFZ','NUMBER OF POINTS IS LESS THAN 1.') 17 END IF 18 IF (ITYPE.EQ.0) THEN 19 CALL MSGDMP('M','UVBXFZ','LINE TYPE IS 0 / DO NOTHING.') 20 RETURN 21 END IF 22 IF (INDEX.EQ.0) THEN 23 CALL MSGDMP('M','UVBXFZ','LINE INDEX IS 0 / DO NOTHING.') 24 RETURN 25 END IF 26 IF (INDEX.LT.0) THEN 27 CALL MSGDMP('E','UVBXFZ','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 WRITE(COBJ,'(2I8)') ITYPE, INDEX 36 CALL CDBLK(COBJ) 37 CALL SWOOPN('UVBXFZ',COBJ) 38 39 CALL SZSIDX(INDEX) 40 CALL SZSTYP(ITYPE) 41 42 LXUNI = UPX(1).EQ.RUNDEF 43 LYC1 = UPY1(1).EQ.RUNDEF 44 LYC2 = UPY2(1).EQ.RUNDEF 45 46 IF (LXUNI) THEN 47 CALL UUQIDV(UXMIN, UXMAX) 48 IF (UXMIN.EQ.RUNDEF) CALL SGRGET('UXMIN', UXMIN) 49 IF (UXMAX.EQ.RUNDEF) CALL SGRGET('UXMAX', UXMAX) 50 DX = (UXMAX-UXMIN)/N 51 END IF 52 53 IF (LYC1 .OR. LYC2) THEN 54 CALL UURGET('UREF', UREF) 55 END IF 56 57 DO 20 I=1,N 58 IF (LXUNI) THEN 59 UX1 = UXMIN + DX*(I-1) 60 UX2 = UXMIN + DX*I 61 ELSE 62 UX1 = UPX(I) 63 UX2 = UPX(I+1) 64 END IF 65 66 IF (LYC1) THEN 67 UY1 = UREF 68 ELSE 69 UY1 = UPY1(I) 70 END IF 71 72 IF (LYC2) THEN 73 UY2 = UREF 74 ELSE 75 UY2 = UPY2(I) 76 END IF 77 78 IF (.NOT. 79 # ((UX1.EQ.RMISS .OR. UX1.EQ.RMISS .OR. 80 # UY1.EQ.RMISS .OR. UY2.EQ.RMISS) .AND. LMISS)) THEN 81 82 CALL SZOPLU 83 CALL SZMVLU(UX1, UY2) 84 CALL SZPLLU(UX2, UY2) 85 CALL SZPLLU(UX2, UY1) 86 CALL SZPLLU(UX1, UY1) 87 CALL SZPLLU(UX1, UY2) 88 CALL SZCLLU 89 90 END IF 91 20 CONTINUE 92 93 CALL SWOCLS('UVBXFZ') 94 95 END 96