Prints rank-1 or rank-2 arrays of numbers in a readable format.
X — Rank-1 or rank-2 array containing the numbers to be printed. (Input)
text =
CHARACTER (Input)
CHARACTER(LEN=*)
string used for labeling the array.
image = buffer
(Output)
CHARACTER(LEN=*) string used for an
internal write buffer. With this argument present the output is converted
to characters and packed. The lines are separated by an end-of-line
sequence. The length of
buffer is estimated by the
line width in effect, time the number of lines for the array.
iopt =
iopt(:) (Input)
Derived type array with the same precision
as the input array; used for passing optional data to the routine. Use the REAL(KIND(1E0)) precision for output
of INTEGER arrays. The
options are as follows:
iopt(IO) = show_significant_digits_is_4
iopt(IO) = show_significant_digits_is_7
iopt(IO) = show_significant_digits_is_16
These options allow more precision to be displayed. The default is 4D for each value. The other possible choices display 7D or 16D.
iopt(IO) = show_line_width_is_44
iopt(IO) = show_line_width_is_72
iopt(IO) = show_line_width_is_128
These options allow varying the output line width. The default is 72 characters per line. This allows output on many work stations or terminals to be read without wrapping of lines.
iopt(IO) = show_end-of_line_sequence_is
The sequence of characters ending a line when it is placed into the internal character buffer corresponding to the optional argument ‘IMAGE = buffer‘. The value of iopt(IO+1)%idummy is the number of characters. These are followed, starting at iopt(IO+2)%idummy, by the ASCII codes of the characters themselves. The default is the single character, ASCII value 10 or New Line.
iopt(IO) = show_starting_index_is
This are used to reset the starting index for a rank-1 array to a value different from the default value, which is 1.
iopt(IO) = show_starting_row_index_is
iopt(IO) = show_starting_col_index_is
These are used to reset the starting row and column indices to values different from their defaults, each 1.
Specific: The specific interface names are S_SHOW and D_SHOW.
The show routine is a generic subroutine interface to separate low-level subroutines for each data type and array shape. Output is directed to the unit number IUNIT. That number is obtained with the subroutine UMACH, IMSL MATH/LIBRARY User's Manual. Thus the user must open this unit in the calling program if it desired to be different from the standard output unit. If the optional argument ‘IMAGE = buffer‘ is present, the output is not sent to a file but to a character string within buffer. These characters are available to output or be used in the application.
See the messages.gls file for error messages for SHOW. These error messages are numbered 601−606; 611−617; 621−627; 631−636; 641−646.
Array of random numbers for all the intrinsic data types are printed. For REAL(KIND(1E0)) rank-1 arrays, the number of displayed digits is reset from the default value of 4 to the value 7 and the subscripts for the array are reset so they match their declared extent when printed. The output is not shown.
integer, parameter :: n=7, m=3
real(kind(1e0)) s_x(-1:n), s_m(m,n)
real(kind(1d0)) d_x(n), d_m(m,n)
complex(kind(1e0)) c_x(n), c_m(m,n)
complex(kind(1d0)) z_x(n),z_m(m,n)
! The data types printed are real(kind(1e0)), real(kind(1d0)),
! complex(kind(1e0)), complex(kind(1d0)), and INTEGER.
! Fill with randsom numbers and then print the contents,
! in each case
with a label.
i_x=100*rand(s_x(1:n)); i_m=100*rand(s_m)
call show (s_x, 'Rank-1, REAL')
call show (s_m, 'Rank-2, REAL')
call show (d_x, 'Rank-1, DOUBLE')
call show (d_m, 'Rank-2, DOUBLE')
call show (c_x, 'Rank-1, COMPLEX')
call show (c_m, 'Rank-2, COMPLEX')
call show (z_x, 'Rank-1, DOUBLE COMPLEX')
call show (z_m, 'Rank-2, DOUBLE COMPLEX')
call show (i_x, 'Rank-1, INTEGER')
call show (i_m, 'Rank-2, INTEGER')
! Show 7 digits per number and according to the
! natural or declared size of the array.
options(1)=show_significant_digits_is_7
options(2)=show_starting_index_is
options(3)= -1 ! The starting value.
'Rank-1, REAL with 7 digits, natural indexing', IOPT=options)
Example 1 for SHOW is correct.
This example prepares a rank-1 array for further processing, in this case delayed writing to the standard output unit. The indices and the amount of precision are reset from their defaults, as in Example 1. An end-of-line sequence of the characters CR-NL (ASCII 10,13) is used in place of the standard ASCII 10. This is not required for writing this array, but is included for an illustration of the option.
CHARACTER (LEN=(72+2)*4) BUFFER
! The data types printed are real(kind(1e0)) random numbers.
! Show 7 digits per number and according to the
! natural or declared size of the array.
! Prepare the output lines in array BUFFER.
! End each line with ASCII sequence CR-NL.
options(1)=show_significant_digits_is_7
options(2)=show_starting_index_is
options(3)= -1 ! The starting value.
options(4)=show_end_of_line_sequence_is
options(5)= 2 ! Use 2 EOL characters.
options(6)= 10 ! The ASCII code for CR.
options(7)= 13 ! The ASCII code for NL.
BUFFER= ' ' ! Blank out the buffer.
! Prepare the output in BUFFER.
'Rank-1, REAL with 7 digits, natural indexing '//&
'internal BUFFER, CR-NL EOLs.',&
! Display BUFFER as a CHARACTER array. Discard blanks
WRITE(*,'(1x,A)') TRIM(BUFFER)
Example 2 for SHOW is correct.
Visual Numerics, Inc. PHONE: 713.784.3131 FAX:713.781.9260 |