過去の桐井戸端BBS (桐ver.8)
7011 繰り返しを使って変数に代入したい とろっち 2000/07/31-13:33
一括処理で繰り返し処理をしようと思います。

項目名の[部屋名1]〜[部屋名5] の内容を 変数&部屋名1〜&部屋名5 に繰り返しを使って代入したいと思います。

変数を 部屋名 と &番号 に分けて また項目名を 部屋名 と &番号 に分けて
&番号が1〜5になるまで繰り返しをさせたいのですが、その場合、代入するときに
項目名を部屋名に&番号をくっつけないといけないのですがそのやり方が分かりません。

どなたか教えてください。

ただ普通にくっつけるだけなら "部屋名"+&番号となるのですが、項目名の場合は、[]がつくためにうまくいきません。

よろしくお願いします。

7012 Re:一括処理での繰り返しのしかた きりぎりす 2000/07/31-13:50
記事番号7011へのコメント
問題の解決方法はいくつかあると思いますが、ご質問の内容を直線的に解決するとすれば
コマンドコマンドを利用する方法が考えられますね。
まずはコマンドコマンドの仕様を見てください、きっと解決方法がひらめくことと思います。
7013 Re:一括処理での繰り返しのしかた 宮城 2000/07/31-14:42
記事番号7011へのコメント
とろっちさん、こんにちは。

正直言ってこれだけなら、「繰り返し」が必要とも思いませんが・・・。
次で足ります。

代入 &部屋名1=[部屋名1]¥
  ,&部屋名2=[部屋名2]¥
  ,&部屋名3=[部屋名3]¥
  ,&部屋名4=[部屋名4]¥
  ,&部屋名5=[部屋名5]

ただ、新しいことをやってみようというこころざしはご立派。

宣伝半分ですが、私のサイトのダウンロードコーナー(「駄作」と呼んでおります)に
「サーバー監視一括処理」というのを最近公開しました。その中の「パスばらし手続き」が参考になるかも。
V5ですけど、CMD読むだけならWin桐でも大丈夫でしょう。
 

7014 Re:一括処理での繰り返しのしかた 尾形 2000/07/31-17:13
記事番号7011へのコメント
ついでに、もう一歩踏み込んで配列変数に取り組んでみてはいかがでしょう。
7015 Re:一括処理での繰り返しのしかた とろっち 2000/07/31-17:19
記事番号7013へのコメント
宮城さん ありがとうございます。

実はそれだけでなく前後にも命令文があり部屋数は20あるのです。

どうしたら良いでしょうか?
7029 Re:一括処理での繰り返しのしかた kazu 2000/08/01-00:51
記事番号7011へのコメント
初めまして、初心者ですが考えてみました。
部屋.tblの項目は 部屋1〜部屋5だけでテキストす。
一列だけデータを入れ試してみました。的はずれのレスでなければいいのですが。?

変数 文字列{&変数名,&コマンド,&DMY}
変数 数値{&I,&部屋数}

表 "部屋.tbl",表番号=1

&部屋数=5

******変数宣言
    繰り返し &I=1,&部屋数
     &変数名=#文字置換(&変数名,&I,#連結("&部屋",#STR(&I)))
    繰り返し終了

   &コマンド=#連結("変数宣言 文字列{",&変数名,"}")
   コマンド &コマンド

******宣言した変数に代入 &DMYは関係ないけど必要
   繰り返し &I=1,&部屋数
    &DMY=#SET(#連結("部屋",#STR(&I)),#項目属性(&I,0))
   繰り返し終了

変数管理 固有



7030 Re:一括処理での繰り返しのしかた kazu 2000/08/01-02:06
記事番号7029へのコメント
訂正します。

******宣言した変数に代入 &DMYは関係ないけど必要
   繰り返し &I=1,&部屋数
    &コマンド="&DMY="+"#SET("+"部屋"+#STR(&I)+","+"[部屋"+#文字列(&I)+"])"
    コマンド &コマンド
   繰り返し終了

7033 Re:一括処理での繰り返しのしかた 尾形 2000/08/01-07:27
記事番号7030へのコメント
変数宣言 固有,文字列{部屋名50[50]}
繰り返し &実行リターン=1,50,1
 代入   &STR="部屋名"+#文字列(&実行リターン,2)
 条件   (#項目番号(&STR)<1) 繰り返し中止
 代入   &部屋名50[&実行リターン]=#項目属性(#項目番号(&STR),0)
繰り返し終了

7035 Re:一括処理での繰り返しのしかた とろっち 2000/08/01-13:00
記事番号7030へのコメント
kazuさん ありがとうございます。

やってみたのですが、どうもうまくいきません。
「コマンドの形式に誤りがあります。」のエラーが発生します。
&DMYにはどのような働きがあるのでしょうか?
7042 Re:一括処理での繰り返しのしかた kazu 2000/08/02-00:20
記事番号7035へのコメント
とろっち様 くだらない文を読んでいただきありがとうございました。
ベテランではないので、解説とは恥ずかしいのですが、

関数 #SETをヘルプで調べますと、
>&作業 に 123 を代入します。
>#SET( "作業" , 123 )#タ→ 123
となっています。これだけでは、変数に代入できないので
&DMY=#SET(部屋1,[部屋1]) と式をたてます。これで、&部屋1 と &DMY に
[部屋1]の項目値が代入されると思います。&DMYは、この場合何でもよかったのです。
単にダミーとしただけです。

変数管理 固有 で表示した物を書き出してみましたところ次のように変数に代入されていました。

変数名,文字列,固有,&部屋1,&部屋2,&部屋3,&部屋4,&部屋5
コマンド,文字列,固有,&DMY=#SET(部屋5,[部屋5])
DMY,文字列,固有,敏子
I,数値,固有,6
部屋数,数値,固有,5
部屋1,文字列,固有,佳織
部屋2,文字列,固有,恵子
部屋3,文字列,固有,由美子
部屋4,文字列,固有,花子
部屋5,文字列,固有,敏子

追伸
尾形様の配列変数を見せて頂、勉強できました。ありがとうございました。



7043 入力した値を項目名にするには? とろっち 2000/08/02-14:05
記事番号7011へのコメント
キリギリスさん 宮城さん 尾形さん そしてkazuさん どうもありがとうございました。
どうにかうまくできました。

ところがまたまた問題が発生しました。

項目名「部屋名1」〜「部屋名20」に入力した値を項目名にし、他の表に書き出した後、またもとの
項目名になおしたいと思います。

例えば項目名「部屋名1」に「A」という値を入力したら、項目名を「A」に直し他の表に書き出した後、
再び「部屋名1」に戻す。

どういうふうにしたらよいのでしょうか?
ぜひ お教えください。 お願いします。
7044 Re:入力した値を項目名にするには? 宮城 2000/08/02-17:12
記事番号7043へのコメント
別ツリーとすべきですね。

「項目名変更」でできないことはありません。しかし、積極的に別のやり方を見当すべきと申し上げます。
項目名と値をくるくる入れ替えるなんて間違いの元です。

項目名が変わっている状態で元の項目名のつもりの CMDや KEVが見に行けば、
てきめん「未定義の項目があります」で落ちますよ。

別の表にすべきです。

7047 Re:入力した値を項目名にするには? とろっち 2000/08/03-19:02
記事番号7044へのコメント
宮城さん ご指摘ありがとうございます。

別の表にしたいと思うのですが、そのやり方がよく分かりません。

例えば 部屋名1〜部屋名20に入力した値を別の表で、項目名にするにはどうしたらよいのでしょうか。
どうしてもその必要があるのですが、全く初心者なので頭がこんがらがってしまいます。

どのような方法があるか教えてください。

7062 Re:入力した値を項目名にするには? 佐田 守弘 2000/08/04-17:56
記事番号7047へのコメント
とろっちさん
簡単にできる方法ではないのですが、次の様な方法があります。
表の枠組みをK3形式で書き出したり、K3形式の表の定義内容を使って、表を新規に定義する方法があります。
これを一括処理ないしイベントで行います。

つまり、作成したい表の項目名がある表(Aとします)の項目値に書かれているとします。
そして、ここに書かれている項目名の表(Bとします)を作るわけなので、作るべき表の枠組みを記述した
K3ファイルを作成します。
この作成には、一括処理を使いますが、印字コマンドを使って、K3ファイルの内容を書き出します。
面倒なのはこの印字コマンドを作る部分です。特に、表の枠組みのK3ファイルは、項目名やその他の属性を記述する
文字列が二重引用符で囲まれた形で記述されています。この二重引用符を含んだ記述を正しく書き出す様に、
印字コマンドを記述する部分がとても面倒でしょう。
これは、技術的に難しいといった話ではなく、とても面倒で記述ミスを犯しやすいと言う意味です。

そして、一括処理の中で枠組みのK3ファイルを書き出したら、これを使って一覧表定義を行います。
この様にすれば、表Aに書かれている名前を項目名とした表Bを作れます。

佐田守弘(KS-00119)

戻る