| The call is: | ISTAT = PRINTF (CFMT, ARG1, ARG2, ..., ARGn) |
| CFMT | is a format string. |
| ARG1, .., ARGn | are optional arguments. |
| ISTAT | is the returned status of PRINTF and can have the values 0 and -1. On error, PRINTF returns -1. |
The format string can contain ordinary characters and format specifications. Ordinary characters are printed as text while format specifications define how the arguments of PRINTF are formatted. A format specification begins with a % and ends with a conversion character. Between the % and the conversion character there may be the following parts:
--------------------------------------------------
| Character | Meaning |
--------------------------------------------------
| %c | prints a character. |
| %d | prints an integer. |
| %i | prints an integer (same as %d). |
| %s | prints a string. |
| %f | prints a floating point number. |
| %e | prints a floating point number in |
| | e format. |
| %x | prints an integer in hexadecimal |
| | format. |
| %o | prints an integer in octal format. |
| \n | inserts a newline. |
--------------------------------------------------
Figure 9.1: Conversion Characters
Examples:The first example shows the effect of some format specifications for printing the string 'This is a string.' (17 characters).
%GCL
s = 'This is a string.'
printf (':%s: \n', s)
printf (':%15s: \n', s)
printf (':%17s: \n', s)
printf (':%20s: \n', s)
printf (':%-20s: \n', s)
printf (':%17.13s: \n', s)
printf (':%-17.13s:\n', s)
The output of the GCL script is:
:This is a string.: :This is a string.: :This is a string.: : This is a string.: :This is a string. : : This is a str: :This is a str :The next example shows the effect of some format specifications for printing the integer 254:
%GCL
i = 254
printf (':%d: \n', i)
printf (':%8d: \n', i)
printf (':%08d: \n', i)
printf (':%-8d: \n', i)
printf (':%-8.2d:\n', i)
printf (':%x: \n', i)
printf (':%08X: \n', i)
printf (':%o: \n', i)
The output is:
:254: : 254: :00000254: :254 : :254 : :fe: :000000FE: :376:The next example shows the effect of some format specifications for printing the floating point number 123.456:
%GCL
x = 123.456
printf (':%f: \n', x)
printf (':%15f: \n', x)
printf (':%-15f: \n', x)
printf (':%-15.2f: \n', x)
printf (':%e: \n', x)
printf (':%-15E: \n', x)
printf (':%-15.2E: \n', x)
The output is:
:123.456000: : 123.456000: :123.456000 : :123.46 : :1.234560e+02: :1.234560E+02 : :1.23E+02 :
| The call is: | ISTAT = SPRINTF (CRAY, CFMT, ARG1, ARG2, ..., ARGn) |
| CRAY | is a character array that must be created with the CHAR command. CRAY must be big enough to hold the result and the string terminator. |
| CFMT | is a format string. |
| ARG1,..,ARGn | are optional arguments. |
| ISTAT | is the returned status of SPRINTF and can have the values 0 and -1. On error, SPRINTF returns -1. |
| The call is: | ISTAT = SCANF (CFMT, ARG1, ARG2, ..., ARGn) |
| CFMT | is a format string. |
| ARG1,..,ARGn | are optional arguments where the arguments must be variables. If a string should be read, the corresponding variable must be created with the GCL command CHAR and big enough to hold the string and a trailing string terminator. |
| ISTAT | is the returned status of SCANF and can have the values 0 and -1. On error, SCANF returns -1. |
Additional note:
| The call is: | ISTAT = SSCANF (CSTR, CFMT, ARG1, ARG2, ..., ARGn) |
| CSTR | is a string where the input characters are taken from. |
| CFMT | is a format string. |
| ARG1,..,ARGn | are optional arguments (see SCANF). |
| ISTAT | is the returned status of SSCANF and can have the values 0 and -1. On error, SSCANF returns -1. |
The routine FOPEN opens a file and returns a file unit.
| The call is: | NU = FOPEN (CFIL, CMOD) |
| CFIL | is the name of a file. If CFIL = 'CON:', the console is opened for file I/O. If GCL is used in interactive mode, the console can only be opened for output (CMOD = 'w'). |
| CMOD | is a string that defines the mode for file access. The modes are listed in table 9.2. |
| NU | is the returned file unit, or -1 if an error occurs. |
The following table shows the allowed file modes for FOPEN:
--------------------------------------------------------
| Mode | Meaning |
--------------------------------------------------------
| 'r' | opens a text file for reading. The file |
| | must exist, or an error message is printed. |
| 'w' | opens a text file for writing. The contents |
| | of an existing file will be overwritten. |
| 'a' | opens a text file for appending. |
| 'rb' | opens a file for binary reading. |
| 'wb' | opens a file for binary writing. |
| 'ab' | opens a file for binary appending. |
--------------------------------------------------------
Figure 9.2: File Modes for FOPEN
F C L O S EThe function FCLOSE closes a file.
| The call is: | ISTAT = FCLOSE (NU) |
| NU | is a file unit. |
| ISTAT | is the returned status of FCLOSE and can have the values 0 and -1. On error, FCLOSE returns -1. |
The function REMOVE deletes a file.
| The call is: | ISTAT = REMOVE (CFIL) |
| CFIL | is the name of a file. |
| ISTAT | is the returned status of REMOVE and can have the values 0 and -1. On error, REMOVE returns -1. |
The function RENAME changes the name of a file.
| The call is: | ISTAT = RENAME (COLD, CNEW) |
| COLD | is the old name of the file. |
| CNEW | is the new name of the file. |
| ISTAT | is the returned status of RENAME and can have the values 0 and -1. On error, RENAME returns -1. |
The function FTELL returns the current file position.
| The call is: | NPOS = FTELL (NU) |
| NU | is a file unit. |
| NPOS | is the returned file position, or -1 on error. |
The function FSEEK defines the current file position.
| The call is: | ISTAT = FSEEK (NU, NPOS) |
| NU | is a file unit. |
| NPOS | is the new file position. |
| ISTAT | is the returned status of FSEEK and can have the values 0 and -1. On error, FSEEK returns -1. |
The function FFLUSH flushes any output buffers. For input, FFLUSH has no effect.
| The call is: | ISTAT = FFLUSH (NU) |
| NU | is a file unit. |
| ISTAT | is the returned status of FFLUSH and can have the values 0 and -1. On error, FFLUSH returns -1. |
The function REWIND sets the current file position to the beginning of the file.
| The call is: | ISTAT = REWIND (NU) |
| NU | is a file unit. |
| ISTAT | is the returned status of REWIND and can have the values 0 and -1. On error, REWIND returns -1. |
The function FPRINTF does the same conversions as PRINTF does, but writes the output to a file.
| The call is: | ISTAT = FPRINTF (NU, CFMT, ARG1, ARG2, ..., ARGn) |
| NU | is a file unit. |
| CFMT | is a format string. |
| ARG1,..,ARGn | are optional arguments. |
| ISTAT | is the returned status of FPRINTF and can have the values 0 and -1. On error, FPRINTF returns -1. |
The function FSCANF is an analogue function to FPRINTF for formatted input. It uses the format specifications listed in table 9.1.
| The call is: | ISTAT = FSCANF (NU, CFMT, ARG1, ARG2, ..., ARGn) |
| NU | is a file unit. |
| CFMT | is a format string. |
| ARG1,..,ARGn | are optional arguments where the arguments must be variables. If a string should be read from the file, the corresponding variable must be created with the GCL command CHAR and big enough to hold the string and the trailing string terminator. |
| ISTAT | is the returned status of FSCANF and can have the values 0 and -1. On error, FSCANF returns -1. |
The function FGETC returns the next character from a file.
| The call is: | N = FGETC (NU) |
| NU | is a file unit. |
| N | is the ASCII code of the returned character, or -1 if end of file or error occurs. |
The function FGETS reads at most N-1 characters into a character array, stopping if a newline is encountered. The newline character is included in the character array.
| The call is: | ISTAT = FGETS (CRAY, N, NU) |
| CRAY | is a character array filled by FGETS. CRAY must be created with the GCL command CHAR (i.e. CHAR CRAY[N]). |
| N | defines the number of characters to be read. At most N-1 characters will be read. |
| NU | is a file unit. |
| ISTAT | is the returned status of FGETS and can have the values 0 and -1. FGETS returns -1 if end of file or error occurs. |
Additional note:
The function FPUTC writes a character to a file.
| The call is: | ISTAT = FPUTC (N, NU) |
| N | is the ASCII code of a character that should be written to a file. |
| NU | is a file unit. |
| ISTAT | is the returned status of FPUTC and can have the values 0 and -1. On error, FPUTC returns -1. |
The function FPUTS writes a string to a file.
| The call is: | ISTAT = FPUTS (CSTR, NU) |
| CSTR | is a string that should be written to the file. A newline character is inserted after the string. |
| NU | is a file unit. |
| ISTAT | is the returned status of FPUTS and can have the values 0 and -1. On error, FPUTS returns -1. |
Additional note:
The function FREAD reads binary data from a file.
| The call is: | NRET = FREAD (VRAY, N, NU) |
| VRAY | is an array where the binary data should be filled in. |
| N | is the number of array elements that should be filled with data. |
| NU | is a file unit. |
| NRET | is the number of elements read, or -1 if end of file or error occurs. |
The function FWRITE writes binary data to a file.
| The call is: | NRET = FWRITE (VRAY, N, NU) |
| VRAY | is an array containing the data that should be written to the file. |
| N | is the number of array elements that should be written to the file. |
| NU | is a file unit. |
| NRET | is the number of elements written, or -1 if error occurs. |
%GCL
// Copies a file and converts it to uppercase letters
char cr[100], cinp[40], cout[40]
printf ('Inputfile: ')
gets (cinp)
printf ('Outputfile: ')
gets (cout)
inp = fopen (cinp, 'r')
if (inp == -1) exit
out = fopen (cout, 'w')
if (out == -1) exit
i = fgets (cr, 100, inp)
while (i != -1)
s = strupr (cr)
fputs (s, out)
i = fgets (cr, 100, inp)
end while
fclose (inp)
fclose (out)
The example can be stored in a file and executed with the command:gcl filename