HP 3000 Manuals

Reading From $STDIN [ Accessing Files Programmer's Guide ] MPE/iX 5.0 Documentation


Accessing Files Programmer's Guide

Reading From $STDIN 

You can read data from your program's standard input device ($STDIN) by
using one of the following intrinsics:

   *   READ

   *   READX

   *   FREAD

The job/session input device is the source of all MPE/iX commands
relating to a job or session and is the primary source of all ASCII
information input to the job or session.  You can read a string of ASCII
characters from the job/session input device into an array in your
program with the READ and READX intrinsics.  The READ and READX
intrinsics are identical, except that the READX intrinsic reads input
from $STDINX instead of $STDIN. The $STDINX file is equivalent to $STDIN,
except that records with a colon (:)  in the first column of a line
indicate the end-of-file to $STDIN, and only the commands :EOD, and EOF
indicate the end of file for $STDINX.


NOTE The READ and READX intrinsics are limited in their usefulness in that FILE commands are not allowed. In addition, you cannot use the FCHECK intrinsic to determine error conditions encountered by READ or READX. You may find it more convenient (and a better programming practice) to use the HPFOPEN/FOPEN intrinsic to open the files $STDIN or $STDINX, then issue FREAD calls against these files.
If the standard input device ($STDIN) and the standard list device ($STDLIST) are opened with an HPFOPEN/FOPEN intrinsic call, the FREAD and FWRITE intrinsics can be used with these devices. For example, the FREAD intrinsic can be used to transfer information entered from a terminal to a buffer in the stack, and the FREAD intrinsic can be used to transfer information from your stack directly to the standard list device. Example 9-3 is an HP Pascal/iX code segment that uses the PRINT intrinsic to prompt a user for a file designator, then uses the READ intrinsic to read the input from $STDIN. Assume that the file designator is then returned to a procedure that calls HPFOPEN to open a file with the formaldesignator option passing the file name specified by the user. Example 9-3. Reading from $STDIN Using READ procedure get_file_designator (var file_name : packed array [1..80] of char); var message : packed array [..80] of char; {holds prompt to user } length : shortint; {length of prompt } control_code : shortint; {required by PRINT } read_length : shortint; {length read by READ } expected_length : shortint; {size of message array} begin massage :='Please input a valid file reference'; {specify prompt } length := -35; {length of prompt } control_code := 0 {default condition } expected_length := -80 PRINT (message, length, control_code ); if ccode <> cce then handle_file_error; else begin read_length := READ ( file_name, {read data to output parm} expected_length {length of file_name } ); if ccode <> cce then handle_file_error; end end; If an error is encountered by either READ or PRINT, procedure handle_file_error is invoked. For more information about READ parameters, refer to the MPE/iX Intrinsics Reference Manual (32650-90028). For more information about using the PRINT intrinsic, refer to chapter 8, "Writing to a File". For more information about opening a file, refer to chapter 5, "Opening a File". For more information about file designators, refer to chapter 3, "Specifying a File Designator". In appendix A, "HP Pascal/iX Program Examples", example A-2 uses a routine similar to example 9-3 to prompt the user for a valid file reference.


MPE/iX 5.0 Documentation