For K="ABC":1:3 を定義すると、「ABC」の値は何か、ループが「ABC」を実行する方法、またはその ABC の代わりに「文字列」を使用する場合、文字列をどのようにインクリメントするか」 ABC」。
バス
For K="ABC":1:3 を定義すると、「ABC」の値は何か、ループが「ABC」を実行する方法、またはその ABC の代わりに「文字列」を使用する場合、文字列をどのようにインクリメントするか」 ABC」。
バス
MUMPS は、文字列を左から右に読み取って、文字列を数値に変換します。任意の数字と、結果の数字で最初に見つかったピリオドを使用し、数字以外の最初の文字で停止します。
文字列から数値への変換の例:
文字列 -> 数字
"1234" -> 1234
"1234A" -> 1234
"1234A4321" -> 1234
"" -> 0
"A" -> 0
"ABC" -> 0
MUMPS システムにアクセスできる場合は、簡単に見つけることができます。次のルーチンを実行するだけです。これは、たとえばファイル for3.m に存在する可能性があります。
for3
; routine to test FOR command
FOR K="ABC":1:3 WRITE "K=",K,! QUIT
私の Linux ボックスには、GT.M がインストールされています。http://sourceforge.net/projects/fis-gtm/で入手できます。
出力は次のとおりです。
$ gtm -run for3
K=0
K=1
K=2
K=3
HTHネイサン
文字列「ABC」を反復処理する場合は、次のようにします。
S STR="ABC"
F I=1:1:$L(STR) W $E(STR,I,I),!
$L ($Length) 関数は STR の長さを返します。この場合は 3 なので、for ループは 3 回だけ繰り返されます。
$E ($Extract) 関数は、STR の部分文字列を抽出します。$E の最初のパラメーターは、抽出元の文字列です。2 番目のパラメーターは開始位置で、3 番目のパラメーターは部分文字列の終了位置です。この場合、各文字が一度に 1 つずつ抽出されるように、同じ開始位置と終了位置を指定しています。
$L 関数の 2 番目のパラメーターとしてフィールド区切り文字を指定することもできます。したがって、STR="Name|Age|Sex" の場合、次のように各フィールドを書き出すことができます。
S STR="NAME|AGE|SEX"
F I=1:1:$L(STR,"|") W $P(STR,"|",1),!
ここで $L は 3 を返し、for ループは 3 回繰り返されます。
$P 関数 ($Piece) は、フィールド区切り文字としてパイプ文字 ( | ) を使用して STR から各フィールドを引き出し、どのフィールドを返すかを決定します。
お役に立てれば...
おたふくかぜ
フォーマットが変更されて申し訳ありません。Mea culpa!
プログラムのリストは次のようになっているはずです。
for3
; routine to test FOR command
FOR K="ABC":1:3 WRITE "K=",K,! QUIT
そして、出力は次のようになっているはずです。
$ gtm -run for3
K=0
K=1
K=2
K=3