[fa.info-mac] File usage in MacPascal

info-mac@uw-beaver.UUCP (08/21/84)

From: DSMITH@RUTGERS.ARPA
We will be using MacPascal as the coding tool for the first two 
undergraduate course in CS.  This requires that students turn in assignments 
by presenting a listing of their program, a listing of the test data on which
it was run, and the output produced.   In order to achieve these goals we 
have, in the past, used the file i/o available in Pascal.  Can this be done 
in MacPascal?

I have been unable to find any documentation which asserts or denies the 
existance of file handling capabilities.  Specifically,

1 - Can files be created under program control?  If so, where may I find
a description of the syntax for doing so?

2 - Can a file be read under program control?  If so , ...

3 - Is it possible to print a file created by a MacPascal program using
the print facility inside the MacPascal file window?

Any inforamtion would be greatly appreciated.  Don
-------

info-mac@uw-beaver (info-mac) (08/22/84)

From: Stuart Reges <REGES@SU-SCORE.ARPA>
I run the intro Pascal courses at Stanford, so I am looking at MacPascal as
well.

I have been playing with external files in MacPascal and find they pretty much
do the right thing.  Files created by one program can be read as data for other
programs, even non-TEXT files.  The only trick involved in creating external
files is to give a name to the file when using RESET or REWRITE, as in:

	rewrite (outfile, 'stuff');
	reset (infile, 'stuff');

MacPascal doesn't like you to reassign OUTPUT.  It is possible to do so,
however, if you first CLOSE it:

	close (output);
	rewrite (output, 'stuff');

Apparently it assigns OUTPUT to the TEXT window, so you have to undo this
first.  The final release might not require this kludge.

One nice file demo I like is to have a structure like this:

	type person = RECORD
		name: string;
		age : integer;
		sex : CHAR;
	     end;
	var f: file of person;

And then to use the Observe window to watch f^.name, f^.age and f^.sex as you
do a series of GETs on a file you have created.  There are a few minor bugs in
the beta release, but I expect these will be fixed.

About printing, there is nothing really difficult about it, so I'm not sure why
there is no facility for it.  For some reason I had taken this for granted up
to now.  The documentation for the beta release makes no mention of it and
there seems to be no facility for doing it directly.

I have four suggestions.  Here they are, ranked from worst to best:

	o You can generate an external file and then use MacPascal to OPEN it
	  and PRINT it.  The problem is that it tries to format it as a
	  program.  

	o You can generate an external file and then use MacWrite to OPEN it
	  and PRINT it.  This requires many disk swaps if you have only one
	  drive.

	o You can directly assign the output channel to the printer by saying
	  something like:

			rewrite (outfile, 'printer:');

	  or, as explained above, if you are using OUTPUT you can use this
	  kludge:

			close (output);
			rewrite (output, 'printer:');

	o You can generate an external file and then use the following program
	  in MacPascal to print it:

		program Print (input, output);
		var FileName, OneLine: string;
		    infile, outfile  : text;
		begin
		    write ('File to print? ');
		    readln (FileName);
		    reset (infile, FileName);
		    rewrite (outfile, 'printer:');
		    while not eof (infile) do begin
			readln (infile, OneLine);
			writeln (outfile, OneLine);
		    end;
		    writeln ('All done now.');
		end.

I haven't actually tested the last two of these because I don't have a printer
handy.  I will test them tonight and let you know.  I'm pretty sure they work,
though, because there seems to be a device called "PRINTER:".
-------

info-mac@uw-beaver (info-mac) (08/29/84)

From: singer@harvard.ARPA (Andrew Singer)
   Stuart Reges' responses concerning file usage and printing from
Macintosh Pascal are quite correct. Some points, however:

   1. Having to close INPUT and/or OUTPUT before reopening them to
       disk files or devices is not a "kludge". These files are
       implicitly opened at program startup time to the keyboard
       and TEXT window respectively, and must be closed before
       they can be reopened. The following, however, is a kludge:
       If you close OUTPUT, say, reopen it on a file or device
       and subsequently close it again, OUTPUT (or INPUT) will
       implicitly be reopened to the TEXT window (or the keyboard).
       Unfortunately, once you've gotten this far you cannot
       subsequently close and reopen it again.

   2. No variation on PRINT, PRINTING, or PRINTER will appear in the
       index for the reference manual. The documentation had to be
       prepared last March and, while it was possible to patch in
       "extra features" at the last minute, making changes to the
       index would have been more difficult than you could imagine.
       I don't know who at Think told Stuart Reges otherwise, but
       that's the way it is.

   3. The final release copy of Macintosh Pascal will include two
       utility propgrams (written in Macintosh Pascal, of course):
       a text file printing utility and a mini text file editor.

       The print utility is essentially the same as Stuart's program,
       except that it additionally sets up the printer to print in a
       proportionally spaced font and to use vertical forms that
       result in a "perf skip" of about 6 lines. Those who would
       prefer to print with a monospaced font can, with the aid
       of an ImageWriter manual, modify the program appropriately.

       The text editor is fairly simple and straightforward to use
       and, as a program, probably impossible to understand or modify.
       It can be used not only to examine text files created by
       Macintosh Pascal, but also to create data files to be used as
       program input. Be warned, however, that it was written in some
       haste. Certain safeguards that should have been taken, to keep
       the Macintosh Memory Manager from blowing you away, were not in
       fact taken. If you have a substantial amount of data to edit, I
       recommend that you back up the file first. If you have a copy of
       MacWrite, I recommend using that even more strongly. You can
       make a MacWrite file readable by Macintosh Pascal by using the
       "Save As..." menu item and checking the "Text Only" indicator
       in the dialog box that it will present to you.


     Jon F. Hueras, Think Technologies, Inc.
     <singer@harvard>