過去の桐井戸端BBS (桐ver.8)
11363 手続き定義開始の中に書いてある引数がよく解りません 今村 誠 2001/05/28-08:14
手続き定義開始 色変更(文字列 &灰色,文字列&白色)

括弧の中に変数などが入った記述を見かけますが、この部分がいつも何をするのか解りません。
参考になるマニュアルのページや具体例などありましたら、教えてください。

手続き定義開始の前が重要なのでしょうか。
11367 Re:引数がよく解りません やまぐっちゃん 2001/05/28-10:29
記事番号11364へのコメント
>参考になるマニュアルのページや具体例などありましたら、教えてください。

桐V8の一括処理&イベントハンドラのヘルプがHTMLファイルとして提供されています。
そこに「イベント処理」−「引数を使用する」というところがあり、使用例等も載っていますので参考にしてください。

11368 Re:引数がよく解りません 悲しげ 2001/05/28-13:31
記事番号11364へのコメント
やまぐっちゃんが挙げられたのは「イベントハンドラ」の引き数の方ですね。
でも、今村さんが例示したのは
  手続き定義開始 色変更(文字列 &灰色,文字列&白色)
となっていますから、これは「一般」手続きの引き数のような気もします。
とすれば、htmlヘルプでは、「一括処理コマンド」の方の
 ・「手続き実行 <手続き名>」
 ・「手続き定義開始」   ←イベントじゃない方
で、それなりに説明されています。

>手続き定義開始の前が重要なのでしょうか。

そうとも云えます。
あまりいい例じゃないかも知れませんが、とりあえず自作の中から、判りやすそうな例を探して来ました。(^^;)
(一部書き直してますから、書き直し間違いがあるかも知れません)
----------------------------------------------------------
*〜〜〜〜某手続き内の記述↓
if(&め[3]>0)
 確認 "○△×明細データを印刷します。",&確認
 if(&確認)
  手続き実行 暫時待機("○△×明細データ印刷中","青","左寄せ")
  レポート印刷 "○△×.rpt",会話=する,終了状態=&終了
 else
  手続き実行 暫時待機("","","")
 end
end
*〜〜〜〜某手続き内の記述↑

手続き定義開始 暫時待機(文字列 &待機,文字列 &前景色,文字列 &横位置)
 if(&待機="")
  &待機="処理を指定し、[f・4]で実行、[Esc]で終了"\
  ,&前景色="チャコールグレイ",&横位置="中央揃え"
 end
 オブジェクト操作 @a操作表示{標題=&待機,前景色=&前景色,横位置=&横位置}
 メソッド呼出し @a操作表示.再描画(0)
 メソッド呼出し @フォーム.描画更新()
手続き定義終了
-------------------------------------------------------------

あるフォームのどこか(下方とか)に操作表示なるラベルオブジェクトが有るとします。
普段は「処理を指定し、[f・4]で実行、[Esc]で終了」と中央揃えでチャコールグレイの字で表示されているとします。
ある時に印刷するとした場合、印刷中の待機のお知らせとして、
引き数に定数(文字列)を入れて手続きを実行すると、「○△×明細データ印刷中」と青色、左寄せで表示されます。
そうじゃない時は、引き数に未定義を指定して、表示を元に戻しておかなければならない場合もあります、と云う例です。
11369 Re:引数がよく解りません 悲しげ 2001/05/28-13:42
記事番号11368へのコメント
すいません、ちょっと記述がタコ(実態に合わない)なので
少し書き換えます。(^^;)

*〜〜〜〜某手続き内の記述↓
if(&め[3]>0)
 確認 "○△×明細データを印刷します。",&確認
 if(&確認)
  手続き実行 暫時待機("○△×明細データを延々と印刷中","青","左寄せ")
  レポート印刷 "○△×.rpt",会話=する,終了状態=&終了
  手続き実行 暫時待機("","","")
  確認 "ようやく印刷が終了しました(てゆーか、もうすぐ終わります)"
 end
end
*〜〜〜〜某手続き内の記述↑

※こうしとかないと、印刷が終わっても「印刷中」の表示のままなので。(^^;)
11370 Re:引数がよく解りません ONnoji 2001/05/28-14:16
記事番号11369へのコメント
>手続き定義開始 色変更(文字列 &灰色,文字列&白色)
>
>括弧の中に変数などが入った記述を見かけますが、この部分がいつも
>何をするのか解りません。
>参考になるマニュアルのページや具体例などありましたら、教えてください。
>
>手続き定義開始の前が重要なのでしょうか。

今村 誠さん、こんにちは。

[手続き定義開始( )]コマンドは[手続き実行( )]コマンドと組み合わせて使うものですが、
[手続き定義開始( )]コマンドと関連コマンドに関しては桐のオンラインヘルプの以下が参考になると思います。

ドライブ:\K3\KIRIV8\Help\INDEX.HTM

【HOME】
【INDEX】
 :
【一括処理】
 :
【イベント処理】
 はじめに
  :
 定義してみよう
   :
  一般手続きを定義する ←これが参考になるかもしれません。
11371 Re:引数がよく解りません ONnoji 2001/05/28-15:16
記事番号11370へのコメント
今村 誠さん、こんにちは。

手続きの引数の受け渡しについて例を作ってみました。
まったく実用的ではありせんが参考になれば幸いです。
例は一括処理(.cmd)にしましたが、イベント処理(.kev)でも引数の受け渡しに関しては同じです。
やはりいい例ではなかったかもしれませんが...

(例)
変数宣言 固有,数値{&結果}

*100は底辺の値のつもり、50は高さの値のつもり、どちらも数値型の変数で指定可能
手続き実行 計算する("三角形の面積",100,50,&結果)
確認 #str(&結果)

*70は半径のつもり、数値型の変数で指定可能
手続き実行 計算する("円の面積",70,#未定義,&結果)
確認 #str(&結果)

*300は売上のつもり、0.05は消費税のつもり、どちらも数値型の変数で指定可能
手続き実行 計算する("消費税",300,0.05,&結果)
確認 #str(&結果)
終了

手続き定義開始 計算する(文字列 &計算種別,数値 &入力1,数値 &入力2,参照 数値 &出力)
ケース開始
 ケース (&計算種別="三角形の面積")
  &出力=&入力1×&入力2/2
 ケース (&計算種別="円の面積")
  &出力=#円周率×&入力1^2
 ケース (&計算種別="消費税")
  &出力=&入力1×&入力2
ケース終了
手続き定義終了


11372 Reすこし賢くなりました。(^^;) 今村 誠 2001/05/28-16:03
記事番号11369へのコメント
悲しげさんこんにちは、具体例大変わかりやすくすぐ理解しました。
代入を省けるような感じで理解しました。
ありがとうございました。

11373 Re:引数がよく解りません 今村 誠 2001/05/28-16:14
記事番号11371へのコメント
ONnojiさんこんにちは
手続き実行 計算する("消費税",300,0.05,&結果)
>確認 #str(&結果)
>終了
>
>手続き定義開始 計算する(文字列 &計算種別,数値 &入力1,数値 &入力2,参照 数値 &出力)
>ケース開始
> ケース (&計算種別="三角形の面積")
>  &出力=&入力1×&入力2/2
> ケース (&計算種別="円の面積")
>  &出力=#円周率×&入力1^2
> ケース (&計算種別="消費税")
>  &出力=&入力1×&入力2
>ケース終了
>手続き定義終了

投稿前に何度もONnojiさんのホームページを読み返したのですがぴんときませんでした。
この引数は最大で3つを代入できて、参照とすると文字でも数値でも呼び出したところに持って帰るのでしょうか。
手続き定義開始 には &出力 で 呼び出しには &結果 と名前が違いますが
同じ名前にしなくても良いのでしょうか。
変数宣言には、&結果だけしか記述してありませんが &入力1 や &入力2 は
自動的に変数を宣言されたことになるのでしょうか。
勉強不足で、しかられそうですが、是非教えてください。

11374 戻り値があればなぁ 島尾 2001/05/28-16:24
記事番号11371へのコメント
戻り値もCのように指定できたら、関数のような物を作れるんですけど、
非常に欲しい機能ですね。

11375 Re:引数がよく解りません ONnoji 2001/05/28-17:26
記事番号11373へのコメント
今村 誠さんは No.11373「Re:引数がよく解りません」で書きました。

今村 誠さん、こんにちは。

次のように引数リスト(上)と仮引数リスト(下)と矢印で繋ぐと理解し易いかもしれません。

引数リストと仮引数リストは同数で、データ型が合っていればOKです。


手続き実行 計算する("消費税",   300,     0.05,       &結果)
            ↓      ↓       ↓         ↑
手続き定義開始¥    ↓      ↓       ↓         ↑
 計算する(文字列 &計算種別,数値 &入力1,数値 &入力2,参照 数値 &出力)
 ケース開始
    :
  ケース (&計算種別="消費税")
   &出力=&入力1×&入力2
 ケース終了
手続き定義終了


>この引数は最大で3つを代入できて、参照とすると文字でも数値でも呼び出したところに持って
>帰るのでしょうか。

この例では引数は4個です。最初から3個めまで[値呼び]です、4個めは[参照呼び]です。

>手続き定義開始 には &出力 で 呼び出しには &結果 と名前が違いますが
>同じ名前にしなくても良いのでしょうか。

(同じ名前にしないと不安になる人が多いと思いますが、)
ぜんぜん違う名前で構いませんし、むしろそれが一般的だと思います。
実は変数名が違っていても動作するところが便利な点なのですが...

>変数宣言には、&結果だけしか記述してありませんが &入力1 や &入力2 は
>自動的に変数を宣言されたことになるのでしょうか。

そのとおりです。
[手続き定義開始]の[仮引数リスト]の変数はすべて自動変数になります。

この例の[仮引数リスト]では、
変数宣言 自動,文字列{&計算種別}
変数宣言 自動,数値{&入力1,&入力2,&出力}を自動的に行っていると思っていいです。
さらに
代入 &計算種別="消費税",&入力1=300,&入力2=0.05
も自動的に行っていると思っていいです。

&出力は[参照呼び]ですから、この手続きが終了するときに、
代入 &結果=&出力
と同じことが行われると思えばいいです(ポケモンGETだぜ!ということです)。

11378 ありがとうございました 今村 誠 2001/05/28-19:58
記事番号11375へのコメント
ONnojiさんはこんにちは
大変よくわかりました。
今まで代入や無駄な変数をたくさん作ったような気がしています。
これを機会にまたプログラムを見直していきます。

>(ポケモンGETだぜ!ということです)。

引数GETだぜ!

ありがとうございました。

11379 Re:引数がよく解りません 悲しげ 2001/05/28-21:08
記事番号11375へのコメント
どもっ、ONnojiさん
私はこれまで参照変数の使い方は、実はよく判っていなかったのですが、
これでようやく具体的な用途として判ったように思います。
ありがとうございました。
11380 Re:Reすこし賢くなりました。(^^;) 悲しげ 2001/05/28-21:16
記事番号11372へのコメント
どもっ、今村さん
別にコメントしたように、私も余禄的に参照変数の使い方を知ることが
できたのでラッキーでした。

>代入を省けるような感じで理解しました。

確かにそうとも云えますが、単に代入を省くだけなら、その都度代入を
記述するのと労力的にはさほど変わりません。
私の乏しい経験では、複数の手続き実行で共用する際に、
省力化に大いに役立っている点を実感しています。
11381 皆さんありがとうございました 今村 誠 2001/05/28-22:14
記事番号11380へのコメント
やまぐっちゃんさん、ヘルプも見てみました。
一括の方が探していた答えだったようです。
島尾さん、桐だけしか知りませんのでごめんなさいコメントできません。

今からプログラムを見直して、よりよいものを作りたいと思います。
ありがとうございました。

11382 関数が定義できれば・・ 島尾 2001/05/29-08:21
記事番号11381へのコメント
>島尾さん、桐だけしか知りませんのでごめんなさいコメントできません。

たとえば呼び出し元では

&結果=#計算する("消費税",300,0.05)

で呼び出し先では

手続き終了(&結果)

で、変数結果を戻すような処理です。
関数が作れれば、という意味でした。

戻る