LISTSERV at the University of Georgia
Menubar Imagemap
Home Browse Manage Request Manuals Register
Previous (more recent) messageNext (less recent) messagePrevious (more recent) in topicNext (less recent) in topicPrevious (more recent) by same authorNext (less recent) by same authorPrevious page (February 2004, week 2)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:         Thu, 12 Feb 2004 13:05:32 -0500
Reply-To:     Shannon Fair <s.fair@CRIFGROUP.COM>
Sender:       "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From:         Shannon Fair <s.fair@CRIFGROUP.COM>
Subject:      Parsing Variable Length File
Content-Type: text/plain; charset=ISO-8859-1

I am trying to read a variable length flat file with both fixed and variable length segments. Reading each variable length segment requires searching for and finding each field’s tag and length in order to identify the value in those fields. For example, to begin reading the first segment, I have to find a 2-byte tag (LN) of the first field (Last Name) in that segment. Immediately following this tag is the 2-byte length of the Last Name field. Since this field contains a name of eight bytes, the record would read LN08 followed by an 8-byte character: LN08FRANKLIN. Here is a short example of the first part of one record:

XXXXXXXXXXXXXXXUSYYYYYYYYYY12LN04FAIRMN07SHANNON......

data test (DROP=LENGTHPN LENGTHMN); infile 'e:\above file.txt' missover; input User_ref $15. Cntry_cd $2. Memb_cd $10. Prim_cd 1. Sec_cd 1. /*Name Segment*/ PN $2. lengthPN 2. @; call symput ('format',lengthPN); /* I know this doesn't work, but I would like it to*/ input Paternal_Name $&format.. MN $2. lengthMN 2. @; call symput ('format',lengthMN); /* I know this doesn't work, but I would like it to*/ input Maternal_Name $&format.. ; run;

I cannot figure out a way to resolve the macro 'format' variable & I have tons of segments to parse plus a large amount of records - therefore, I only want to make one pass through the data.

Any suggestions???

Thanks!


Back to: Top of message | Previous page | Main SAS-L page