34 lines
1.4 KiB
Fortran
34 lines
1.4 KiB
Fortran
SUBROUTINE POOBAH(TEXT,L,SEP) !I've got a little list!
|
|
CHARACTER*(*) TEXT !The supplied scratchpad.
|
|
INTEGER L !Its length.
|
|
CHARACTER*(*) SEP !The separator to be used.
|
|
INTEGER N !A counter.
|
|
L = 0 !No text is in place.
|
|
N = 0 !No items added.
|
|
CALL ADDITEM("first") !Here we go.
|
|
CALL ADDITEM("second")
|
|
CALL ADDITEM("third")
|
|
CONTAINS !Madly, defined after usage.
|
|
SUBROUTINE ADDITEM(X) !A contained routine.
|
|
CHARACTER*(*) X !The text of the item.
|
|
N = N + 1 !Count another item in.
|
|
TEXT(L + 1:L + 1) = CHAR(ICHAR("0") + N) !Place the single-digit number.
|
|
L = L + 1 !Rather than mess with unknown-length numbers.
|
|
LX = LEN(SEP) !Now for the separator.
|
|
TEXT(L + 1:L + LX) = SEP !Placed.
|
|
L = L + LX !Advance the finger.
|
|
LX = LEN(X) !Trailing spaces will be included.
|
|
TEXT(L + 1:L + LX) = X !Placed.
|
|
L = L + LX !Advance the finger.
|
|
L = L + 1 !Finally,
|
|
TEXT(L:L) = CHAR(10) !Append an ASCII line feed. Starts a new line.
|
|
END SUBROUTINE ADDITEM !That was bitty.
|
|
END SUBROUTINE POOBAH !But only had to be written once.
|
|
|
|
PROGRAM POKE
|
|
CHARACTER*666 TEXT !Surely sufficient.
|
|
INTEGER L
|
|
CALL POOBAH(TEXT,L,". ")
|
|
WRITE (6,"(A)") TEXT(1:L)
|
|
END
|