Type : EXTERNE
Les données sont définies par le paramètre macro `in_data`. Le script s'attend à recevoir une table existante.
| 1 | PROC SQL noprint; |
| 2 | select distinct max(LENGTH(&in_var)) into :lngth |
| 3 | from &in_data; |
| 4 | QUIT; |
| 1 | DATA &in_data; |
| 2 | SET &in_data(rename=&in_var=_&in_var._); |
| 3 | %gmModifySplit(var=_&in_var._, width=&maxlen); |
| 4 | RUN; |
| 1 | PROC SQL noprint; |
| 2 | select cats(max(count(_&in_var._, "&split"))) into :varn |
| 3 | from &in_data; |
| 4 | QUIT; |
| 1 | DATA &out_data; |
| 2 | SET &in_data; |
| 3 | array vlst{*} $200 &out_pre. &out_pre.1 - &out_pre.&varn; |
| 4 | DO i=1 to %eval(&varn+1); |
| 5 | vlst(i)=scan(_&in_var._, i, "&split"); |
| 6 | END; |
| 7 | drop _&in_var._ i; |
| 8 | RUN; |
| 1 | DATA &out_data; |
| 2 | SET &in_data(rename=&in_var=_&in_var._); |
| 3 | LENGTH &out_pre $200; |
| 4 | &out_pre=_&in_var._; |
| 5 | drop _&in_var._; |
| 6 | RUN; |