When a dummy argument is a character array the passed-length mechanism can be used in the same way as for a character variable. Every element of the dummy array has the length that was passed in from the actual argument.
For example, a subroutine designed to sort an array of character strings into ascending order might start with specification statements like these:
SUBROUTINE SORT(NELS, NAMES)
INTEGER NELS
CHARACTER NAMES(NELS)*(*)
Alternatively the actual argument can be a character variable or
substring. In such cases it usually makes more sense not to use the
passed-length mechanism. For example an actual argument
declared: CHARACTER*80 LINE
SUBROUTINE SPLIT(LINE)
CHARACTER LINE(4)*20
Although this is valid Fortran, it is not a very satisfactory programming technique to use a procedure call to alter the shape of an item so radically.