En diskussion av begreppet finns därför nu här.
När de så småningom försvinner är det enkelt att koda om dem som subrutiner. Flera alternativ för detta ges nedan.
PROGRAM SMAA_B_FUNKTION
IMPLICIT NONE
CHARACTER(LEN=20) STORA_B
CHARACTER(LEN=20) SMAA_B
STORA_B = 'BOEIN'
WRITE(*,*) SMAA_B(STORA_B)
END
CHARACTER(LEN=*) FUNCTION SMAA_B(STORA_B)
IMPLICIT NONE
INTEGER I
CHARACTER(LEN=*) STORA_B
INTEGER LAENGD
LAENGD = LEN(TRIM(STORA_B))
SMAA_B = ' '
DO I = 1, LAENGD
SMAA_B(I:I) = ACHAR(IACHAR(STORA_B(I:I))+32)
END DO
END FUNCTION SMAA_B
Utmatningen från detta program blev boein.
Två speciella saker bör noteras.
PROGRAM SMAA_B_SUBRUTIN
IMPLICIT NONE
CHARACTER(LEN=20) STORA_B
CHARACTER(LEN=20) SMAA_B
STORA_B = 'BOEIN'
CALL BYT(STORA_B, SMAA_B)
WRITE(*,*) SMAA_B
END
SUBROUTINE BYT(STORA_B, SMAA_B)
IMPLICIT NONE
CHARACTER(LEN=*) STORA_B, SMAA_B
INTEGER I, LAENGD
LAENGD = LEN(TRIM(STORA_B))
SMAA_B = ' '
DO I = 1, LAENGD
SMAA_B(I:I) = ACHAR(IACHAR(STORA_B(I:I))+32)
END DO
END SUBROUTINE BYT
I varje fall på Cray är nollställningen av SMAA_B i början av subrutinen nödvändig för att undvika "skräp" i positionerna svarande mot avslutande blanka. Längden av textsträngen SMAA_B i subrutinen är hela tiden den som specificerats i den anropande rutinen (här huvudprogrammet).
Generaliseringar ges i övningen nedan.
Tyvärr visas inte de svenska bokstäverna längre ordentligt i dessa lösningar.