PRINTN(3F) UNIX Programmer's Manual PRINTN(3F) NAME printn, fprntn, sprntn - formatted output conversion SYNTAX character*(L) format call printn(format [, arg ] ... ) integer fileid character*(L) format call fprntn(fileid, format [, arg ] ... ) character*(L) s, sprntn, format s = sprntn(format [, arg ] ... ) DESCRIPTION _P_r_i_n_t_n places output on the standard output. _F_p_r_n_t_n places output on the file associated with _f_i_l_e_i_d (see _o_p_e_n(3F)). _S_p_r_n_t_n returns `output' as its function value. Each of these functions converts, formats, and prints its arguments after the _f_o_r_m_a_t under control of the _f_o_r_m_a_t argu- ment. The _f_o_r_m_a_t argument is a character string which con- tains two types of objects: plain characters, which are sim- ply copied to the output, and conversion specifications, each of which causes conversion and printing of the next successive argument. Each conversion specification is introduced by the character %. Following the %, there may be: - an optional minus sign `-' which specifies _l_e_f_t _a_d_j_u_s_t_- _m_e_n_t of the converted value in the indicated field; - an optional digit string m , specifying a _f_i_e_l_d _w_i_d_t_h, _i_t_e_r_a_t_i_o_n _c_o_u_n_t, or _a_r_r_a_y _s_i_z_e; if the converted value has fewer characters than the field width it will be blank-padded on the left (or right, if the left- adjustment indicator has been given) to make up the field width; if the field width begins with a zero, zero-padding will be done instead of blank-padding; - an optional period `.' which serves to separate the field width from the next digit string; - an optional digit string specifying a _p_r_e_c_i_s_i_o_n which specifies the number of digits to appear after the decimal point, for e- and f-conversion, or the maximum number of characters to be printed from a string; - the character l specifying that a following d, o, or x, corresponds to an integer*4 _a_r_g_u_m_e_n_t. (A capitalized conversion code accomplishes the same thing.) Printed 7/31/83 1 PRINTN(3F) UNIX Programmer's Manual PRINTN(3F) - a character which indicates the type of conversion to be applied. A field width or precision may be `*' and an iteration count or array size may be `^' instead of a digit string. In these cases an integer*2 _a_r_g supplies the value used. The conversion characters and their meanings are dox The integer _a_r_g is converted to decimal, octal, or hex- adecimal notation respectively. n (Equivalent to 'ld'). The integer*4 _a_r_g is converted to decimal notation. f The real or double precision _a_r_g is converted to decimal notation in the style `[-]ddd.ddd' where the number of d's after the decimal point is equal to the precision specification for the argument. If the pre- cision is missing, 6 digits are given; if the precision is explicitly 0, no digits and no decimal point are printed. e The real or double precision _a_r_g is converted in the style `[-]d.ddde+_dd' where there is one digit before the decimal point and the number after is equal to the precision specification for the argument; when the pre- cision is missing, 6 digits are produced. g The real or double precision _a_r_g is printed in style d, in style f, or in style e, whichever gives full preci- sion in minimum space. c The character _a_r_g is printed. Null characters are ignored. s _a_r_g is taken to be a string and characters from the string are printed until a null character or until the number of characters indicated by the precision specif- ication is reached; however if the precision is 0 or missing all characters up to a null are printed. a Take the next argument to be an array of dimension m. No argument is converted. ( Begin loop: n is used as the number of iterations. If m is omitted, the last m is used. No argument is con- verted. { Begin loop and take the next argument to be an array. '%m{' is equivalent to '%ma%m('. m is used as both the iteration count and the array dimension. No argument Printed 7/31/83 2 PRINTN(3F) UNIX Programmer's Manual PRINTN(3F) is converted. ) End of loop. No argument is converted. } Same as ')'. % Print a `%'; no argument is converted. In no case does a non-existent or small field width cause truncation of a field; padding takes place only if the specified field width exceeds the actual width. Characters generated by _p_r_i_n_t_n are printed by _p_u_t_c(3F). EXAMPLES To print a date and time in the form `Sunday, July 3, 10:02', where _w_e_e_k_d_a_y and _m_o_n_t_h are null-terminated strings: printn('%s, %s %d, %02d:%02d', weekday, month, day, hour, min); To print pi to 5 decimals: printn('pi = %.5f', 4*atan(1.0)); SEE ALSO putc(3F), scann(3F) BUGS Very wide fields (>128 characters) fail. AUTHOR James Herriot and Bruce Julian, U.S. Geological Survey, Men- lo Park, California Printed 7/31/83 3