(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