@@ -183,8 +183,11 @@ END PROGRAM FC_AVAIL_KINDS
183
183
PROGRAM FC08_AVAIL_KINDS
184
184
USE , INTRINSIC :: ISO_FORTRAN_ENV, ONLY : stdout= >OUTPUT_UNIT, integer_kinds, real_kinds, logical_kinds
185
185
IMPLICIT NONE
186
- INTEGER :: ik, jk, k, max_decimal_prec
186
+ INTEGER :: ik, jk, k, kk, max_decimal_prec
187
187
INTEGER :: num_rkinds, num_ikinds, num_lkinds
188
+ LOGICAL :: found_rkinds( 1 :SIZE (real_kinds) )
189
+ CHARACTER (LEN= 1 ) :: sep
190
+
188
191
189
192
! Find integer KINDs
190
193
@@ -203,24 +206,29 @@ PROGRAM FC08_AVAIL_KINDS
203
206
204
207
num_rkinds = SIZE (real_kinds)
205
208
209
+ ! some compilers (ACfL 24) reported REAL=16 kind, but refused to
210
+ ! compile with it. Verify the kind can be selected in SELECTED_REAL_KIND.
211
+ found_rkinds(:) = .FALSE.
206
212
max_decimal_prec = 1
207
213
208
214
prec: DO ik = 2 , 36
209
215
exp: DO jk = 1 , 700
210
216
k = SELECTED_REAL_KIND (ik,jk)
211
217
IF (k.LT. 0 ) EXIT exp
218
+ DO kk = 1 ,num_rkinds
219
+ IF (real_kinds(kk) == k) found_rkinds(kk) = .TRUE.
220
+ ENDDO
212
221
max_decimal_prec = ik
213
222
ENDDO exp
214
223
ENDDO prec
215
224
225
+ sep = " "
216
226
DO k = 1 , num_rkinds
217
- WRITE (stdout,' (I0)' , ADVANCE= ' NO' ) real_kinds(k)
218
- IF (k.NE. num_rkinds)THEN
219
- WRITE (stdout,' (A)' ,ADVANCE= ' NO' ) ' ,'
220
- ELSE
221
- WRITE (stdout,' ()' )
222
- ENDIF
227
+ IF (.NOT. found_rkinds(k)) CYCLE
228
+ WRITE (stdout,' (A,I0)' , ADVANCE= ' NO' ) TRIM (sep), real_kinds(k)
229
+ sep = " ,"
223
230
ENDDO
231
+ WRITE (stdout,' ()' )
224
232
225
233
WRITE (stdout,' (I0)' ) max_decimal_prec
226
234
WRITE (stdout,' (I0)' ) num_ikinds
0 commit comments