home *** CD-ROM | disk | FTP | other *** search
- ICE : procedure options(main);
-
- /**************************************************/
- /* */
- /* IN CONTEXT EDITOR */
- /* */
- /* Re-implementation of ICE written by */
- /* P. G. Main in Ratfor. */
- /* */
- /* Paul Tilden Aug 1981 */
- /* */
- /* IMPORTANT: To avoid confusion, the word */
- /* LINE is used exclusively to refer to lines */
- /* on the VDU screen, and ROW to refer to data */
- /* in the working buffer BUF. */
- /* */
- /**************************************************/
-
- %replace
- true by '1'b,
- false by '0'b;
- %replace
- huge by 32000,
- linelen by 100, /* screen width */
- scrlen by 16, /* screen length */
- size by 100; /* nr. of rows in buf */
- %replace
- escape by 27,
- line_feed by 10;
-
- declare
- (edt_in, edt_out, sysin, sysprint) file;
- declare
- nextout fixed, /* next row to be output from buf */
- lastin fixed, /* last row input to buf */
- posn fixed, /* equal to rmod(crow - lastin) */
- crow fixed, /* current row */
- delrows fixed, /* nr. of rows to be deleted but
- not yet read */
- inrow fixed, /* infile row nr. of lastin */
- inopen bit(1), /* flag saying an input file is open */
- file_end bit(1), /* eof on edt_in */
- abort bit(1), /* abort edit */
- scr_row fixed, /* screen row */
- scr_col fixed; /* screen column */
- declare
- 1 buf(size),
- 2 buf_row character(linelen) varying;
- declare
- upper character(26) static initial
- ('ABCDEFGHIJKLMNOPQRSTUVWXYZ'),
- lower character(26) static initial
- ('abcdefghijklmnopqrstuvwxyz'),
- digit character(10) static initial ('0123456789'),
- blanks character(linelen) varying static;
-
-
- /********************************************************/
- /* */
- /* MAIN PROCEDURE */
- /* */
- /********************************************************/
-
- /* initialization */
- open file(sysprint) print pagesize(0)
- linesize(255)
- title('$CON');
- begin;
- declare i fixed;
- do i = 1 to size;
- buf_row(i) = '';
- end;
- blanks = '';
- do i = 1 to linelen;
- blanks = blanks !! ' ';
- end;
- end;
- call home_cursor;
- call clear_screen;
- nextout = 1;
- lastin = size;
- crow = lastin;
- posn = size;
- inrow = 0;
- delrows = 0;
- on undefinedfile(edt_in)
- begin;
- call diag('new file');
- inopen = false;
- file_end = true;
- goto edtin_cont;
- end;
- open file(edt_in) input stream env(b(2048)) title('$1.$1');
- inopen = true;
- file_end = false;
- revert undefinedfile(edt_in);
- edtin_cont: ;
- open file(edt_out) output stream pagesize(0) env(b(2048))
- title('$1.%%%');
- call get_row(lastin);
- call spray(scrlen-2,scrlen-2);
-
- /* edit file */
- call edit_file;
-
- /* file cleanup */
- close file(edt_in);
- close file(edt_out);
-
- /* end */
- call diag('done');
-
-