1*> \brief \b SERRSYX
2*
3*  =========== DOCUMENTATION ===========
4*
5* Online html documentation available at
6*            http://www.netlib.org/lapack/explore-html/
7*
8*  Definition:
9*  ===========
10*
11*       SUBROUTINE SERRSY( PATH, NUNIT )
12*
13*       .. Scalar Arguments ..
14*       CHARACTER*3        PATH
15*       INTEGER            NUNIT
16*       ..
17*
18*
19*> \par Purpose:
20*  =============
21*>
22*> \verbatim
23*>
24*> SERRSY tests the error exits for the REAL routines
25*> for symmetric indefinite matrices.
26*>
27*> Note that this file is used only when the XBLAS are available,
28*> otherwise serrsy.f defines this subroutine.
29*> \endverbatim
30*
31*  Arguments:
32*  ==========
33*
34*> \param[in] PATH
35*> \verbatim
36*>          PATH is CHARACTER*3
37*>          The LAPACK path name for the routines to be tested.
38*> \endverbatim
39*>
40*> \param[in] NUNIT
41*> \verbatim
42*>          NUNIT is INTEGER
43*>          The unit number for output.
44*> \endverbatim
45*
46*  Authors:
47*  ========
48*
49*> \author Univ. of Tennessee
50*> \author Univ. of California Berkeley
51*> \author Univ. of Colorado Denver
52*> \author NAG Ltd.
53*
54*> \date November 2013
55*
56*> \ingroup single_lin
57*
58*  =====================================================================
59      SUBROUTINE SERRSY( PATH, NUNIT )
60*
61*  -- LAPACK test routine (version 3.5.0) --
62*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
63*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
64*     November 2013
65*
66*     .. Scalar Arguments ..
67      CHARACTER*3        PATH
68      INTEGER            NUNIT
69*     ..
70*
71*  =====================================================================
72*
73*     .. Parameters ..
74      INTEGER            NMAX
75      PARAMETER          ( NMAX = 4 )
76*     ..
77*     .. Local Scalars ..
78      CHARACTER          EQ
79      CHARACTER*2        C2
80      INTEGER            I, INFO, J, N_ERR_BNDS, NPARAMS
81      REAL               ANRM, RCOND, BERR
82*     ..
83*     .. Local Arrays ..
84      INTEGER            IP( NMAX ), IW( NMAX )
85      REAL               A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
86     $                   R1( NMAX ), R2( NMAX ), W( 3*NMAX ), X( NMAX ),
87     $                   S( NMAX ), ERR_BNDS_N( NMAX, 3 ),
88     $                   ERR_BNDS_C( NMAX, 3 ), PARAMS( 1 )
89*     ..
90*     .. External Functions ..
91      LOGICAL            LSAMEN
92      EXTERNAL           LSAMEN
93*     ..
94*     .. External Subroutines ..
95      EXTERNAL           ALAESM, CHKXER, SSPCON, SSPRFS, SSPTRF, SSPTRI,
96     $                   SSPTRS, SSYCON, SSYCON_ROOK,SSYRFS, SSYTF2,
97     $                   SSYTF2_ROOK, SSYTRF, SSYTRF_ROOK, SSYTRI,
98     $                   SSYTRI_ROOK, SSYTRI2, SSYTRS, SSYTRS_ROOK,
99     $                   SSYRFSX
100*     ..
101*     .. Scalars in Common ..
102      LOGICAL            LERR, OK
103      CHARACTER*32       SRNAMT
104      INTEGER            INFOT, NOUT
105*     ..
106*     .. Common blocks ..
107      COMMON             / INFOC / INFOT, NOUT, OK, LERR
108      COMMON             / SRNAMC / SRNAMT
109*     ..
110*     .. Intrinsic Functions ..
111      INTRINSIC          REAL
112*     ..
113*     .. Executable Statements ..
114*
115      NOUT = NUNIT
116      WRITE( NOUT, FMT = * )
117      C2 = PATH( 2: 3 )
118*
119*     Set the variables to innocuous values.
120*
121      DO 20 J = 1, NMAX
122         DO 10 I = 1, NMAX
123            A( I, J ) = 1. / REAL( I+J )
124            AF( I, J ) = 1. / REAL( I+J )
125   10    CONTINUE
126         B( J ) = 0.
127         R1( J ) = 0.
128         R2( J ) = 0.
129         W( J ) = 0.
130         X( J ) = 0.
131         S( J ) = 0.
132         IP( J ) = J
133         IW( J ) = J
134   20 CONTINUE
135      ANRM = 1.0
136      RCOND = 1.0
137      OK = .TRUE.
138*
139      IF( LSAMEN( 2, C2, 'SY' ) ) THEN
140*
141*        Test error exits of the routines that use factorization
142*        of a symmetric indefinite matrix with patrial
143*        (Bunch-Kaufman) pivoting.
144*
145*        SSYTRF
146*
147         SRNAMT = 'SSYTRF'
148         INFOT = 1
149         CALL SSYTRF( '/', 0, A, 1, IP, W, 1, INFO )
150         CALL CHKXER( 'SSYTRF', INFOT, NOUT, LERR, OK )
151         INFOT = 2
152         CALL SSYTRF( 'U', -1, A, 1, IP, W, 1, INFO )
153         CALL CHKXER( 'SSYTRF', INFOT, NOUT, LERR, OK )
154         INFOT = 4
155         CALL SSYTRF( 'U', 2, A, 1, IP, W, 4, INFO )
156         CALL CHKXER( 'SSYTRF', INFOT, NOUT, LERR, OK )
157*
158*        SSYTF2
159*
160         SRNAMT = 'SSYTF2'
161         INFOT = 1
162         CALL SSYTF2( '/', 0, A, 1, IP, INFO )
163         CALL CHKXER( 'SSYTF2', INFOT, NOUT, LERR, OK )
164         INFOT = 2
165         CALL SSYTF2( 'U', -1, A, 1, IP, INFO )
166         CALL CHKXER( 'SSYTF2', INFOT, NOUT, LERR, OK )
167         INFOT = 4
168         CALL SSYTF2( 'U', 2, A, 1, IP, INFO )
169         CALL CHKXER( 'SSYTF2', INFOT, NOUT, LERR, OK )
170*
171*        SSYTRI
172*
173         SRNAMT = 'SSYTRI'
174         INFOT = 1
175         CALL SSYTRI( '/', 0, A, 1, IP, W, INFO )
176         CALL CHKXER( 'SSYTRI', INFOT, NOUT, LERR, OK )
177         INFOT = 2
178         CALL SSYTRI( 'U', -1, A, 1, IP, W, INFO )
179         CALL CHKXER( 'SSYTRI', INFOT, NOUT, LERR, OK )
180         INFOT = 4
181         CALL SSYTRI( 'U', 2, A, 1, IP, W, INFO )
182         CALL CHKXER( 'SSYTRI', INFOT, NOUT, LERR, OK )
183*
184*        SSYTRI2
185*
186         SRNAMT = 'SSYTRI2'
187         INFOT = 1
188         CALL SSYTRI2( '/', 0, A, 1, IP, W, IW, INFO )
189         CALL CHKXER( 'SSYTRI', INFOT, NOUT, LERR, OK )
190         INFOT = 2
191         CALL SSYTRI2( 'U', -1, A, 1, IP, W, IW, INFO )
192         CALL CHKXER( 'SSYTRI', INFOT, NOUT, LERR, OK )
193         INFOT = 4
194         CALL SSYTRI2( 'U', 2, A, 1, IP, W, IW, INFO )
195         CALL CHKXER( 'SSYTRI', INFOT, NOUT, LERR, OK )
196*
197*        SSYTRS
198*
199         SRNAMT = 'SSYTRS'
200         INFOT = 1
201         CALL SSYTRS( '/', 0, 0, A, 1, IP, B, 1, INFO )
202         CALL CHKXER( 'SSYTRS', INFOT, NOUT, LERR, OK )
203         INFOT = 2
204         CALL SSYTRS( 'U', -1, 0, A, 1, IP, B, 1, INFO )
205         CALL CHKXER( 'SSYTRS', INFOT, NOUT, LERR, OK )
206         INFOT = 3
207         CALL SSYTRS( 'U', 0, -1, A, 1, IP, B, 1, INFO )
208         CALL CHKXER( 'SSYTRS', INFOT, NOUT, LERR, OK )
209         INFOT = 5
210         CALL SSYTRS( 'U', 2, 1, A, 1, IP, B, 2, INFO )
211         CALL CHKXER( 'SSYTRS', INFOT, NOUT, LERR, OK )
212         INFOT = 8
213         CALL SSYTRS( 'U', 2, 1, A, 2, IP, B, 1, INFO )
214         CALL CHKXER( 'SSYTRS', INFOT, NOUT, LERR, OK )
215*
216*        SSYRFS
217*
218         SRNAMT = 'SSYRFS'
219         INFOT = 1
220         CALL SSYRFS( '/', 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2, W,
221     $                IW, INFO )
222         CALL CHKXER( 'SSYRFS', INFOT, NOUT, LERR, OK )
223         INFOT = 2
224         CALL SSYRFS( 'U', -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
225     $                W, IW, INFO )
226         CALL CHKXER( 'SSYRFS', INFOT, NOUT, LERR, OK )
227         INFOT = 3
228         CALL SSYRFS( 'U', 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
229     $                W, IW, INFO )
230         CALL CHKXER( 'SSYRFS', INFOT, NOUT, LERR, OK )
231         INFOT = 5
232         CALL SSYRFS( 'U', 2, 1, A, 1, AF, 2, IP, B, 2, X, 2, R1, R2, W,
233     $                IW, INFO )
234         CALL CHKXER( 'SSYRFS', INFOT, NOUT, LERR, OK )
235         INFOT = 7
236         CALL SSYRFS( 'U', 2, 1, A, 2, AF, 1, IP, B, 2, X, 2, R1, R2, W,
237     $                IW, INFO )
238         CALL CHKXER( 'SSYRFS', INFOT, NOUT, LERR, OK )
239         INFOT = 10
240         CALL SSYRFS( 'U', 2, 1, A, 2, AF, 2, IP, B, 1, X, 2, R1, R2, W,
241     $                IW, INFO )
242         CALL CHKXER( 'SSYRFS', INFOT, NOUT, LERR, OK )
243         INFOT = 12
244         CALL SSYRFS( 'U', 2, 1, A, 2, AF, 2, IP, B, 2, X, 1, R1, R2, W,
245     $                IW, INFO )
246         CALL CHKXER( 'SSYRFS', INFOT, NOUT, LERR, OK )
247*
248*        SSYRFSX
249*
250         N_ERR_BNDS = 3
251         NPARAMS = 0
252         SRNAMT = 'SSYRFSX'
253         INFOT = 1
254         CALL SSYRFSX( '/', EQ, 0, 0, A, 1, AF, 1, IP, S, B, 1, X, 1,
255     $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
256     $        PARAMS, W, IW, INFO )
257         CALL CHKXER( 'SSYRFSX', INFOT, NOUT, LERR, OK )
258         INFOT = 2
259         CALL SSYRFSX( 'U', EQ, -1, 0, A, 1, AF, 1, IP, S, B, 1, X, 1,
260     $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
261     $        PARAMS, W, IW, INFO )
262         CALL CHKXER( 'SSYRFSX', INFOT, NOUT, LERR, OK )
263         EQ = 'N'
264         INFOT = 3
265         CALL SSYRFSX( 'U', EQ, -1, 0, A, 1, AF, 1, IP, S, B, 1, X, 1,
266     $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
267     $        PARAMS, W, IW, INFO )
268         CALL CHKXER( 'SSYRFSX', INFOT, NOUT, LERR, OK )
269         INFOT = 4
270         CALL SSYRFSX( 'U', EQ, 0, -1, A, 1, AF, 1, IP, S, B, 1, X, 1,
271     $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
272     $        PARAMS, W, IW, INFO )
273         CALL CHKXER( 'SSYRFSX', INFOT, NOUT, LERR, OK )
274         INFOT = 6
275         CALL SSYRFSX( 'U', EQ, 2, 1, A, 1, AF, 2, IP, S, B, 2, X, 2,
276     $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
277     $        PARAMS, W, IW, INFO )
278         CALL CHKXER( 'SSYRFSX', INFOT, NOUT, LERR, OK )
279         INFOT = 8
280         CALL SSYRFSX( 'U', EQ, 2, 1, A, 2, AF, 1, IP, S, B, 2, X, 2,
281     $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
282     $        PARAMS, W, IW, INFO )
283         CALL CHKXER( 'SSYRFSX', INFOT, NOUT, LERR, OK )
284         INFOT = 12
285         CALL SSYRFSX( 'U', EQ, 2, 1, A, 2, AF, 2, IP, S, B, 1, X, 2,
286     $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
287     $        PARAMS, W, IW, INFO )
288         CALL CHKXER( 'SSYRFSX', INFOT, NOUT, LERR, OK )
289         INFOT = 14
290         CALL SSYRFSX( 'U', EQ, 2, 1, A, 2, AF, 2, IP, S, B, 2, X, 1,
291     $        RCOND, BERR, N_ERR_BNDS, ERR_BNDS_N, ERR_BNDS_C, NPARAMS,
292     $        PARAMS, W, IW, INFO )
293         CALL CHKXER( 'SSYRFSX', INFOT, NOUT, LERR, OK )
294*
295*        SSYCON
296*
297         SRNAMT = 'SSYCON'
298         INFOT = 1
299         CALL SSYCON( '/', 0, A, 1, IP, ANRM, RCOND, W, IW, INFO )
300         CALL CHKXER( 'SSYCON', INFOT, NOUT, LERR, OK )
301         INFOT = 2
302         CALL SSYCON( 'U', -1, A, 1, IP, ANRM, RCOND, W, IW, INFO )
303         CALL CHKXER( 'SSYCON', INFOT, NOUT, LERR, OK )
304         INFOT = 4
305         CALL SSYCON( 'U', 2, A, 1, IP, ANRM, RCOND, W, IW, INFO )
306         CALL CHKXER( 'SSYCON', INFOT, NOUT, LERR, OK )
307         INFOT = 6
308         CALL SSYCON( 'U', 1, A, 1, IP, -1.0, RCOND, W, IW, INFO )
309         CALL CHKXER( 'SSYCON', INFOT, NOUT, LERR, OK )
310*
311      ELSE IF( LSAMEN( 2, C2, 'SR' ) ) THEN
312*
313*        Test error exits of the routines that use factorization
314*        of a symmetric indefinite matrix with rook
315*        (bounded Bunch-Kaufman) pivoting.
316*
317*        SSYTRF_ROOK
318*
319         SRNAMT = 'SSYTRF_ROOK'
320         INFOT = 1
321         CALL SSYTRF_ROOK( '/', 0, A, 1, IP, W, 1, INFO )
322         CALL CHKXER( 'SSYTRF_ROOK', INFOT, NOUT, LERR, OK )
323         INFOT = 2
324         CALL SSYTRF_ROOK( 'U', -1, A, 1, IP, W, 1, INFO )
325         CALL CHKXER( 'SSYTRF_ROOK', INFOT, NOUT, LERR, OK )
326         INFOT = 4
327         CALL SSYTRF_ROOK( 'U', 2, A, 1, IP, W, 4, INFO )
328         CALL CHKXER( 'SSYTRF_ROOK', INFOT, NOUT, LERR, OK )
329*
330*        SSYTF2_ROOK
331*
332         SRNAMT = 'SSYTF2_ROOK'
333         INFOT = 1
334         CALL SSYTF2_ROOK( '/', 0, A, 1, IP, INFO )
335         CALL CHKXER( 'SSYTF2_ROOK', INFOT, NOUT, LERR, OK )
336         INFOT = 2
337         CALL SSYTF2_ROOK( 'U', -1, A, 1, IP, INFO )
338         CALL CHKXER( 'SSYTF2_ROOK', INFOT, NOUT, LERR, OK )
339         INFOT = 4
340         CALL SSYTF2_ROOK( 'U', 2, A, 1, IP, INFO )
341         CALL CHKXER( 'SSYTF2_ROOK', INFOT, NOUT, LERR, OK )
342*
343*        SSYTRI_ROOK
344*
345         SRNAMT = 'SSYTRI_ROOK'
346         INFOT = 1
347         CALL SSYTRI_ROOK( '/', 0, A, 1, IP, W, INFO )
348         CALL CHKXER( 'SSYTRI_ROOK', INFOT, NOUT, LERR, OK )
349         INFOT = 2
350         CALL SSYTRI_ROOK( 'U', -1, A, 1, IP, W, INFO )
351         CALL CHKXER( 'SSYTRI_ROOK', INFOT, NOUT, LERR, OK )
352         INFOT = 4
353         CALL SSYTRI_ROOK( 'U', 2, A, 1, IP, W, INFO )
354         CALL CHKXER( 'SSYTRI_ROOK', INFOT, NOUT, LERR, OK )
355*
356*        SSYTRS_ROOK
357*
358         SRNAMT = 'SSYTRS_ROOK'
359         INFOT = 1
360         CALL SSYTRS_ROOK( '/', 0, 0, A, 1, IP, B, 1, INFO )
361         CALL CHKXER( 'SSYTRS_ROOK', INFOT, NOUT, LERR, OK )
362         INFOT = 2
363         CALL SSYTRS_ROOK( 'U', -1, 0, A, 1, IP, B, 1, INFO )
364         CALL CHKXER( 'SSYTRS_ROOK', INFOT, NOUT, LERR, OK )
365         INFOT = 3
366         CALL SSYTRS_ROOK( 'U', 0, -1, A, 1, IP, B, 1, INFO )
367         CALL CHKXER( 'SSYTRS_ROOK', INFOT, NOUT, LERR, OK )
368         INFOT = 5
369         CALL SSYTRS_ROOK( 'U', 2, 1, A, 1, IP, B, 2, INFO )
370         CALL CHKXER( 'SSYTRS_ROOK', INFOT, NOUT, LERR, OK )
371         INFOT = 8
372         CALL SSYTRS_ROOK( 'U', 2, 1, A, 2, IP, B, 1, INFO )
373         CALL CHKXER( 'SSYTRS_ROOK', INFOT, NOUT, LERR, OK )
374*
375*        SSYCON_ROOK
376*
377         SRNAMT = 'SSYCON_ROOK'
378         INFOT = 1
379         CALL SSYCON_ROOK( '/', 0, A, 1, IP, ANRM, RCOND, W, IW, INFO )
380         CALL CHKXER( 'SSYCON_ROOK', INFOT, NOUT, LERR, OK )
381         INFOT = 2
382         CALL SSYCON_ROOK( 'U', -1, A, 1, IP, ANRM, RCOND, W, IW, INFO )
383         CALL CHKXER( 'SSYCON_ROOK', INFOT, NOUT, LERR, OK )
384         INFOT = 4
385         CALL SSYCON_ROOK( 'U', 2, A, 1, IP, ANRM, RCOND, W, IW, INFO )
386         CALL CHKXER( 'SSYCON_ROOK', INFOT, NOUT, LERR, OK )
387         INFOT = 6
388         CALL SSYCON_ROOK( 'U', 1, A, 1, IP, -1.0, RCOND, W, IW, INFO )
389         CALL CHKXER( 'SSYCON_ROOK', INFOT, NOUT, LERR, OK )
390*
391*        Test error exits of the routines that use factorization
392*        of a symmetric indefinite packed matrix with patrial
393*        (Bunch-Kaufman) pivoting.
394*
395      ELSE IF( LSAMEN( 2, C2, 'SP' ) ) THEN
396*
397*        SSPTRF
398*
399         SRNAMT = 'SSPTRF'
400         INFOT = 1
401         CALL SSPTRF( '/', 0, A, IP, INFO )
402         CALL CHKXER( 'SSPTRF', INFOT, NOUT, LERR, OK )
403         INFOT = 2
404         CALL SSPTRF( 'U', -1, A, IP, INFO )
405         CALL CHKXER( 'SSPTRF', INFOT, NOUT, LERR, OK )
406*
407*        SSPTRI
408*
409         SRNAMT = 'SSPTRI'
410         INFOT = 1
411         CALL SSPTRI( '/', 0, A, IP, W, INFO )
412         CALL CHKXER( 'SSPTRI', INFOT, NOUT, LERR, OK )
413         INFOT = 2
414         CALL SSPTRI( 'U', -1, A, IP, W, INFO )
415         CALL CHKXER( 'SSPTRI', INFOT, NOUT, LERR, OK )
416*
417*        SSPTRS
418*
419         SRNAMT = 'SSPTRS'
420         INFOT = 1
421         CALL SSPTRS( '/', 0, 0, A, IP, B, 1, INFO )
422         CALL CHKXER( 'SSPTRS', INFOT, NOUT, LERR, OK )
423         INFOT = 2
424         CALL SSPTRS( 'U', -1, 0, A, IP, B, 1, INFO )
425         CALL CHKXER( 'SSPTRS', INFOT, NOUT, LERR, OK )
426         INFOT = 3
427         CALL SSPTRS( 'U', 0, -1, A, IP, B, 1, INFO )
428         CALL CHKXER( 'SSPTRS', INFOT, NOUT, LERR, OK )
429         INFOT = 7
430         CALL SSPTRS( 'U', 2, 1, A, IP, B, 1, INFO )
431         CALL CHKXER( 'SSPTRS', INFOT, NOUT, LERR, OK )
432*
433*        SSPRFS
434*
435         SRNAMT = 'SSPRFS'
436         INFOT = 1
437         CALL SSPRFS( '/', 0, 0, A, AF, IP, B, 1, X, 1, R1, R2, W, IW,
438     $                INFO )
439         CALL CHKXER( 'SSPRFS', INFOT, NOUT, LERR, OK )
440         INFOT = 2
441         CALL SSPRFS( 'U', -1, 0, A, AF, IP, B, 1, X, 1, R1, R2, W, IW,
442     $                INFO )
443         CALL CHKXER( 'SSPRFS', INFOT, NOUT, LERR, OK )
444         INFOT = 3
445         CALL SSPRFS( 'U', 0, -1, A, AF, IP, B, 1, X, 1, R1, R2, W, IW,
446     $                INFO )
447         CALL CHKXER( 'SSPRFS', INFOT, NOUT, LERR, OK )
448         INFOT = 8
449         CALL SSPRFS( 'U', 2, 1, A, AF, IP, B, 1, X, 2, R1, R2, W, IW,
450     $                INFO )
451         CALL CHKXER( 'SSPRFS', INFOT, NOUT, LERR, OK )
452         INFOT = 10
453         CALL SSPRFS( 'U', 2, 1, A, AF, IP, B, 2, X, 1, R1, R2, W, IW,
454     $                INFO )
455         CALL CHKXER( 'SSPRFS', INFOT, NOUT, LERR, OK )
456*
457*        SSPCON
458*
459         SRNAMT = 'SSPCON'
460         INFOT = 1
461         CALL SSPCON( '/', 0, A, IP, ANRM, RCOND, W, IW, INFO )
462         CALL CHKXER( 'SSPCON', INFOT, NOUT, LERR, OK )
463         INFOT = 2
464         CALL SSPCON( 'U', -1, A, IP, ANRM, RCOND, W, IW, INFO )
465         CALL CHKXER( 'SSPCON', INFOT, NOUT, LERR, OK )
466         INFOT = 5
467         CALL SSPCON( 'U', 1, A, IP, -1.0, RCOND, W, IW, INFO )
468         CALL CHKXER( 'SSPCON', INFOT, NOUT, LERR, OK )
469      END IF
470*
471*     Print a summary line.
472*
473      CALL ALAESM( PATH, OK, NOUT )
474*
475      RETURN
476*
477*     End of SERRSY
478*
479      END
480