################################################################################ # # Program: choprec.pl # Author: Peter R. Schmidt # Description: Split a long ascii record up for printing # Date: 04/10/95 # ################################################################################ # ENABLE THIS PERL SHRIPT TO RUN AS A SHELL SCRIPT eval 'exec perl -S $0 ${1+"$@"}' if 0; ################################################################################ # WHERE TO FIND PERL FUNCTIONS push (@INC,"/usr/local/src/lib/perl"); # WHERE TO FIND LOCAL PERL FUNCTIONS push (@INC,"/usr/local/perl4/lib"); # WHERE TO FIND STANDARD PERL FUNCTIONS require "perl_lib1.pl"; require "ctime.pl"; require "flush.pl"; ###################################################################### # TOP OF PAGE sub top_of_page { $PAGE_CNT = ($PAGE_CNT + 1); if ($PAGE_CNT != 1) { print OUT_FILE1 " 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890\n"; print OUT_FILE1 "\f"; } $STARTSTAMP = &ctime($STARTTIME); chop($STARTSTAMP); $CENSTR = do center($FIRM,40); print OUT_FILE1 "$STARTSTAMP $CENSTR Page: $PAGE_CNT\n"; $CENSTR = "Filename: " . $FILENAME1; $CENSTR = do center($CENSTR,100); print OUT_FILE1 "$CENSTR\n\n"; print OUT_FILE1 " 10 20 30 40 50 60 70 80 90 100\n"; print OUT_FILE1 " 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890\n"; print OUT_FILE1 "\n"; $LINECNT = 6; } ###################################################################### # MISC SETUP and INITIALIZATION $FALSE = 0; $TRUE = 1; $FIRM = "Peter R. Schmidt"; $STARTTIME = time; ###################################################################### # GET RUN-TIME ARGUMENTS ($FILENAME1,$LIMIT,$PAGELIMIT) = @ARGV; ###################################################################### $len = length($FILENAME1); if ($len == 0) { print "Enter Filename\n"; chop($FILENAME1 = ); } $FILEOUT1 = $FILENAME1 . ".out"; if (!($LIMIT)) { print "Enter number of lines to print (0 = no limit)\n"; chop($LIMIT = ); } if (!($PAGELIMIT)) { print "Enter number of pages to print (0 = no limit)\n"; chop($PAGELIMIT = ); } ###################################################################### system "cls"; # CLEAR SCREEN $CENSTR = do center($FIRM,80); print "$CENSTR\n"; $CENSTR = do center("Chop up very long ascii records for printing",80); print "$CENSTR\n"; print "\n"; print "Input file is: $FILENAME1\n"; print "Output file1 is: $FILEOUT1\n"; print "\n"; if ($LIMIT) { print "Process ONLY $LIMIT records...\n"; } elsif ($PAGELIMIT) { print "Process ONLY $PAGELIMIT pages...\n"; } else { print "Process entire file...\n"; } ###################################################################### # OPEN FILES unless (open (INP_FILE1,"<$FILENAME1")) { die "Can't open input file $FILENAME1\n$!\n"; } unless (open (OUT_FILE1,">$FILEOUT1")) { die "Can't open output file $FILEOUT1\n$!\n"; } ###################################################################### # INITIALIZE $FLAG_TIME = $FALSE; $FLAG_PAGE = $FALSE; $PAGE_CNT = 0; $LINENO = 0; $LINEOUT1 = 0; $CNT_100 = 0; $PAGELEN = 60; $PAGECNT = 0; $LINECNT = 0; $NEED_LENGTH = 0; ###################################################################### # PROCESS INPUT FILE print "\nWorking...\n\n"; do top_of_page(); while () { $LINENO = $LINENO + 1; if ($LIMIT) { if ($LINENO >= $LIMIT) { last }; } if (/\f/) { next }; # SKIP FORM FEEDS $len = length($_); # GET LINE LENGTH ############################################################ # DISPLAY RECORD COUNT $CNT_100 = $CNT_100 + 1; if ($CNT_100 == 100) { print STDOUT "$LINENO records in \r"; &flush(STDOUT); $CNT_100 = 0; } ############################################################ $i = 0; $remaining = length($_); if (($LINECNT + $NEED_LENGTH) > $PAGELEN) { if ($PAGELIMIT > 0) { if (($PAGE_CNT + 1) > $PAGELIMIT) { last }; } do top_of_page(); } $NEED_LENGTH = 0; while ($TRUE) { if ($remaining > 0) { if ($remaining > 100) { $left = 100; } else { $left = $remaining; } $str = substr($_,$i,$left); printf OUT_FILE1 "%4u $str\n",$i; $LINECNT = ($LINECNT + 1); $NEED_LENGTH = ($NEED_LENGTH + 1); $i = ($i + $left); $remaining = ($remaining - $left); } else { # NOTE: THE LAST LINE PRINTED ABOVE INCLUDED A NL print OUT_FILE1 "-" x 105; print OUT_FILE1 "\n"; $LINECNT = ($LINECNT + 2); last; } } } print OUT_FILE1 " 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890\n"; ###################################################################### # END OF FILE $ENDTIME = time; $DURATION = do duration($ENDTIME - $STARTTIME); $STARTSTAMP = &ctime($STARTTIME); $ENDSTAMP = &ctime($ENDTIME); chop $STARTSTAMP; chop $ENDSTAMP; print "$LINENO records in \n"; ###################################################################### # CLOSE FILES close INP_FILE1; close OUT_FILE1; print "\n"; print "\n"; print "Program Completed (Duration: $DURATION)\n"; print "\n"; __END__ ################################################################################