@@ -160,87 +160,135 @@ generics subgroup thought it should be updated.}
160
160
than a deferred constant, namelist group, requirement, or
161
161
template."
162
162
163
- <<<< whis is where we got to on Monday March 31, 2025 >>>>
163
+ In 2nd sentence of paragraph 1, insert "or template" after
164
+ "in the module" in both locations such that the sentence now
165
+ reads:
164
166
167
+ "An access-stmt without an access-id list specifies the default
168
+ accessibility of the identifiers of entities declared in the
169
+ module or template, and of entities accessed from a module whose
170
+ name does not appear in any access-stmt in the module or
171
+ template."
165
172
173
+ In last sentence of paragraph 1, insert "or template" after
174
+ "in a module" such that the sentence now reads:
166
175
167
- [120:37+] In 2nd sentence of paragraph 1, insert "or template" after
168
- "in the module" in both locations such that the sentence now
169
- reads:
170
- An access-stmt without an access-id list specifies the default
171
- accessibility of the identifiers of entities declared in the
172
- module or template, and of entities accessed from a module
173
- whose name does not appear in any access-stmt in the module or
174
- template.
175
-
176
- [120:43] In last sentence of paragraph 1, insert "or template" after
177
- "in a module" such that the sentence now reads:
178
- If no such statement appears in a module or template, the
179
- default is public accessibility.
180
-
181
- [121:1] In 1st sentence of paragraph 2, insert "or template" after "in
182
- the module" such that the sentence now reads:
183
- If an identifier is accessed by use association and not declared
184
- in the module or template, and the name of every module from
185
- which it is accessed appears in an access-stmt in the scoping
186
- unit, its default accessibility is PRIVATE if the access-spec in
187
- every such access-stmt is PRIVATE, or PUBLIC if the access-spec
188
- in any such access-stmt is PUBLIC.
176
+ "If no such statement appears in a module or template, the default
177
+ is public accessibility."
178
+
179
+ In 1st sentence of paragraph 2, insert "or template" after "in
180
+ the module" such that the sentence now reads:
181
+
182
+ "If an identifier is accessed by use association and not declared
183
+ in the module or template, and the name of every module from which
184
+ it is accessed appears in an access-stmt in the scoping unit, its
185
+ default accessibility is PRIVATE if the access-spec in every such
186
+ access-stmt is PRIVATE, or PUBLIC if the access-spec in any such
187
+ access-stmt is PUBLIC."
189
188
190
189
* 8.5.8.1 General
191
190
192
191
Change last entry for <array-spec> from:
193
- <<or>> <assumed-rank-spec>
192
+ " <<or>> <assumed-rank-spec>"
194
193
To:
195
- <<or>> <assumed-or-implied-rank-spec>
194
+ " <<or>> <assumed-or-implied-rank-spec>"
196
195
197
196
* 8.5.8.2 Explicit-shape array
198
197
199
- {UTI: It may be better to modify <explicit-shape-bounds-spec> to
200
- disambiguate <explicit-bounds-expr> for lower and upper bounds.
201
- This would make constraint for deferred constants clearer.}
198
+ Modify R818 to disambiguate lower and upper explicit bounds such that it reads:
199
+
200
+ "R818 <explicit-shape-bounds-spec>
201
+ <<is>> [ <lower-explicit-bounds-expr> : ] <upper-explicit-bounds-expr>
202
+ <<or>> <lower-bound> : <explicit-bounds-expr>
203
+ <<or>> <explicit-bounds-expr> : <upper-bound>
204
+ R818b <lower-explicit-bounds-expr> <<is>> <explicit-bounds-expr>
205
+ R818c <upper-explicit-bounds-expr> <<is>> <explicit-bounds-expr>
206
+ "
202
207
203
208
* 8.5.8.6 Implied-shape array
204
209
205
210
Modify the first sentence from:
206
- An implied-shape array is a named constant that takes its shape
207
- from the constant-expr in its declaration.
211
+ " An implied-shape array is a named constant that takes its shape
212
+ from the constant-expr in its declaration."
208
213
To:
209
- An implied-shape array is a named constant that takes its shape
214
+ " An implied-shape array is a named constant that takes its shape
210
215
from a constant expression. If it is a deferred constant, it takes
211
216
its shape from the associated instantiation argument, otherwise it
212
- takes its shape from the constant expression in its declaration.
217
+ takes its shape from the constant expression in its declaration."
213
218
214
219
Delete the first sentence in the last paragraph which reads:
215
220
216
221
The extent of each dimension of an implied-shape array is the same
217
222
as the extent of the corresponding dimension of the constant-expr.
218
223
219
- Insert new section after 8.5.8.7:
224
+ * 8.5.8.7 Assumed-rank entity
220
225
221
- 8.5.8.7b Implied -rank entity
226
+ Change name of section to "Assumed -rank or implied-rank entities"
222
227
223
- An implied -rank entity is an entity whose rank becomes defined only
224
- when the template in which it appears is instantiated.
228
+ Modify text in former 8.5.8.7 (Assumed -rank entity) to use new
229
+ syntax term <assumed-or-implied-rank-spec> such that it now reads:
225
230
226
- {UTI: Also make sure it works with SELECT GENERIC RANK and spell out
227
- what can be done with implied-rank entities.}
231
+ "An assumed-rank entity is a dummy data object whose rank is
232
+ assumed from its effective argument, or the associate name of a
233
+ RANK DEFAULT block in a SELECT RANK construct; this rank can be
234
+ zero. The bounds and shape of an assumed-rank entity with the
235
+ ALLOCATABLE or POINTER attribute are determined as specified in
236
+ 8.5.8.4. An assumed-rank entity is declared with an <array-spec>
237
+ that is an <assumed-or-implied-rank-spec>.
238
+
239
+ R827 assumed-or-implied-rank-spec is ..
240
+
241
+ C839 An assumed-rank entity shall be an associate name or a dummy
242
+ data object that does not have the CODIMENSION or VALUE
243
+ attribute.
244
+
245
+ C840 An assumed-rank variable name shall not appear in a
246
+ designator or expression except as an actual argument that
247
+ corresponds to a dummy argument that is assumed-rank, the
248
+ argument of the function C_LOC or C_SIZEOF from the intrinsic
249
+ module ISO_C_BINDING (18.2), the first dummy argument of an
250
+ intrinsic inquiry function, or the selector of a SELECT RANK
251
+ statement.
228
252
229
- R287b <implied-rank-spec> <<is>> ..
253
+ C841 If an assumed-size or nonallocatable nonpointer assumed-rank
254
+ array is an actual argument that corresponds to a dummy
255
+ argument that is an INTENT (OUT) assumed-rank array, it shall
256
+ not be polymorphic, finalizable, of a type with an
257
+ allocatable ultimate component, or of a type for which
258
+ default initialization is specified.
230
259
231
- C841b (R287b) An implied-rank entity shall be a <deferred-const>.
260
+ * Insert new section after 8.5.8.7.1:
261
+
262
+ "8.5.8.7.2 Implied-rank entity
263
+
264
+ An implied-rank entity is an entity whose rank becomes defined
265
+ only within the instantiation of a template. The following are
266
+ implied-rank entities:
267
+
268
+ - deferred constant declared with <assumed-or-implied-rank-spec>
269
+
270
+ - variable, dummy argument, or deferred constant whose rank is
271
+ declared to be a deferred integer, scalar constant expression
272
+
273
+ - variable, dummy argument, or deferred constant whose shape is
274
+ declared to be a deferred integer, rank-1 array expression.
275
+
276
+ {UTI: Also make sure it works with SELECT GENERIC RANK and spell out
277
+ what can be done with implied-rank entities.}
232
278
233
279
NOTE
234
280
235
281
The following are examples of implied-rank entities
236
282
237
283
TEMPLATE EXAMPLE(C, S, N)
238
- DEFERRED INTEGER, PARAMETER :: C(.. )
239
- ! implied-shape & implied-rank
240
- DEFERRED INTEGER, PARAMETER :: S(*), N
241
- INTEGER , PARAMETER :: B(S) = 1 ! explicit-shape & implied- rank
284
+ DEFERRED INTEGER, PARAMETER :: S(* )
285
+ DEFERRED INTEGER, PARAMETER :: C(..) ! implied-rank
286
+ INTEGER, PARAMETER :: B(S) = 1 ! implied-rank
287
+ REAL , PARAMETER, RANK(RANK(C)) :: D ! implied rank
242
288
END TEMPLATE
243
289
290
+ << this is where we got on 2025-04-07 >>
291
+
244
292
* 8.5.17 RANK clause
245
293
246
294
Replace constraint C864 which states:
0 commit comments