2

For K="ABC":1:3 を定義すると、「ABC」の値は何か、ループが「ABC」を実行する方法、またはその ABC の代わりに「文字列」を使用する場合、文字列をどのようにインクリメントするか」 ABC」。

バス

4

4 に答える 4

5

MUMPS は、文字列を左から右に読み取って、文字列を数値に変換します。任意の数字と、結果の数字で最初に見つかったピリオドを使用し、数字以外の最初の文字で停止します。

文字列から数値への変換の例:

文字列 -> 数字
"1234" -> 1234
"1234A" -> 1234
"1234A4321" -> 1234
"" -> 0
"A" -> 0
"ABC" -> 0

于 2010-11-26T04:26:34.373 に答える
3

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ネイサン

于 2011-01-19T13:32:30.273 に答える
2

文字列「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 から各フィールドを引き出し、どのフィールドを返すかを決定します。

お役に立てれば...

おたふくかぜ

于 2011-02-03T19:39:17.530 に答える
1

フォーマットが変更されて申し訳ありません。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
于 2011-01-19T13:35:36.367 に答える