----- Original Message -----
From: "William Martell" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
Sent: Monday, December 22, 2003 10:26 AM
Subject: Read Fix Length Text, Loop Problems


> Hello All,
>
> Thanks for reading my email.  I am trying to read a fix length text file
and
> extract specific substrings from each line.  I would like to extract
> specific things depending on which line is being read so I can avoid
picking
> up trash reading every line. The pattern repeats itself over and over
again
> until completion, so I think I should set a counter and then use the
counter
> to choose which set to extract, then I will reset the counter again to
> repeat the process.  I am having trouble understanding how to set the
> counter and determine what line is being read to extract.
>
> Any help or hints would be greatly appreciated.
>
> Thanks Again and Merry Christmas.
> Will Martell
> Dallas Texas
>
>
> PS. A sample of the data is attached for your review.
>
> Here is my code.-------------------------------------------#!/perl
>
> open (INFILE, "artb30_short.da4") || die "Can't open artb30.da4 file.";
>
>
>
> my @order_detail;
>
> @data = <INFILE>;
>
> foreach $row ( @data ){
>
>   if( $row == 1 ){
>
>    # extract fields for row 1
>    my %item1 = (
>      cust_number  => substr( $line, 0, 6 ),
>      cust_name => substr( $line, 8, 31 ),
>      cycle => substr( $line, 40, 5 ),
>      customer_type => substr( $line, 47, 15 ),
>      acct_contact => substr( $line, 64, 20 ),
>      phone => substr( $line, 86, 15 ),
>      credit_limit => substr( $line, 104 )
>    );
>
>    # trim spaces
>    while ( my ($key, $value) = each %item1 ) {
>      $value =~ s/^\s+//; #beginning spaces
>      $value =~ s/\s+$//; #ending spaces
>    }
>
>    # save for later processing
>    push @order_detail, \%item1;
>
> } elsif ( $row = 2 ) {
>
>    # extract fields for row 2
>    my %item2 = (
>    inv_no => substr( $line, 0, 6 ),
>    type => substr ( $line, 6, 3 ),
>    inv_date => substr( $line, 12, 3 ),
>    current => substr( $line, 23, 8 ),
>    days_1_30 => substr( $line, 36, 11 ),
>    days_31_60 => substr( $line, 51, 11 ),
>    days_61_90 => substr( $line, 64, 11 ),
>    days_over_90 => substr( $line, 78, 11 ),
>    on_hold => substr( $line, 92, 11 ),
>    unap_cash => substr( $line, 106, 11 ),
>    total_ar  => substr( $line, 120, 11 )
>    );
>
>    # trim spaces
>    while ( my ($key, $value) = each %item2 ) {
>      $value =~ s/^\s+//; #beginning spaces
>      $value =~ s/\s+$//; #ending spaces
>    }
>
>    # save for later processing
>    push @order_detail, \%item2;
>
>
> } else {
>
>    # extract fields for row 3
>    my %item3 = (
>    cust_totals_current => substr( $line, 23, 8 ),
>    cust_totals_days_1_30 => substr( $line, 36, 11 ),
>    cust_totals_days_31_60 => substr( $line, 51, 11 ),
>    cust_totals_days_61_90 => substr( $line, 64, 11 ),
>    cust_totals_days_over_90 => substr( $line, 78, 11 ),
>    cust_totals_on_hold => substr( $line, 92, 11 ),
>    cust_totals_unap_cash => substr( $line, 106, 11 ),
>    cust_totals_total_ar  => substr( $line, 120, 11 )
>    );
>
>    # trim spaces
>    while ( my ($key, $value) = each %item3 ) {
>      $value =~ s/^\s+//; #beginning spaces
>      $value =~ s/\s+$//; #ending spaces
>    }
>
>    # save for later processing
>    push @order_detail, \%item3;
>
>   }
>
> }
>
> PSS.  I would like to thank
> Bill Luebkert
> Randy Sims
> Richard Morse
> Chuck Charbeneau
>
> For all there help in the past.  You guys are great, I really appreciate
> your assistance.
>
>
>
> Merry Christmas!!
>





19:36:36                                             XXXXXXXX                          
           PAGE:          1 
FUNCTION: ARTB                                   XXXXXXXXXXXXXXXXXXXX                  
              DATE: 12/17/2003 
                                    FROM: 000000  THRU: 999999  SORTED: CUSTOMER CLASS 
       1                                     
===================================================================================================================================
 
                                             CUSTOMER GROUP: CUSTOMER CLASS        1 = 
                                             
===================================================================================================================================
 

CUS ID  CUSTOMER NAME                   CYCLE  CUSTOMER TYPE    ACCT CONTACT          
PHONE               CREDIT LIMIT              
------  ------------------------------  -----  ---------------  --------------------  
---------------   --------------              
003678  XXXXXXXXXXXXXXXXXXXXXXXXXXXX      1    OPEN ITEM                               
                           0.00             

INV NO TYP INV DATE       CURRENT          1-30         31-60         61-90       OVER 
90       ON HOLD     UNAP CASH*    TOTAL A/R 
------ --- --------   -----------   -----------   -----------   -----------   
-----------   -----------   -----------   ----------- 
054616  I   121703         603.73                                                      
                                      603.73 
CUSTOMER TOTALS       -----------   -----------   -----------   -----------   
-----------   -----------   -----------   ----------- 
                           603.73                                                      
                                      603.73 
-----------------------------------------------------------------------------------------------------------------------------------
 

CUS ID  CUSTOMER NAME                   CYCLE  CUSTOMER TYPE    ACCT CONTACT          
PHONE               CREDIT LIMIT              
------  ------------------------------  -----  ---------------  --------------------  
---------------   --------------              
003662  XXXXXXXXXXXXXXXXXXXXXXXXXXXXX    1    OPEN ITEM                                
                          0.00             

INV NO TYP INV DATE       CURRENT          1-30         31-60         61-90       OVER 
90       ON HOLD     UNAP CASH*    TOTAL A/R 
------ --- --------   -----------   -----------   -----------   -----------   
-----------   -----------   -----------   ----------- 
054601  I   121603       4,900.00                                                      
                                    4,900.00 
CUSTOMER TOTALS       -----------   -----------   -----------   -----------   
-----------   -----------   -----------   ----------- 
                         4,900.00                                                      
                                    4,900.00 
-----------------------------------------------------------------------------------------------------------------------------------
 

===================================================================================================================================
 

GROUP TOTALS          -----------   -----------   -----------   -----------   
-----------   -----------   -----------   ----------- 
                         5,503.73                                                      
                                    5,503.73 
PERCENTAGE OF TOTAL        100.00                                                      
                                      100.00 
                      ===========   ===========   ===========   ===========   
===========   ===========   ===========   =========== 

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>

Reply via email to