1*-----------------------------------------------------------------------
2*     USPACK AXIS (AUTO SCALING)                      S.Sakai  99/10/07
3*-----------------------------------------------------------------------
4*     Copyright (C) 2000-2004 GFD Dennou Club. All rights reserved.
5*-----------------------------------------------------------------------
6      SUBROUTINE USAXSC(CSIDE)
7
8      CHARACTER  CSIDE*(*), CS, CP*8
9      EXTERNAL   LENZ
10      LOGICAL    LMATCH, LOFF
11
12      IF(CSIDE.EQ.' ') RETURN
13
14      CALL SGQTRN(ITR)
15      CALL SGQVPT(VXMIN, VXMAX, VYMIN, VYMAX)
16      CALL SGQWND(UXMIN0, UXMAX0, UYMIN0, UYMAX0)
17
18      CALL UZRGET('XFACT' , XFACT  )
19      CALL UZRGET('XOFFSET', XOFFSET)
20      CALL UZRGET('YFACT' , YFACT  )
21      CALL UZRGET('YOFFSET', YOFFSET)
22      UXMIN = XFACT*UXMIN0 + XOFFSET
23      UXMAX = XFACT*UXMAX0 + XOFFSET
24      UYMIN = YFACT*UYMIN0 + YOFFSET
25      UYMAX = YFACT*UYMAX0 + YOFFSET
26
27      NCS = LENZ(CSIDE)
28      CALL UZLGET('LOFFSET', LOFF)
29      CALL UZLSET('LOFFSET', .TRUE.)
30
31      DO 100 I=1, NCS
32        CS = CSIDE(I:I)
33        CALL CUPPER(CS)
34
35        IF(CS.EQ.'T' .OR. CS.EQ.'B' .OR. CS.EQ.'H') THEN
36          IF(CS.EQ.'H') CS='U'
37
38          IF(ITR.EQ.1 .OR. ITR.EQ.2) THEN
39            CP = 'IROTLX'//CS
40            CALL UZIGET(CP, IROTA)
41            CALL USLGET('LMATCH' , LMATCH)
42            MODE = MOD(IROTA,2)
43            IF(LMATCH) MODE = 0
44
45            CALL USUSCU('X', UXMIN, UXMAX, VXMIN, VXMAX, MODE)
46            CALL USRGET('DXT', DXT)
47            CALL USRGET('DXL', DXL)
48            IF(CS.EQ.'U') CS='H'
49            CALL USAXDV(CS, DXT, DXL)
50
51          ELSEIF(ITR.EQ.3 .OR. ITR.EQ.4) THEN
52            CALL USUSCL('X', UXMIN, UXMAX, VXMIN, VXMAX)
53            CALL USIGET('NLBLX'  , NLBL  )
54            CALL USIGET('NTICKSX', NTICKS)
55            CALL USIGET('ITYPEX' , ITYPEX)
56
57            CALL ULIGET('IXTYPE', IT    )
58            CALL ULISET('IXTYPE', ITYPEX)
59            CALL USAXLG(CS, NLBL, NTICKS)
60            CALL ULISET('IXTYPE', IT    )
61          ELSE
62            CALL MSGDMP('E', 'USXAXS', 'INVALID TRANSFORMATION NUMBER.')
63          ENDIF
64
65
66        ELSEIF(CS.EQ.'L' .OR. CS.EQ.'R' .OR. CS.EQ.'V') THEN
67          IF(CS.EQ.'V') CS='U'
68
69          IF(ITR.EQ.1 .OR. ITR.EQ.3) THEN
70            CP = 'IROTLY'//CS
71            CALL UZIGET(CP, IROTA)
72            CALL USLGET('LMATCH' , LMATCH)
73            MODE = MOD(IROTA+1,2)
74            IF(LMATCH) MODE = 0
75
76            CALL USUSCU('Y', UYMIN, UYMAX, VYMIN, VYMAX, MODE)
77            CALL USRGET('DYT', DYT)
78            CALL USRGET('DYL', DYL)
79            IF(CS.EQ.'U') CS='V'
80            CALL USAXDV(CS, DYT, DYL)
81
82          ELSEIF(ITR.EQ.2 .OR. ITR.EQ.4) THEN
83            CALL USUSCL('Y', UYMIN, UYMAX, VYMIN, VYMAX)
84            CALL USIGET('NLBLY'  , NLBL  )
85            CALL USIGET('NTICKSY', NTICKS)
86            CALL USIGET('ITYPEY' , ITYPEY)
87
88            CALL ULIGET('IYTYPE', IT    )
89            CALL ULISET('IYTYPE', ITYPEY)
90            CALL USAXLG(CS, NLBL, NTICKS)
91            CALL ULISET('IYTYPE', IT    )
92
93          ELSE
94            CALL MSGDMP('E', 'USYAXS', 'INVALID TRANSFORMATION NUMBER.')
95          ENDIF
96
97        ENDIF
98
99  100 CONTINUE
100
101      CALL UZLSET('LOFFSET', LOFF)
102      END
103