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_BUtmatningen 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.