The answer lies in your other thread (Error: IF clause at (1) requires a scalar LOGICAL expression).
LOGICAL FUNCTION RUZE(CARD1,CARD2)
IMPLICIT NONE
CHARACTER CARD1*(*)
CHARACTER(*) ::CARD2(:) ! assumed-shape array, previously assumed-size
You provide one. The two options are 1) any procedure which calls RUZE
should contain a block such as
INTERFACE
LOGICAL FUNCTION RUZE(CARD1,CARD2)
IMPLICIT NONE
CHARACTER CARD1*(*)
CHARACTER(*) ::CARD2(:)
END FUNCTION
END INTERFACE
You can use an include statement if want to save yourself the typing. The better solution 2) is to define the interface (or the entire) procedure in a named module. Calling routines can then use
that module.
Alternatively, you could get rid of the assumed-shape array (the one ending with (:)
) and use some F77-conforming solution instead. Unfortunately, given the changes you are making, it’s almost impossible to figure out your intentions. Are CARD1
and CARD2
supposed to be arrays or scalars (single cards)?