<div dir="auto"><div class="gmail_quote" dir="auto"><div dir="ltr" class="gmail_attr">Hello,<br></div><div lang="EN-US" link="#0563C1" vlink="#954F72"><div class="m_-1836427288393460767WordSection1"><p class="MsoNormal"><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">According to specification R1401, a Fortran main program *must* have an “end statement” whereas other parts are optional.<u></u><u></u></p>
<p class="MsoNormal">// R1401 main-program -><u></u><u></u></p>
<p class="MsoNormal">//         [program-stmt] [specification-part] [execution-part]<u></u><u></u></p>
<p class="MsoNormal">//         [internal-subprogram-part] end-program-stmt<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Thus, the below case.f90 is a legitimate fortran program:<u></u><u></u></p>
<p class="MsoNormal">[user@localhost ~/F18]$ cat -n case.f90<u></u><u></u></p>
<p class="MsoNormal">     1  end  !only end-program-stmt is specified.<u></u><u></u></p>
<p class="MsoNormal">[user@localhost ~/F18]$<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">The implementation of MainProgram structure (“lib/parser/parse-tree.h”) shows that only “ProgramStmt” and “InternalSubprogramPart” are optional.<u></u><u></u></p>
<p class="MsoNormal">struct MainProgram {<u></u><u></u></p>
<p class="MsoNormal">  TUPLE_CLASS_BOILERPLATE(MainProgram);<u></u><u></u></p>
<p class="MsoNormal">  std::tuple<std::optional<Statement<ProgramStmt>>, SpecificationPart,<u></u><u></u></p>
<p class="MsoNormal">      ExecutionPart, std::optional<InternalSubprogramPart>,<u></u><u></u></p>
<p class="MsoNormal">      Statement<EndProgramStmt>><u></u><u></u></p>
<p class="MsoNormal">      t;<u></u><u></u></p>
<p class="MsoNormal">};<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Why “SpecificationPart” and “ExecutionPart” are not implemented as optional (std::optional), while these are optional similar to “ProgramStmt” and “InternalSubprogramPart”?<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Thanks in anticipation.</p></div></div>

</div></div>