Japhy: Thanks very much for the answer.
Everybody:
I am working on a project which involves downloading files via FTP from an
AS/400, and I had to write a couple of functions because of the weird way
IBM does things.
The first function takes a value, and dependent upon the final character,
does something to it.
Rules:
1. If it is a letter, the letter represents a specific decimal amount, and
the number is negative.
example: 4L = -3.7, or 6R = -6.3 <-- Note: these are not the actual
numbers corresponding to the letters, I have the sub figure that out.
2. The close curly-brace '}' denotes that the value is negative.
example: 4} = -4
3. All numeric means that the final character is the decimal amount.
example 43 = 4.3
The second function checks to see if the final character is numeric. If it
is not, the final character is a stand-in for a digit, and the entire
statement is negative. Otherwise, the number stays as is.
examples: 345M = -3452, 5634 = 5634
Hope this is useful to someone. If not, maybe someone already has a
resource for converting "mainframe" data types. If they do, I'd like to
know about it.
sub parseFrom400 {
my $value = @_[0];
my $delimiter = substr($value, 3, 1);
if ($delimiter =~ /[0-9]./){
$value = substr($value, 0, 3);
}
if ($delimiter =~ /[J-R]/){
my $tempChar = ord($delimiter) - 73;
$value += ($tempChar/10);
$value = 0 - $value;
}else{
if ($delimiter eq "}"){
$value = 0 - $value;
}else{
$value = $value/10;
}
}
return $value;
}
sub parseFrom400_2 {
my $value = @_[0];
my $delimiter = substr($value, 7, 1);
if ($delimiter =~ /[J-R]/){
my $tempChar = ord($delimiter) - 73;
$value *= 10;
$value += $tempChar;
$value = 0 - $value;
}
return $value;
}
Shawn
japhy@perlmon
k.org To: [EMAIL PROTECTED]
cc: [EMAIL PROTECTED]
10/17/2002 bcc:
11:53 AM Subject: Re: How can I open and read two
files at once in a loop?
Please
respond to
japhy
On Oct 17, [EMAIL PROTECTED] said:
>while (<FIRSTIN><SECONDIN>){
> #assume $otherData would be the $_ from <SECONDIN>
> print FIRSTOUT "$_\n";
> print SECONDOUT "$otherData, $_\n";
>
>}
Like so:
while (<FIRSTIN>) {
my $otherData = <SECONDIN>;
print FIRSTOUT $_;
print SECONDOUT $otherData, $_;
}
--
Jeff "japhy" Pinyan [EMAIL PROTECTED] http://www.pobox.com/~japhy/
RPI Acacia brother #734 http://www.perlmonks.org/ http://www.cpan.org/
** Look for "Regular Expressions in Perl" published by Manning, in 2002 **
<stu> what does y/// stand for? <tenderpuss> why, yansliterate of course.
[ I'm looking for programming work. If you like my work, let me know. ]
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
**********************************************************************
This e-mail and any files transmitted with it may contain
confidential information and is intended solely for use by
the individual to whom it is addressed. If you received
this e-mail in error, please notify the sender, do not
disclose its contents to others and delete it from your
system.
**********************************************************************
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]