dos_compilers/Digital Research PLI-86 v1/COPYLPT.PLI
2024-06-30 12:01:25 -07:00

81 lines
2.4 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/******************************************************/
/* This program copies a STREAM file on disk to a */
/* PRINT file, and formats the output with a page */
/* header, and line numbers. */
/******************************************************/
copy: procedure options(main);
declare
(sysin, sourcefile, printfile) file,
(pagesize, pagewidth, spaces, linenumber) fixed,
(line character(14), buff character(254)) varying;
put list('^z File to Print Copy Program');
on endfile(sysin)
go to typeover;
typeover:
put skip(5) list('How Many Lines Per Page? ');
get list(pagesize);
put skip list('How Many Column Positions? ');
get skip list(pagewidth);
on error(1)
begin;
put list('Invalid Number, Type Integer');
go to getnumber;
end;
getnumber:
put skip list('Line Spacing (1=Single)? ');
get skip list(spaces);
revert error(1);
put skip list('Destination Device/File: ');
get skip list(line);
open file(printfile) print pagesize(pagesize)
linesize(pagewidth) title(line);
on undefinedfile(sourcefile)
begin;
put skip list('"',line,'" isn''t a Valid Name');
go to retry;
end;
retry:
put skip list('Source File to Print? ');
get list(line);
open file(sourcefile) stream environment(b(8000))
title(line);
on endfile(sourcefile)
begin;
put file(printfile) page;
stop;
end;
on endfile(printfile)
begin;
put skip list('^g^g^g^g Disk is Full');
stop;
end;
on endpage(printfile)
begin;
put file(printfile) page skip(2)
list('PAGE',pageno(printfile));
put file(printfile) skip(4);
end;
signal endpage(printfile);
do linenumber = 1 repeat(linenumber + 1);
get file (sourcefile) edit(buff) (a);
put file (printfile)
edit(linenumber,'|',buff) (f(5),x(1),a(2),a);
put file (printfile) skip(spaces);
end;
end copy;