RexxLand-Linux用ライブラリ


RexxLandで使っているLinux用のRexxライブラリをいくつかご紹介しましょう。
あえて、ソースコードそのままを出していますので、ブラウザでCopy & Pasteしてファイルにしてください。

say
まずは、私のお気に入り、sayコマンドです。これをパス上で有効な場所に入れておくと、
say 3+5 --> '8'
say *2 --> '16'
say /4 --> '4'
という具合に簡単な計算が、前のデータも残したままできます。rexxtryをわざわざ呼ぶ必要がない場合も多いと思います。下記のソースをsayという名前で保存し、chmod +x say を実行してください。

#! /usr/local/bin/rexx
/* say */

'whoami >LIFO'
pull me .
file='/tmp/rexxsay'me

if chars(file)=0 then last=''
else last=linein(file)

parse arg p
p1=left(p' ',1)
if p1='+' | p1='*' | p1='/' | p1='-' then p=last||p
p=translate(p,'"','_')
p=translate(p,'(','[');
p=translate(p,')',']');
interpret 'pp='p
say pp
call lineout file,pp,1
call lineout file


unix2pc
テキストファイルの改行コードをMS-DOS用に変更するためのツールです。同種のソフトは多数ありますが、あえてrexxで作成しています。使い方は、unix2pc < infile >outfileです。この手のソフトは、本当にrexxの独壇場という気がします。もちろん、cshellなどでも可能ですが、ソースの読みやすさはrexxがピカイチですね。

#! /usr/local/bin/rexx

do while lines()<>0
 x=linein()
 call lineout ,x||'0d'x
end

pc2unix
unix2pcの逆の動作をするpc2unixのソースです。上のプログラムより若干複雑ですが、それでも10行程度で実現できてしまいます。

#! /usr/local/bin/rexx

do while chars()<>0
 x=charin()
 if x=='0d'x then do
  x2=charin()
  if x2=='0a'x then x=x2
  else do; call charout ,x; x=x2;end
 end
 call charout ,x
end



Yukkun's HomePageへ BBJapan HomePageへ