diff --git a/flang/runtime/namelist.cpp b/flang/runtime/namelist.cpp --- a/flang/runtime/namelist.cpp +++ b/flang/runtime/namelist.cpp @@ -99,7 +99,7 @@ std::optional value; std::optional ch{io.GetCurrentChar()}; bool negate{ch && *ch == '-'}; - if (negate) { + if ((ch && *ch == '+') || negate) { io.HandleRelativePosition(1); ch = io.GetCurrentChar(); } diff --git a/flang/unittests/Runtime/Namelist.cpp b/flang/unittests/Runtime/Namelist.cpp --- a/flang/unittests/Runtime/Namelist.cpp +++ b/flang/unittests/Runtime/Namelist.cpp @@ -135,7 +135,7 @@ aDesc->GetDimension(1).SetBounds(-1, 1); const NamelistGroup::Item items[]{{"a", *aDesc}}; const NamelistGroup group{"justa", 1, items}; - static char t1[]{"&justa A(0,1:-1:-2)=1 2/"}; + static char t1[]{"&justa A(0,+1:-1:-2)=1 2/"}; StaticDescriptor<1, true> statDesc; Descriptor &internalDesc{statDesc.descriptor()}; internalDesc.Establish(TypeCode{CFI_type_char}, @@ -223,7 +223,7 @@ std::vector{"abcdefgh", "ijklmnop"}, 8)}; const NamelistGroup::Item items[]{{"a", *scDesc}}; const NamelistGroup group{"justa", 1, items}; - static char t1[]{"&justa A(:)(2:5)='BCDE' 'JKLM'/"}; + static char t1[]{"&justa A(:)(2:+5)='BCDE' 'JKLM'/"}; StaticDescriptor<1, true> statDesc; Descriptor &internalDesc{statDesc.descriptor()}; internalDesc.Establish(TypeCode{CFI_type_char},