同じコードが SAS 9.4 TS1M3 の関数で有効です。以前のバージョンには含まれていない可能性があります (9.4 およびメンテナンス リリース TS1M2 および 3 の FCMP でのアレイの処理方法に大幅な変更が加えられました)。
ただし、これは任意の長さの問題を実際には解決しません。関数を実行すると
outtext = cat(of final{*});
return (outtext);
わかった… 1キャラ!そして、私が走るとき
return(cats(of final{*}));
出力:
Obs text_enc finaltext
1 ABCABlABjABhAB1ABzABlAAgABVABUABGAA4AAgABpABzAAgABoABhAByABk BecauseU
2 ABTABpABtABwABsABlAByAAgABsABpABrABlAAgAB0ABoABpABz Simplerl
3 ABJABvAAgABJABvAAgABCAByABvABtABpABvABz IoIoBrom
これは少し良いです (猫はあなたのためにトリムします)、私はまだ 8 文字しか得られません. これは、SAS で宣言されていない文字変数のデフォルトの長さが 8 文字であるためです。(outtext のステートメントを使用して) 長さを拡張すると、次のlength
ようになります。
Obs text_enc finaltext
1 ABCABlABjABhAB1ABzABlAAgABVABUABGAA4AAgABpABzAAgABoABhAByABk BecauseUTF8ishard
2 ABTABpABtABwABsABlAByAAgABsABpABrABlAAgAB0ABoABpABz Simplerlikethis
3 ABJABvAAgABJABvAAgABCAByABvABtABpABvABz IoIoBromios
必要な長さを定義する必要があります。FCMP では、私の知る限り、長さが未定義の文字列を使用する方法は許可されていません。返す文字列のデフォルト (および最大) の長さを定義する必要があります。ユーザーはより短い長さを定義することができ、適切な場合はそうすべきです。