```01:       SUBROUTINE DLAG2S( M, N, A, LDA, SA, LDSA, INFO )
02: *
03: *  -- LAPACK PROTOTYPE auxiliary routine (version 3.1.2) --
04: *  -- LAPACK is a software package provided by Univ. of Tennessee,    --
05: *  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
06: *     August 2007
07: *
08: *     ..
09: *     .. Scalar Arguments ..
10:       INTEGER            INFO, LDA, LDSA, M, N
11: *     ..
12: *     .. Array Arguments ..
13:       REAL               SA( LDSA, * )
14:       DOUBLE PRECISION   A( LDA, * )
15: *     ..
16: *
17: *  Purpose
18: *  =======
19: *
20: *  DLAG2S converts a DOUBLE PRECISION matrix, SA, to a SINGLE
21: *  PRECISION matrix, A.
22: *
23: *  RMAX is the overflow for the SINGLE PRECISION arithmetic
24: *  DLAG2S checks that all the entries of A are between -RMAX and
25: *  RMAX. If not the convertion is aborted and a flag is raised.
26: *
27: *  This is an auxiliary routine so there is no argument checking.
28: *
29: *  Arguments
30: *  =========
31: *
32: *  M       (input) INTEGER
33: *          The number of lines of the matrix A.  M >= 0.
34: *
35: *  N       (input) INTEGER
36: *          The number of columns of the matrix A.  N >= 0.
37: *
38: *  A       (input) DOUBLE PRECISION array, dimension (LDA,N)
39: *          On entry, the M-by-N coefficient matrix A.
40: *
41: *  LDA     (input) INTEGER
42: *          The leading dimension of the array A.  LDA >= max(1,M).
43: *
44: *  SA      (output) REAL array, dimension (LDSA,N)
45: *          On exit, if INFO=0, the M-by-N coefficient matrix SA; if
46: *          INFO>0, the content of SA is unspecified.
47: *
48: *  LDSA    (input) INTEGER
49: *          The leading dimension of the array SA.  LDSA >= max(1,M).
50: *
51: *  INFO    (output) INTEGER
52: *          = 0:  successful exit.
53: *          = 1:  an entry of the matrix A is greater than the SINGLE
54: *                PRECISION overflow threshold, in this case, the content
55: *                of SA in exit is unspecified.
56: *
57: *  =========
58: *
59: *     .. Local Scalars ..
60:       INTEGER            I, J
61:       DOUBLE PRECISION   RMAX
62: *     ..
63: *     .. External Functions ..
64:       REAL               SLAMCH
65:       EXTERNAL           SLAMCH
66: *     ..
67: *     .. Executable Statements ..
68: *
69:       RMAX = SLAMCH( 'O' )
70:       DO 20 J = 1, N
71:          DO 10 I = 1, M
72:             IF( ( A( I, J ).LT.-RMAX ) .OR. ( A( I, J ).GT.RMAX ) ) THEN
73:                INFO = 1
74:                GO TO 30
75:             END IF
76:             SA( I, J ) = A( I, J )
77:    10    CONTINUE
78:    20 CONTINUE
79:       INFO = 0
80:    30 CONTINUE
81:       RETURN
82: *
83: *     End of DLAG2S
84: *
85:       END
86: ```