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]