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

81 lines
2.4 KiB
Plaintext
Raw Permalink 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;