2021年1月1日金曜日

連続した複数のブランクを1つに削る話

 たまにミスか知らないですけど1つで良いところに2つくらいスペースが入ってるときを見かけます.え?そんなに見ない?
連続した空白の重複を取り除くのって知人のプログラムでは大層なことをやっていたのですが,関数一発で片付くのです…もちろん配列とか駆使すれば何とかなりますけど…

以下の実行ログを見てもらえればいいのですが,compbl関数の紹介です.
aの変数にはhoとgeの間にスペースが3つはいっていますが,compbl関数を通したbの変数ではスペースが1つになっています.あんまり使う機会無いのでいっつも使いたい時には忘れているのですが…
スペースは何個あっても1つになります.スペース自体を消す時はcompress関数ですね

79129   data _null_ ;

79130   a = "ho   ge" ;
79131   b = compbl(a) ;
79132
79133   putlog a b ;
79134   run ;

ho   ge ho ge

NOTE: DATAステートメント処理(合計処理時間):
      処理時間           0.00 秒
      CPU時間            0.00 秒