## Tricky file to read in

Solved
Super Contributor
Posts: 410

# Tricky file to read in

have space separated file like below. problem is when var 3 has 0 value file don't have extra space mentioned and next field continues.

var1/var2/var3/4/var5

1  "host1"  2  "file1"  "file2"   123456

4  "host1"  "host2"   "host3"   "host4"  3  "file1"  "file2"  "file3"  456789

2  "host1"  "host2"   0  9922

want

var1      var2                                                        var3              var4                                var5

1           "host1"                                                     2                   "file1"  "file2"                   123456

4           "host1"  "host2"   "host3"   "host4"           3                   "file1"  "file2"  "file3"        456789

2           "host1"  "host2"                                        0                   _null_                              9922

Accepted Solutions
Highlighted
Solution
‎02-16-2018 03:47 PM
Super User
Posts: 8,120

## Re: Tricky file to read in

Looks pretty simple to me.

``````data want ;
length var1 8 var2 \$200 var3 8 var4 \$200 var5 8;
length i 8 next \$200;
input var1 @;
do i=1 to var1 ;
input next @;
var2 = catx(' ',var2,next);
end;
input var3 @;
do i=1 to var3 ;
input next @;
var4 = catx(' ',var4,next);
end;
input var5  ;
drop i next ;
cards;
1  "host1"  2  "file1"  "file2"   123456
4  "host1"  "host2"   "host3"   "host4"  3  "file1"  "file2"  "file3"  456789
2  "host1"  "host2"   0  9922
;``````

All Replies
Super User
Posts: 6,785

## Re: Tricky file to read in

Assuming that you already have a way to read in VAR1 through VAR5 for the non-zero rows, here is the change to make:

input var1 var2 var3 @ ;

if var3 = 0 then input var5;

else input var4 var5;

This is obviously missing a lot of the details of the INPUT statement.  But it's the trialing @ that you will need to add, to be able to modify your existing program.

Highlighted
Solution
‎02-16-2018 03:47 PM
Super User
Posts: 8,120

## Re: Tricky file to read in

Looks pretty simple to me.

``````data want ;
length var1 8 var2 \$200 var3 8 var4 \$200 var5 8;
length i 8 next \$200;
input var1 @;
do i=1 to var1 ;
input next @;
var2 = catx(' ',var2,next);
end;
input var3 @;
do i=1 to var3 ;
input next @;
var4 = catx(' ',var4,next);
end;
input var5  ;
drop i next ;
cards;
1  "host1"  2  "file1"  "file2"   123456
4  "host1"  "host2"   "host3"   "host4"  3  "file1"  "file2"  "file3"  456789
2  "host1"  "host2"   0  9922
;``````
Super Contributor
Posts: 410

## Re: Tricky file to read in

[ Edited ]

Thanks Tom. I ran your code and it looks great.

☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
• 3 replies
• 305 views
• 5 likes
• 3 in conversation