Occasionally large fixed-font block letters are useful for generating an eye-catching message. The alphablock(3f)
and roach(3f)
procedures create messages that are hard to miss.
!NAME
! alphablock - write out string in large block letters
!SYNOPSIS/USAGE
!
! SUBROUTINE alphablock(STRING,IOUNIT)
! CHARACTER*132 STRING
! INTEGER IOUNIT
!
!DESCRIPTION
!
! Given a string up to 132 characters long, alphablock() writes out the string
! left-justified in large (13 lines x 8 columns) block letters starting in
! column 2.
!
! IOUNIT is the LUN for the file to write to.
!
! This can be used to make banners in program output files; it is also handy
! for making attention-catching notices in interactive programs.
!
!EXAMPLE
!
! program demo
! call alphablock('NOTICE',6)
! END
!
! would produce:
!
! XX XXX XXX XXXXXXX XXXXX XXXX XXXXXXX
! X X X X X X X X X X X X
! XX X X X X X X X
! XX X X X X X X X X
! X X X X X X X X XXXX
! X XX X X X X X X X
! X XX X X X X X X
! X X X X X X X X X X
! XXX X XXX XXX XXXXX XXXX XXXXXXX
!
! * References: none
! * Dependencies: none
! * Legal Restrictions: none. Public Domain
! * Authors: John S. Urban
! Test Program
!
! The test program reads strings from the command line.
! If there are no arguments the supported character set is printed,
! one letter at a time.
!-------------------------------------------------------------------------------
! Test Program:
program banner
implicit none
integer :: i
character :: arg*132
if(command_argument_count() .gt. 0)then ! if arguments are present print them
do i = 1 , command_argument_count()
call get_command_argument(i, arg)
call alphablock(arg(:len_trim(arg)),6)
enddo
else ! no arguments so run thru all available letters
call roach(6)
endif
end program banner
!-------------------------------------------------------------------------------
subroutine alphablock (STR,IOUT)
implicit none
character(len=*),parameter :: ident="@(#)alphablock:write up to 132 large block letters"
!-------------------------------------------------------------------------------
!()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()!
!-------------------------------------------------------------------------------
! Copyright (c) 1984, 1996, 2011 John S. Urban. Placed in the public domain
!
! Write a string up to 132 characters long as large block letters,
! left justified starting in column 2.
!
! Letters are 13 lines tall and 8 characters wide..
!
! alphablock can be used for such tasks as
! o making a banner page for output delivery
! o for an eye-readable title on a piece of microfiche
! o get someone's attention.
!-------------------------------------------------------------------------------
!()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()!
!-------------------------------------------------------------------------------
! ******************************************************************
CHARACTER(LEN=*),INTENT(IN) :: STR ! string to write
INTEGER,INTENT(IN) :: IOUT ! unit number to write to
! ******************************************************************
CHARACTER(LEN=8),SAVE :: ALF(13,95) ! store block letters
INTEGER :: L(132) ! alphabet
INTEGER :: I30, K, MM ! loop counters
INTEGER :: IP
INTEGER :: LSTR
INTEGER :: IROW, ILET
! ******************************************************************
DATA ((ALF(IROW,ILET),ILET=1,5),IROW=1,13) / &
& ' ' , ' ' , ' ' , ' ' , ' ', &
& ' ' , ' ' , ' ' , ' ' , ' ', &
& ' XX ' , ' XXXXXX ' , ' XXXX ' , ' XXXXX ' , ' XXXXXXX', &
& ' X ' , ' X X' , ' X X' , ' X X ' , ' X X', &
& ' X ' , ' X X' , ' X ' , ' X X' , ' X ', &
& ' X X ' , ' X X' , ' X ' , ' X X' , ' X X ', &
& ' X X ' , ' XXXXX ' , ' X ' , ' X X' , ' XXXX ', &
& ' X X ' , ' X X' , ' X ' , ' X X' , ' X X ', &
& ' XXXXX ' , ' X X' , ' X ' , ' X X' , ' X ', &
& ' X X ' , ' X X' , ' X X' , ' X X ' , ' X X', &
& ' XXX XXX' , ' XXXXXX ' , ' XXXX ' , ' XXXXX ' , ' XXXXXXX', &
& ' ' , ' ' , ' ' , ' ' , ' ', &
& ' ' , ' ' , ' ' , ' ' , ' '/
DATA ((ALF(IROW,ILET),ILET=6,10),IROW=1,13) / &
& ' ' , ' ' , ' ' , ' ' , ' ', &
& ' ' , ' ' , ' ' , ' ' , ' ', &
& ' XXXXXXX' , ' XXXX ' , ' XXX XXX' , ' XXXXX ' , ' XXXX ', &
& ' X X' , ' X X' , ' X X ' , ' X ' , ' X ', &
& ' X ' , ' X ' , ' X X ' , ' X ' , ' X ', &
& ' X X ' , ' X ' , ' X X ' , ' X ' , ' X ', &
& ' XXXX ' , ' X ' , ' XXXXX ' , ' X ' , ' X ', &
& ' X X ' , ' X XXX' , ' X X ' , ' X ' , ' X ', &
& ' X ' , ' X X' , ' X X ' , ' X ' , ' X X ', &
& ' X ' , ' X X' , ' X X ' , ' X ' , ' X X ', &
& ' XXXX ' , ' XXXX ' , ' XXX XXX' , ' XXXXX ' , ' XXX ', &
& ' ' , ' ' , ' ' , ' ' , ' ', &
& ' ' , ' ' , ' ' , ' ' , ' '/
DATA ((ALF(IROW,ILET),ILET=11,15),IROW=1,13) / &
& ' ' , ' ' , ' ' , ' ' , ' ', &
& ' ' , ' ' , ' ' , ' ' , ' ', &
& ' XXX XX' , ' XXXXX ' , ' XX XX' , ' XX XXX' , ' XXX ', &
& ' X X ' , ' X ' , ' X X ' , ' X X ' , ' X X ', &
& ' X X ' , ' X ' , ' XX XX ' , ' XX X ' , ' X X', &
& ' X X ' , ' X ' , ' XX XX ' , ' XX X ' , ' X X', &
& ' X X ' , ' X ' , ' X X X ' , ' X X X ' , ' X X', &
& ' XXX ' , ' X ' , ' X X X ' , ' X XX ' , ' X X', &
& ' X X ' , ' X ' , ' X X ' , ' X XX ' , ' X X', &
& ' X X ' , ' X X' , ' X X ' , ' X X ' , ' X X ', &
& ' XXX XX' , ' XXXXXXX' , ' XXX XXX' , ' XXX X ' , ' XXX ', &
& ' ' , ' ' , ' ' , ' ' , ' ', &
& ' ' , ' ' , ' ' , ' ' , ' '/
DATA ((ALF(IROW,ILET),ILET=16,20),IROW=1,13) / &
& ' ' , ' ' , ' ' , ' ' , ' ', &
& ' ' , ' ' , ' ' , ' ' , ' ', &
& ' XXXXXX ' , ' XXX ' , ' XXXXXX ' , ' XXXXX ' , ' XXXXXXX', &
& ' X X' , ' X X ' , ' X X' , ' X X' , ' X X X', &
& ' X X' , ' X X' , ' X X' , ' X ' , ' X ', &
& ' X X' , ' X X' , ' X X' , ' X ' , ' X ', &
& ' XXXXX ' , ' X X' , ' XXXXX ' , ' XXXXX ' , ' X ', &
& ' X ' , ' X X' , ' X X ' , ' X' , ' X ', &
& ' X ' , ' X X' , ' X X ' , ' X' , ' X ', &
& ' X ' , ' X X ' , ' X X ' , ' X X' , ' X ', &
& ' XXXX ' , ' XXX ' , ' XXX XX' , ' XXXXX ' , ' XXX ', &
& ' ' , ' XX XX' , ' ' , ' ' , ' ', &
& ' ' , ' ' , ' ' , ' ' , ' '/
DATA ((ALF(IROW,ILET),ILET=21,25),IROW=1,13) / &
& ' ' , ' ' , ' ' , ' ' , ' ', &
& ' ' , ' ' , ' ' , ' ' , ' ', &
& ' XXX XXX' , ' XXX XXX' , ' XXX XXX' , ' XXX XXX' , ' XXX XXX', &
& ' X X ' , ' X X ' , ' X X ' , ' X X ' , ' X X ', &
& ' X X ' , ' X X ' , ' X X ' , ' X X ' , ' X X ', &
& ' X X ' , ' X X ' , ' X X ' , ' X X ' , ' X X ', &
& ' X X ' , ' X X ' , ' X X X ' , ' X ' , ' X X ', &
& ' X X ' , ' X X ' , ' X X X ' , ' X X ' , ' X ', &
& ' X X ' , ' X X ' , ' X X X ' , ' X X ' , ' X ', &
& ' X X ' , ' X ' , ' X X ' , ' X X ' , ' X ', &
& ' XXX ' , ' X ' , ' X X ' , ' XXX XXX' , ' XXX ', &
& ' ' , ' ' , ' ' , ' ' , ' ', &
& ' ' , ' ' , ' ' , ' ' , ' '/
DATA ((ALF(IROW,ILET),ILET=26,30),IROW=1,13) / &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' XXXXXXX' , ' XXX ' , ' X ' , ' XXX ' , ' XXX ' , &
& ' X X ' , ' X X ' , ' XXX ' , ' X X ' , ' X X ' , &
& ' X ' , ' X X ' , ' X ' , ' X ' , ' X ' , &
& ' X ' , ' X X ' , ' X ' , ' X ' , ' X ' , &
& ' X ' , ' X X ' , ' X ' , ' X ' , ' XX ' , &
& ' X ' , ' X X ' , ' X ' , ' X ' , ' X ' , &
& ' X ' , ' X X ' , ' X ' , ' X ' , ' X ' , &
& ' X X' , ' X X ' , ' X ' , ' X ' , ' X X ' , &
& ' XXXXXXX' , ' XXX ' , ' XXXXX ' , ' XXXXX ' , ' XXX ' , &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' ' , ' ' , ' ' , ' ' , ' ' /
DATA ((ALF(IROW,ILET),ILET=31,35),IROW=1,13) / &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' X ' , ' XXXXX ' , ' XX ' , ' XXXX ' , ' X ' , &
& ' XX ' , ' X ' , ' X ' , ' X X' , ' XXX ' , &
& ' XX ' , ' X ' , ' X ' , ' X XX X' , ' X X ' , &
& ' X X ' , ' X ' , ' X ' , ' X X X X' , ' X ' , &
& ' X X ' , ' XXXX ' , ' XXXX ' , ' X X X X' , ' XXX ' , &
& ' X X ' , ' X ' , ' X X ' , ' X X X X' , ' X ' , &
& ' XXXXX ' , ' X ' , ' X X ' , ' X XXX ' , ' X X ' , &
& ' X ' , ' X X ' , ' X X ' , ' X ' , ' XXX ' , &
& ' XXX ' , ' XXX ' , ' XXX ' , ' XXX ' , ' X ' , &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' ' , ' ' , ' ' , ' ' , ' ' /
DATA ((ALF(IROW,ILET),ILET=36,40),IROW=1,13) / &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' X ' , ' XX ' , ' ' , ' X ' , ' X ' , &
& ' X X X' , ' X ' , ' ' , ' X ' , ' X ' , &
& ' X X ' , ' X ' , ' XX XX ' , ' X ' , ' X ' , &
& ' X ' , ' X ' , ' XXX ' , ' X ' , ' X ' , &
& ' X ' , ' XX ' , ' XXXXXXX' , ' X ' , ' X ' , &
& ' X ' , ' X X X' , ' XXX ' , ' X ' , ' X ' , &
& ' X X ' , ' X X X ' , ' XX XX ' , ' X ' , ' X ' , &
& ' X X X' , ' X X ' , ' ' , ' X ' , ' X ' , &
& ' X ' , ' XXX XX' , ' ' , ' X ' , ' X ' , &
& ' ' , ' ' , ' ' , ' X ' , ' X ' , &
& ' ' , ' ' , ' ' , ' X ' , ' X ' /
DATA ((ALF(IROW,ILET),ILET=41,44),IROW=1,13) / &
& ' ' , ' ' , ' ' , ' ' , &
& ' ' , ' ' , ' ' , ' ' , &
& ' ' , ' ' , ' ' , ' ' , &
& ' ' , ' ' , ' ' , ' ' , &
& ' ' , ' ' , ' ' , ' X ' , &
& ' ' , ' ' , ' XXXXX ' , ' X ' , &
& ' ' , ' ' , ' ' , ' X ' , &
& ' XXXXXXX' , ' ' , ' XXXXX ' , ' XXXXXXX' , &
& ' ' , ' ' , ' ' , ' X ' , &
& ' ' , ' ' , ' ' , ' X ' , &
& ' ' , ' ' , ' ' , ' X ' , &
& ' ' , ' ' , ' ' , ' ' , &
& ' ' , 'XXXXXXXX' , ' ' , ' ' /
DATA ((ALF(IROW,ILET),ILET=45,45),IROW=1,13) / &
& ' ' , &
& ' ' , &
& ' ' , &
& ' X ' , &
& ' X ' , &
& ' X ' , &
& ' X ' , &
& ' X ' , &
& ' X ' , &
& ' X' , &
& ' ' , &
& ' ' , &
& ' ' /
DATA ((ALF(IROW,ILET),ILET=46,50),IROW=1,13) / &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' XXX ' , ' XXX ' , ' ' , ' ' , ' ' , &
& ' X ' , ' X ' , ' ' , ' ' , ' ' , &
& ' X ' , ' X ' , ' X ' , ' ' , ' X ' , &
& ' X ' , ' X ' , ' X ' , ' ' , ' X ' , &
& ' X ' , ' X ' , ' X ' , ' ' , ' X ' , &
& ' X ' , ' X ' , ' X ' , ' ' , ' X ' , &
& ' X ' , ' X ' , ' X ' , ' ' , ' X ' , &
& ' X ' , ' X ' , ' X ' , ' ' , ' X ' , &
& ' X ' , ' X ' , ' X ' , ' X ' , ' X ' , &
& ' X ' , ' X ' , ' ' , ' ' , ' ' , &
& ' XXX ' , ' XXX ' , ' ' , ' ' , ' ' /
DATA ((ALF(IROW,ILET),ILET=51,55),IROW=1,13) / &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' ' , ' XXX ' , ' ' , ' X ' , ' ' , &
& ' ' , ' X X ' , ' X' , ' X ' , ' ' , &
& ' ' , ' X ' , ' X ' , ' X ' , ' ' , &
& ' ' , ' X ' , ' X ' , ' X ' , ' X ' , &
& ' ' , ' X ' , ' X ' , ' X ' , ' ' , &
& ' ' , ' X ' , ' X ' , ' X ' , ' ' , &
& ' ' , ' X ' , ' X ' , ' X ' , ' ' , &
& ' ' , ' ' , ' X ' , ' ' , ' ' , &
& ' X ' , ' X ' , ' ' , ' X ' , ' X ' , &
& ' X ' , ' ' , ' ' , ' ' , ' X ' , &
& ' ' , ' ' , ' ' , ' ' , ' ' /
DATA ((ALF(IROW,ILET),ILET=56,60),IROW=1,13) / &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' ' , ' ' , ' ' , ' ' , ' X ' , &
& ' X ' , ' X X ' , ' ' , ' X X ' , ' X X ' , &
& ' X ' , ' X X ' , ' ' , ' X X ' , ' X X ' , &
& ' X ' , ' X X ' , ' ' , ' XXXXXX' , ' ' , &
& ' ' , ' ' , ' X ' , ' X X ' , ' ' , &
& ' ' , ' ' , ' ' , ' X X ' , ' ' , &
& ' ' , ' ' , ' ' , ' X X ' , ' ' , &
& ' ' , ' ' , ' ' , ' XXXXXX ' , ' ' , &
& ' ' , ' ' , ' ' , ' X X ' , ' ' , &
& ' ' , ' ' , ' X ' , ' X X ' , ' ' , &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' ' , ' ' , ' ' , ' ' , ' ' /
DATA ((ALF(IROW,ILET),ILET=61,65),IROW=1,13) / &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' XXXXX ' , ' XXX ' , ' XXX ' , ' ' , ' ' , &
& ' X X ' , ' X X ' , ' X X ' , ' ' , ' ' , &
& ' X ' , ' X X ' , ' X X ' , ' ' , ' ' , &
& ' X ' , ' X X ' , ' X X ' , ' ' , ' XXXX ' , &
& ' X ' , ' XXX ' , ' XXXX ' , ' ' , ' X ' , &
& ' X ' , ' X X ' , ' X ' , ' ' , ' XXXXX ' , &
& ' X ' , ' X X ' , ' X ' , ' ' , ' X X ' , &
& ' X ' , ' X X ' , ' X ' , ' ' , ' X X ' , &
& ' X ' , ' XXX ' , ' XX ' , ' ' , ' XXXX X' , &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' ' , ' ' , ' ' , ' ' , ' ' /
DATA ((ALF(IROW,ILET),ILET=66,70),IROW=1,13) / &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' XX ' , ' ' , ' XX ' , ' ' , ' XX ' , &
& ' X ' , ' ' , ' X ' , ' ' , ' X ' , &
& ' X ' , ' ' , ' X ' , ' ' , ' X ' , &
& ' XXXXX ' , ' XXXXX ' , ' XXXXX ' , ' XXXXX ' , ' XXXX ' , &
& ' X X' , ' X X' , ' X X ' , ' X X' , ' X ' , &
& ' X X' , ' X ' , ' X X ' , ' XXXXXXX' , ' X ' , &
& ' X X' , ' X ' , ' X X ' , ' X ' , ' X ' , &
& ' X X' , ' X X' , ' X X ' , ' X X' , ' X ' , &
& ' XXXXXX ' , ' XXXXX ' , ' XXXXXX' , ' XXXXX ' , ' XXXX ' , &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' ' , ' ' , ' ' , ' ' , ' ' /
DATA ((ALF(IROW,ILET),ILET=71,75),IROW=1,13) / &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' ' , ' XX ' , ' X ' , ' X ' , ' XX ' , &
& ' ' , ' X ' , ' ' , ' ' , ' X ' , &
& ' ' , ' X ' , ' ' , ' ' , ' X ' , &
& ' XXXXXX' , ' X XX ' , ' XXX ' , ' XXXX ' , ' X XX ' , &
& ' X X ' , ' XX X ' , ' X ' , ' X ' , ' X X ' , &
& ' X X ' , ' X X ' , ' X ' , ' X ' , ' X X ' , &
& ' X X ' , ' X X ' , ' X ' , ' X ' , ' XXX ' , &
& ' XXXXX ' , ' X X ' , ' X ' , ' X ' , ' X X ' , &
& ' X ' , ' XXX XXX' , ' XXXXX ' , ' X ' , ' XX XX' , &
& ' X ' , ' ' , ' ' , ' X ' , ' ' , &
& ' XXXX ' , ' ' , ' ' , ' XXX ' , ' ' /
DATA ((ALF(IROW,ILET),ILET=76,80),IROW=1,13) / &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' XX ' , ' ' , ' ' , ' ' , ' ' , &
& ' X ' , ' ' , ' ' , ' ' , ' ' , &
& ' X ' , ' ' , ' ' , ' ' , ' ' , &
& ' X ' , ' XXX X ' , ' XX XX ' , ' XXXXX ' , ' XXXXXX ' , &
& ' X ' , ' X X X ' , ' XX X ' , ' X X' , ' X X' , &
& ' X ' , ' X X X ' , ' X X ' , ' X X' , ' X X' , &
& ' X ' , ' X X X ' , ' X X ' , ' X X' , ' X X' , &
& ' X ' , ' X X X ' , ' X X ' , ' X X' , ' X X' , &
& ' XXXXX ' , ' XX X XX' , ' XXX XXX' , ' XXXXX ' , ' XXXXX ' , &
& ' ' , ' ' , ' ' , ' ' , ' X ' , &
& ' ' , ' ' , ' ' , ' ' , ' XXX ' /
DATA ((ALF(IROW,ILET),ILET=81,85),IROW=1,13) / &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' ' , ' ' , ' ' , ' X ' , ' ' , &
& ' ' , ' ' , ' ' , ' X ' , ' ' , &
& ' XXXXXX' , ' XXX XX ' , ' XXXXX ' , ' XXXX ' , ' XX XX ' , &
& ' X X ' , ' XX X' , ' X X' , ' X ' , ' X X ' , &
& ' X X ' , ' X ' , ' XXX ' , ' X ' , ' X X ' , &
& ' X X ' , ' X ' , ' XX ' , ' X ' , ' X X ' , &
& ' X X ' , ' X ' , ' X X' , ' X X ' , ' X XX ' , &
& ' XXXXX ' , ' XXXXX ' , ' XXXXX ' , ' XX ' , ' XX XX' , &
& ' X ' , ' ' , ' ' , ' ' , ' ' , &
& ' XXX' , ' ' , ' ' , ' ' , ' ' /
DATA ((ALF(IROW,ILET),ILET=86,90),IROW=1,13) / &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' XXX XXX' , ' XXX XXX' , ' XXX XXX' , ' XXX XXX' , ' XXXXXX ' , &
& ' X X ' , ' X X ' , ' X X ' , ' X X ' , ' X X ' , &
& ' X X ' , ' X X X ' , ' XXX ' , ' X X ' , ' X ' , &
& ' X X ' , ' X X X ' , ' XXX ' , ' X X ' , ' X ' , &
& ' X X ' , ' X X ' , ' X X ' , ' X X ' , ' X X ' , &
& ' X ' , ' X X ' , ' XXX XXX' , ' X ' , ' XXXXXX ' , &
& ' ' , ' ' , ' ' , ' X ' , ' ' , &
& ' ' , ' ' , ' ' , ' XX ' , ' ' /
DATA ((ALF(IROW,ILET),ILET=91,95),IROW=1,13) / &
& ' ' , ' ' , ' ' , ' ' , ' ' , &
& ' X ' , ' ' , ' ' , ' ' , ' ' , &
& ' X ' , ' XX ' , ' XX ' , ' ' , ' X ' , &
& ' X ' , ' X ' , ' X ' , ' XX X' , ' X ' , &
& ' X ' , ' X ' , ' X ' , ' X X X' , ' ' , &
& ' X ' , ' X ' , ' X ' , ' X XX ' , ' ' , &
& ' X ' , ' X ' , ' X ' , ' ' , ' ' , &
& ' X ' , ' XX ' , ' XX ' , ' ' , ' ' , &
& ' X ' , ' X ' , ' X ' , ' ' , ' ' , &
& ' X ' , ' X ' , ' X ' , ' ' , ' ' , &
& ' X ' , ' X ' , ' X ' , ' ' , ' ' , &
& ' X ' , ' X ' , ' X ' , ' ' , ' ' , &
& ' X ' , ' XX ' , ' XX ' , ' ' , ' ' /
! ******************************************************************
!! NOTE:
!! rearrange the character definitions in their ASCII decimal equivalent
!! order and the INDEX() call could be replaced with a simple ICHAR()
!! call. Code has a long history.
LSTR=MIN(LEN(STR),132)
DO I30 = 1, LSTR ! find column number for this letter
IP=INDEX('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456@$%&*()-_=+\][>.<,?/!;''":#^789 abcdefghijklmnopqrstuvwxyz|{}~`',STR(I30:I30))
IF (IP .EQ. 0) THEN ! if not found, letter is not supported
L(I30) = 64
write(*,*)'*alphablock* UNSUPPORTED CHARACTER, ADE=',ichar(STR(I30:I30)) ! print ASCII Decimal Equivalent
ELSE
L(I30) = IP
ENDIF
ENDDO
! ******************************************************************
DO K = 1, 13
WRITE (IOUT, '(1x,132A8:)') (ALF(K,L(MM)), MM = 1, LSTR)
ENDDO
! ******************************************************************
end subroutine alphablock
!===============================================================================
!()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(
!===============================================================================
subroutine roach(io)
implicit none
character(len=*),parameter :: ident="@(#)roach(3f):print eye-catching ASCII graphic (roach)"
integer,intent(in) :: io ! the LUN (Logical Unit Number) to write to
write(io,'(a)')' ,--. .--. '
write(io,'(a)')' / \. ./ \ '
write(io,'(a)')' / /\ / " \ /\ \ XXXXXX XXX XXX XXXX '
write(io,'(a)')' / _/ {~~v~~} \_ \ X X X X X X'
write(io,'(a)')' / { | } \ X X X X X '
write(io,'(a)')' ; /\{ | }/\ \ X X X X X '
write(io,'(a)')' | _/ { | } \_ : XXXXX X X X '
write(io,'(a)')' | { | } | X X X X X XXX'
write(io,'(a)')' | /{ | }\ | X X X X X X'
write(io,'(a)')' | / { | } \ | X X X X X X'
write(io,'(a)')' | / { | } \ | XXXXXX XXX XXXX '
write(io,'(a)')' | \ \ | / / | '
write(io,'(a)')' | \ \ | / / | '
write(io,'(a)')' \ \ \ | / / / '
write(io,'(a)')' \ / ~~~~~ \ / '
end subroutine roach
!===============================================================================
!()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(
!===============================================================================