To: J3 J3/22-158r1 From: Robert Corbett Subject: BLOCK construct syntax References: J3/22-007r1 Date: 2022-July-18 Consider the program REAL X DATA X/0.0/ END This program does not use any obsolescent syntax. The DATA statement is a declaration construct in the specification part of the main program. Next consider the program BLOCK REAL X DATA X/0.0/ END BLOCK END This program does use obsolescent syntax. Here, the DATA statement is an execution part construct in the block of the BLOCK construct. A DATA statement that appears as an execution part construct is obsolescent syntax. Item (2) of the list in subclause 4.2 "Conformance" requires a conforming processor to be able to detect and report use of obsolescent features. The obsolescent syntax appears to have been added as part of the work to make DATA statements among executables obsolescent. Note that in this case, the DATA statement is not among executables. For now, the only harm is a potential warning message about a condition which it seems should be allowed. If the obsolescent syntax is eventually dropped, the second program will cease being conformant. There are many ways to allow the second program. The edits I propose are the easiest to understand of the edits I have considered. When the obsolescent syntax is dropped, a simpler fix will be possible. EDITS: [187:8-9, "11.1.4 BLOCK construct"] Replace "[ [ /declaration-construct/ ] ... /specification-construct/ ]" with "[ /declaration-construct/ ] ..." [187:14+, "11.1.4 BLOCK construct"] Insert the constraint "C1108a The \si{block} of a \si{block-construct} shall not begin with a FORMAT statement\obs{or a DATA statement}.