(j3.2006) (SC22WG5.4635) Part 2 of the standard
John Reid
John.Reid
Tue Mar 13 16:04:02 EDT 2012
WG5,
I promised at Garching to look into the conversion to Fortran 2003 of
the procedures of the varying length strings module that are not
included in Part 1 of the Standard. These are the I/O procedures GET,
PUT and PUT_LINE and the substring manipulation procedures EXTRACT,
INSERT, REMOVE, REPLACE, and INSERT.
I have made a new module that compiles under the Nag compiler but I have
tested it only with new versions of the two example programs that are in
Part 2.
Most occurrences of
type(VARYING_STRING)
were replaced by
CHARACTER(LEN=:),ALLOCATABLE
but
type(VARYING_STRING),INTENT(IN)
was replaced by
CHARACTER(LEN=*),INTENT(IN)
This resulted in arguments that were previously documented as either of
type CHARACTER or VARYING_STRING become only of type CHARACTER. The
number of specific procedures reduced from 40 to 15.
There were obvious mechanical changes needed within the procedures.
The subroutine SPLIT cannot be elemental because of having an
allocatable argument. Note that all the elements of a character array
have to have the same character length, so this restriction really is
needed.
A similar problem occurs in the vocabulary test, where an array holds
words of varying length. I got round this by using a linked list.
This has taken me a day and a bit of work. To get it all tested and
documented will be quite a bit more work, probably at least a week. How
valuable will this be?
Lawrie, do you have a view? Can you help? For instance, do you have a
test deck for the old code?
Cheers,
John.
More information about the J3
mailing list