I need to modify my code to test the value stored in the 8th position of the input.
Here's the input file: ... ... 04500|04500|61.89|1|182988|20021023|61.89|1|0|0000070001|17893|FIRM| 06156|06156|161.92|1|183774|20021115|566.72|3|0|0000070001|20591|FIRM| 06277|06277|323.84|2|183774|20021115|566.72|3|0|0000070001|20591|FIRM| 06265|06265|80.96|3|183774|20021115|566.72|3|0|0000070001|20591|FIRM| 09310|09310|94.46|1|183719|20021126|165.52|2|0|0000070001|22532|FIRM| 09310|09310|71.06|2|183719|20021126|165.52|2|0|0000070001|22532|FIRM| If the value is 1, after printing the 1st and 2nd printf statements, pass it through the 3rd printf statement, producting 3 output records. If it is 2, after printing the 1st and 2nd printf statements, pass it and the next input record through the 3rd printf statement, producing 4 output records. If it is 3, after printing the 1st and 2nd printf statements, pass it and the next 2 input records through the 3rd printf statment, producing 5 output records. ...and so on. Here's my code: #!/usr/bin/perl -w # # Parse input from invoice file and split into three output files # PGO March 2003 # must run inv_sed against datafile (file9.final) to remove $ my $datafile = "invshrt"; open DATA, "< $datafile" || die "Can't open data file: $datafile"; # my $date = `date +%Y%m%d`; my $date = do { my @ymd=(localtime(time))[5,4,3]; $ymd[0] += 1900; $ymd[1] += 1; sprintf "%04d%02d%02d", @ymd; }; while(<DATA>) { chomp; my @data = split('\|'); printf "%-2s%-16s%-8s%-10s%-10s%-7s%-11s%-152s%-10s%-16s%-2s\n", "", $data[4], $data[5], $data[9], "", "", $date, "", $data[6], "", "01"; printf "%-2s%-10s%-10s%-10s%-4s%-12s%-10s%-184s%-2s\n", "", $data[11], "", $data[10], "", $data[6], $data[7], "", "02"; printf "%-2s%-10s%-6s%-10s%-10s%-8s%-6s%-10s%-180s%-2s\n", "", $data[11], "500500", $data[2], $data[10], $date, $data[1], "SPMAT340", "", "03"; } close DATA; exit 1; Perhaps some code before the 3rd printf akin to (pseudo-code follows): ... ... read store in hash ... printf (the 1st); printf (the 2nd); ... if $data[7] = 1 printf (the 3rd ); else if $data[7] = 2 printf (the 3rd); read next input rec; else if $data[7] = 3; printf (the 3rd); read next input rec; printf (the 3rd); read next input rec; printf (the 3rd); I'm looking for syntax if possible. Thanks with regards. Pat Gorden-Ozgul -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]