HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 ファイル一覧 検索 過去ログ

ツリー一括表示

Nomal 加工開始日を求めたい /ジェダイの桐 (24/04/09(Tue) 09:55) #14266
Nomal Re[1]: 加工開始日を求めたい /ONnoji (24/04/09(Tue) 14:12) #14267
  └Nomal Re[2]: 加工開始日を求めたい /ジェダイの桐 (24/04/09(Tue) 16:16) #14268 解決済み!
    └Nomal Re[3]: 加工開始日を求めたい /ONnoji (24/04/09(Tue) 17:22) #14269
      ├Nomal Re[4]: 加工開始日を求めたい /ジェダイの桐 (24/04/09(Tue) 17:41) #14270
      │└Nomal Re[5]: 加工開始日を求めたい /ONnoji (24/04/09(Tue) 17:57) #14271
      │  ├Nomal Re[6]: 加工開始日を求めたい /ジェダイの桐 (24/04/09(Tue) 18:40) #14272
      │  └Nomal Re[6]: 加工開始日を求めたい /ジェダイの桐 (24/04/10(Wed) 09:36) #14273
      │    └Nomal Re[7]: 加工開始日を求めたい /ONnoji (24/04/10(Wed) 11:37) #14274
      │      └Nomal Re[8]: 加工開始日を求めたい /ジェダイの桐 (24/04/10(Wed) 17:09) #14275
      │        └Nomal Re[9]: 加工開始日を求めたい /ONnoji (24/04/10(Wed) 17:34) #14277
      └Nomal Re[4]: 加工開始日を求めたい /ジェダイの桐 (24/04/10(Wed) 17:28) #14276
        └Nomal Re[5]: 加工開始日を求めたい /ONnoji (24/04/10(Wed) 18:05) #14278
          ├Nomal Re[6]: 加工開始日を求めたい /うにん (24/04/10(Wed) 21:09) #14279
          │└Nomal Re[7]: 加工開始日を求めたい /ONnoji (24/04/10(Wed) 21:56) #14280
          └Nomal Re[6]: 加工開始日を求めたい /ジェダイの桐 (24/04/11(Thu) 08:59) #14281
            └Nomal Re[7]: 加工開始日を求めたい /ONnoji (24/04/11(Thu) 09:46) #14282
              └Nomal Re[8]: 加工開始日を求めたい /ジェダイの桐 (24/04/11(Thu) 14:15) #14283
                └Nomal Re[9]: 加工開始日を求めたい /ONnoji (24/04/11(Thu) 17:06) #14284
                  └Nomal Re[10]: 加工開始日を求めたい /ジェダイの桐 (24/04/12(Fri) 09:31) #14285
                    └Nomal Re[11]: 加工開始日を求めたい /ONnoji (24/04/12(Fri) 12:40) #14286
                      └Nomal Re[12]: 加工開始日を求めたい /ジェタイの桐 (24/04/12(Fri) 19:07) #14288
                        └Nomal Re[13]: 加工開始日を求めたい /ONnoji (24/04/15(Mon) 16:55) #14293
                          └Nomal Re[14]: 加工開始日を求めたい /ONnoji (24/04/15(Mon) 16:56) #14294
                            ├Nomal Re[15]: 加工開始日を求めたい /ジェダイの桐 (24/04/15(Mon) 17:45) #14296
                            │└Nomal Re[16]: 加工開始日を求めたい /ONnoji (24/04/15(Mon) 17:59) #14297
                            │  ├Nomal Re[17]: 加工開始日を求めたい /ジェダイの桐 (24/04/15(Mon) 18:19) #14300
                            │  └Nomal Re[17]: 加工開始日を求めたい /ONnoji (24/04/15(Mon) 18:18) #14299
                            │    └Nomal Re[18]: 加工開始日を求めたい /ONnoji (24/04/15(Mon) 19:02) #14301
                            │      └Nomal Re[19]: 加工開始日を求めたい /ONnoji (24/04/15(Mon) 21:46) #14302
                            │        └Nomal Re[20]: 加工開始日を求めたい /ジェダイの桐 (24/04/18(Thu) 09:19) #14309
                            │          └Nomal Re[21]: 加工開始日を求めたい /ONnoji (24/04/19(Fri) 18:41) #14310
                            └Nomal Re[15]: 加工開始日を求めたい /ONnoji (24/04/15(Mon) 18:09) #14298


親記事 / ▼[ 14267 ]
■14266 / 親階層)  加工開始日を求めたい
□投稿者/ ジェダイの桐 -(2024/04/09(Tue) 09:55:19)
    おはようございます。

    桐10s Windows10 を使用しています。


    ・やりたい事
      休日を除いた工場の加工開始日を 加工日1 加工日2 に表示(代入?)したい。
      加工日1の加工日数は5日 加工日2の加工日数は7日 です。
      会社の休日カレンダーは作成済です。


    ・自分で考えてやってみた事

     休日カレンダーを作成し直前値を使って 当日日付 - 前日日付 で休日を除いた日数をカウントする。

     加工日数(数値)を入力して、当日日付 - 前日日付が -1 の時は加工日数、その他は 当日日付 - 前日日付 + 加工日数 を当日日付から引く。

     これで求める事が出来ると安易に考えていましたが、よく考えたら当日日付から加工日数を引いているので、いくら休日を除いた日数をカウントしても意味がありませんでした・・・

     手続きが使えれば実現可能ではないかと、自分なりに調べてみたのですが分かりませんでした。

    お時間がある時でいいのでご回答いただければ幸いです。

[ □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14266 ] / ▼[ 14268 ]
■14267 / 1階層)  Re[1]: 加工開始日を求めたい
□投稿者/ ONnoji -(2024/04/09(Tue) 14:12:31)
    2024/04/09(Tue) 14:39:10 編集(投稿者)

    > ・やりたい事
    >   休日を除いた工場の加工開始日を 加工日1 加工日2 に表示(代入?)したい。
    >   加工日1の加工日数は5日 加工日2の加工日数は7日 です。
    >   会社の休日カレンダーは作成済です。

    人が行う場合も、プログラムで行う場合も同じです。

    0.表(.tbx)の現在のレコード(行)から、
    1.前に5レコード戻って値を変数Aに代入
    2.前に7レコード戻って値を変数Bに代入
    3.元のレコードへ戻って、加工日1に変数Aを、加工日2に変数Bの値を格納

    という段取りになると思いますが、厄介なこと休日を除外しなければなりませんね。
                    ・・・・・・・・・・・・・・・・・・・・・・

    そこで休日を除外するには、事前に条件式: [休日] = "" で絞り込めばOKだと気が付くでしょう。

    以上を参考にして手続きを作ってくださいと言っても、慣れていないと大変でしょう。(^^ゞ

    なので、以下に加工日数.kexのサンプルを示します。

    コピペで動きますよ。

     ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

    ■加工日数.kex

    名札  メイン



    手続き定義開始 cmdテストClick( )
     変数宣言 自動,文字列{ &title = "cmdテストClick( )", &msg }
     変数宣言 自動,日時 { &加工日1, &加工日2 }
     変数宣言 自動,整数 { &multiTblNum }
     変数宣言 自動,長整数{ &recordNum }


     &msg =      "Start"
     &msg = &msg + "\n\nこれはテスト用のメッセージボックスです"
     &msg = &msg + "\n\n不要になったらコメントアウトしてください"
     メッセージボックス  &title, &msg, アイコン = i, ボタン指定 = 1, 制御文字展開 = する

     多重化
     &multiTblNum = #is表  /* 多重化した表の表番号を取得 */

     解除 *
     絞り込み [休日]{ [休日] = #u }
     ジャンプ 行番号 = 先頭
     繰り返し ( .not #eof )

      &recordNum = #行番号
      手続き実行 prc加工日探索( &加工日1, &加工日2 )
      ジャンプ 行番号 = &recordNum

      トレース出力 _[日付], "  ", _&加工日1, "  ", _&加工日2
      行訂正 [加工日1] = &加工日1, [加工日2] = &加工日2

      ジャンプ 行番号 = 次行 /* これを忘れると無限ループになります */
     繰り返し終了

     終了 表 &multiTblNum  /* 多重化した表を閉じる */
     編集表 &hwindow

     &msg =      "Finish"
     &msg = &msg + "\n\nこれはテスト用のメッセージボックスです"
     &msg = &msg + "\n\n不要になったらコメントアウトしてください"
     メッセージボックス  &title, &msg, アイコン = i, ボタン指定 = 1, 制御文字展開 = する

    手続き定義終了

    手続き定義開始 prc加工日探索( 参照 日時 &加工日1, 参照 日時 &加工日2 )
     変数宣言 自動,文字列{ &title = "prc加工日探索( )", &msg }
     変数宣言 自動,長整数{ &recordNum }

     &加工日1 = #u /* 参照引数を初期化 */
     &加工日2 = #u /* 参照引数を初期化 */

     &recordNum = #行番号
     ジャンプ 行番号 = &recordNum
     if ( &recordNum > 5 )
      ジャンプ 行番号 = -5
      &加工日1 = [日付]
     end

     ジャンプ 行番号 = &recordNum
     if ( &recordNum > 7 )
      ジャンプ 行番号 = -7
      &加工日2 = [日付]
     end

    手続き定義終了

     ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

    ■加工日数.WFX のコマンドボタン

     オブジェクト名: cmdテスト
     標題     : テスト

      機能名    機能パラメータリスト
     1 表示
     2 手続き実行  cmdテストClick
     3 なし
     4 なし

     ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

    ■トレース結果

     <参考>
     40 [トレース出力]ウィンドウと[トレース出力]コマンド|桐の釣魚大全のトップ > フォームアプリケーション教書 第2部
     http://silicon7565.html.xdomain.jp/guide/guide_Part2.htm#section40

     :[日付] : 2024年 4月 1日 0時 0分 0秒  &加工日1 :   &加工日2 :
     :[日付] : 2024年 4月 2日 0時 0分 0秒  &加工日1 :   &加工日2 :
     :[日付] : 2024年 4月 3日 0時 0分 0秒  &加工日1 :   &加工日2 :
     :[日付] : 2024年 4月 4日 0時 0分 0秒  &加工日1 :   &加工日2 :
     :[日付] : 2024年 4月 5日 0時 0分 0秒  &加工日1 :   &加工日2 :
     :[日付] : 2024年 4月 6日 0時 0分 0秒  &加工日1 : 2024年 4月 1日 0時 0分 0秒  &加工日2 :
     :[日付] : 2024年 4月 8日 0時 0分 0秒  &加工日1 : 2024年 4月 2日 0時 0分 0秒  &加工日2 :
     :[日付] : 2024年 4月 9日 0時 0分 0秒  &加工日1 : 2024年 4月 3日 0時 0分 0秒  &加工日2 : 2024年 4月 1日 0時 0分 0秒
     :[日付] : 2024年 4月10日 0時 0分 0秒  &加工日1 : 2024年 4月 4日 0時 0分 0秒  &加工日2 : 2024年 4月 2日 0時 0分 0秒
     :[日付] : 2024年 4月11日 0時 0分 0秒  &加工日1 : 2024年 4月 5日 0時 0分 0秒  &加工日2 : 2024年 4月 3日 0時 0分 0秒
     :[日付] : 2024年 4月12日 0時 0分 0秒  &加工日1 : 2024年 4月 6日 0時 0分 0秒  &加工日2 : 2024年 4月 4日 0時 0分 0秒
      :
     途中省略
      :
     :[日付] : 2025年 5月14日 0時 0分 0秒  &加工日1 : 2025年 5月 8日 0時 0分 0秒  &加工日2 : 2025年 5月 2日 0時 0分 0秒
     :[日付] : 2025年 5月15日 0時 0分 0秒  &加工日1 : 2025年 5月 9日 0時 0分 0秒  &加工日2 : 2025年 5月 7日 0時 0分 0秒
     :[日付] : 2025年 5月16日 0時 0分 0秒  &加工日1 : 2025年 5月10日 0時 0分 0秒  &加工日2 : 2025年 5月 8日 0時 0分 0秒
     :[日付] : 2025年 5月19日 0時 0分 0秒  &加工日1 : 2025年 5月12日 0時 0分 0秒  &加工日2 : 2025年 5月 9日 0時 0分 0秒
     :[日付] : 2025年 5月20日 0時 0分 0秒  &加工日1 : 2025年 5月13日 0時 0分 0秒  &加工日2 : 2025年 5月10日 0時 0分 0秒
     :[日付] : 2025年 5月21日 0時 0分 0秒  &加工日1 : 2025年 5月14日 0時 0分 0秒  &加工日2 : 2025年 5月12日 0時 0分 0秒
     :[日付] : 2025年 5月22日 0時 0分 0秒  &加工日1 : 2025年 5月15日 0時 0分 0秒  &加工日2 : 2025年 5月13日 0時 0分 0秒
     :[日付] : 2025年 5月23日 0時 0分 0秒  &加工日1 : 2025年 5月16日 0時 0分 0秒  &加工日2 : 2025年 5月14日 0時 0分 0秒
     :[日付] : 2025年 5月24日 0時 0分 0秒  &加工日1 : 2025年 5月19日 0時 0分 0秒  &加工日2 : 2025年 5月15日 0時 0分 0秒
     :[日付] : 2025年 5月26日 0時 0分 0秒  &加工日1 : 2025年 5月20日 0時 0分 0秒  &加工日2 : 2025年 5月16日 0時 0分 0秒
     :[日付] : 2025年 5月27日 0時 0分 0秒  &加工日1 : 2025年 5月21日 0時 0分 0秒  &加工日2 : 2025年 5月19日 0時 0分 0秒
     :[日付] : 2025年 5月28日 0時 0分 0秒  &加工日1 : 2025年 5月22日 0時 0分 0秒  &加工日2 : 2025年 5月20日 0時 0分 0秒
     :[日付] : 2025年 5月29日 0時 0分 0秒  &加工日1 : 2025年 5月23日 0時 0分 0秒  &加工日2 : 2025年 5月21日 0時 0分 0秒
     :[日付] : 2025年 5月30日 0時 0分 0秒  &加工日1 : 2025年 5月24日 0時 0分 0秒  &加工日2 : 2025年 5月22日 0時 0分 0秒

    p.s.

    なお、サンプルは多重化して、レコードをあちこっちに移動させていますが、これ以外にも方法があると思います。

    プログラムの作り方はいろいろありますので、サンプルはその一つの例だとお考え下さい。

    p.p.s

    サンプルはレコードをあちこっちに移動させていますので、多重化しない状態で行うと目が回ります。(@_@)

    ということで多重化をしています。

    サンプルの一般手続き:prc加工日探索( ) では参照の引数を使っています。

    これは一見すると難しく見えますが、慣れてしまえば簡単ですよ。

    難しそうだからと敬遠していると、一番美味しいところを食べそこないますよ。(^^ゞ

     27.3 引数の[値渡し]と[参照渡し]|桐の釣魚大全のトップ > フォームアプリケーション教書 第2部
     http://silicon7565.html.xdomain.jp/guide/guide_Part2.htm#section27-3




[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14267 ] / ▼[ 14269 ]
■14268 / 2階層)  Re[2]: 加工開始日を求めたい
□投稿者/ ジェダイの桐 -(2024/04/09(Tue) 16:16:45)
    2024/04/09(Tue) 16:41:09 編集(投稿者)


    ONnojiさん

    こんにちは。

    今回も、ご対応ありがとうございましたm(__)m
    やりたい事が可能になりました!

    信じて貰えないかもしれませんが、これでも2日考えたんです・・・

    #項目属性を使ったらいいのでは?
    とか、出来ないなりに変数宣言をしてみたりとか、メインで局所変数を宣言してみたりとか・・・

    そもそもが、理解できていないので何もできませんでしたが(T_T)

    分からないなりに調べたり色々挑戦した事がいつか経験として活かせたら良いなと思います。


    > という段取りになると思いますが、厄介なこと休日を除外しなければなりませんね。
    >                 ・・・・・・・・・・・・・・・・・・・・・・

    > そこで休日を除外するには、事前に条件式: [休日] = "" で絞り込めばOKだと気が付くでしょう。
    >
    > 以上を参考にして手続きを作ってくださいと言っても、慣れていないと大変でしょう。(^^ゞ

    正にこれをどうやったら解決するのか分かりませんでした(T_T)


    > なので、以下に加工日数.kexのサンプルを示します。
    >
    > コピペで動きますよ。

    ありがとうございましたm(__)m

    >
    > サンプルの一般手続き:prc加工日探索( ) では参照の引数を使っています。
    >
    > これは一見すると難しく見えますが、慣れてしまえば簡単ですよ。
    >
    > 難しそうだからと敬遠していると、一番美味しいところを食べそこないますよ。(^^ゞ
    >
    >  27.3 引数の[値渡し]と[参照渡し]|桐の釣魚大全のトップ > フォームアプリケーション教書 第2部
    >  http://silicon7565.html.xdomain.jp/guide/guide_Part2.htm#section27-3
    >
    例え難しくても、理解出来るように努力します。
    (仕事で使う上で、今回の様な事が沢山起こっています。少しずつでも桐で解決したいので、勉強して精進します!)
解決済み!
[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14268 ] / ▼[ 14270 ] ▼[ 14276 ]
■14269 / 3階層)  Re[3]: 加工開始日を求めたい
□投稿者/ ONnoji -(2024/04/09(Tue) 17:22:11)
    2024/04/11(Thu) 16:09:16 編集(投稿者)
    2024/04/10(Wed) 09:18:06 編集(投稿者)

    > #項目属性を使ったらいいのでは?
    > とか、出来ないなりに変数宣言をしてみたりとか、メインで局所変数を宣言してみたりとか・・・

    やはり、初級者は変数に慣れていないので、プログラミングの敷居は高くなりますね。

    現在、初級者向けのプログラミングに関する読み物を執筆しています。

    まだ草稿ではありますが、添付しますのでご一読ください。

    よろしければ、読後の感想をフィードバックしていただけると嬉しいです。(^^♪

    >>なので、以下に加工日数.kexのサンプルを示します。
    >>コピペで動きますよ。
    > ありがとうございましたm(__)m

    ジェダイの桐さんは、拙作: 新 フォームアプリケーション入門 §1/§2を自習されているでしょう。

    なので、コピペの形式でご案内しましたよ。

    もしも、そうでなければ、添付ファイルにするところでした。

    > 例え難しくても、理解出来るように努力します。
    > (仕事で使う上で、今回の様な事が沢山起こっています。少しずつでも桐で解決したいので、勉強して精進します!)

    桐はパーソナルなデータベースですが、アプリケーション開発のプラットフォームでもあるんですね。

    事務作業の大部分のことが、桐を使うことによって自動化出来ます。

    もちろん、桐でなんでも出来るわけではありませんので、適材適所で使うのがキモですよ。

    p.s.

    当方は、「フォーム+イベント処理」によるガントチャートの試作を行っています。

    貴殿はガントチャートにご興味ありますか????


[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14269 ] / ▼[ 14271 ]
■14270 / 4階層)  Re[4]: 加工開始日を求めたい
□投稿者/ ジェダイの桐 -(2024/04/09(Tue) 17:41:17)
    > やはり、初級者は変数に慣れていないので、プログラミングの敷居は高くなりますね。
    >
    > 現在、初級者向けのプログラミングに関する読み物を執筆しています。
    >
    > まだ草稿ではありますが、添付しますのでご一読ください。
    >
    > よろしければ、読後の感想をフィードバックしていただけると嬉しいです。(^^♪
    >

    有難うございます!
    今週中にフィードバックしますm(__)m


    > p.s.
    >
    > 当方は、「フォーム+イベント処理」によるガントチャートの試作を行っています。
    >
    > 貴殿はガントチャートにご興味ありますか????
    >
    あります!

    昨年の事です。
    23年11月〜23年12月中納期でチームで資料作りがありました。
    桐でガントチャートがあればなと思っていました。

    結局その時は、開始日と納期を日時で持った表で対応しました(T_T)

    それこそ、ガントチャートがあれば、工場の加工スケジュール管理にも使えそうだなと思います(^^)

[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14270 ] / ▼[ 14272 ] ▼[ 14273 ]
■14271 / 5階層)  Re[5]: 加工開始日を求めたい
□投稿者/ ONnoji -(2024/04/09(Tue) 17:57:41)
    2024/04/09(Tue) 18:25:09 編集(投稿者)
    2024/04/09(Tue) 18:03:06 編集(投稿者)

    >>よろしければ、読後の感想をフィードバックしていただけると嬉しいです。(^^♪
    > 今週中にフィードバックしますm(__)m

    よろしくお願いいたします。m(__)m

    >>当方は、「フォーム+イベント処理」によるガントチャートの試作を行っています。
    >>貴殿はガントチャートにご興味ありますか????
    > あります!
    > 昨年の事です。
    > 23年11月〜23年12月中納期でチームで資料作りがありました。
    > 桐でガントチャートがあればなと思っていました。
    > 結局その時は、開始日と納期を日時で持った表で対応しました(T_T)
    > それこそ、ガントチャートがあれば、工場の加工スケジュール管理にも使えそうだなと思います(^^)

    エクセルの「ガントチャートなんちゃ〜ってサンプル」等を参考にして試作しました。

    しかし、当方はガントチャートを実際に使う立場ではありませんので、

    イマイチこれで良いのか自信がありません。

    そこで、ジェダイの桐さんの知見をお借りできればと思う次第です。

    表の定義は以下です。

    項目番号 項目名  データ型
    1     カテゴリ 文字列
    2     タスク  文字列
    3     担当   文字列
    4     開始日  日時
    5     終了日  日時
    6     1     文字列
    7     2     文字列
    8     3     文字列
    9     4     文字列
    10    5     文字列
      :
     途中省略
      :
    91    86    文字列
    92    87    文字列
    93    88    文字列
    94    89    文字列
    95    90    文字列
    96    91    文字列
    97    92    文字列
    98    93    文字列
    99    カレンダ開始日  文字列
        
    イメージは添付ファイルをご覧ください。

    正直言ってまったく自信がありませんので、忌憚のないご意見をいただけるととても嬉しいです。

    よろしくお願いいたします。m(__)m

    p.s.

    今回の経験で気が付いたことがあります。

    それは、会社の休業日を休日として扱う必要があるということです。

    これは気が付きませんでした。(^^ゞ

    p.p.s.

    決まり文句の[カテゴリ][タスク][担当]ですが、これで本当にOKでしょうか???



[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14271 ] / 返信無し
■14272 / 6階層)  Re[6]: 加工開始日を求めたい
□投稿者/ ジェダイの桐 -(2024/04/09(Tue) 18:40:50)
    > エクセルの「ガントチャートなんちゃ〜ってサンプル」等を参考にして試作しました。
    >
    > しかし、当方はガントチャートを実際に使う立場ではありませんので、
    >
    > イマイチこれで良いのか自信がありません。
    >
    > そこで、ジェダイの桐さんの知見をお借りできればと思う次第です。
    >
    > 表の定義は以下です。
    >
    > 項目番号 項目名  データ型
    > 1     カテゴリ 文字列
    > 2     タスク  文字列
    > 3     担当   文字列
    > 4     開始日  日時
    > 5     終了日  日時
    > 6     1     文字列
    > 7     2     文字列
    > 8     3     文字列
    > 9     4     文字列
    > 10    5     文字列
    >   :
    >  途中省略
    >   :
    > 91    86    文字列
    > 92    87    文字列
    > 93    88    文字列
    > 94    89    文字列
    > 95    90    文字列
    > 96    91    文字列
    > 97    92    文字列
    > 98    93    文字列
    > 99    カレンダ開始日  文字列
    >     
    > イメージは添付ファイルをご覧ください。
    >
    > 正直言ってまったく自信がありませんので、忌憚のないご意見をいただけるととても嬉しいです。
    >
    > よろしくお願いいたします。m(__)m
    >

    これは かなり使えると思います!
    今、パソコンがないので 明日意見を回答させて貰います^_^
[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14271 ] / ▼[ 14274 ]
■14273 / 6階層)  Re[6]: 加工開始日を求めたい
□投稿者/ ジェダイの桐 -(2024/04/10(Wed) 09:36:12)
    2024/04/10(Wed) 09:40:38 編集(投稿者)
    2024/04/10(Wed) 09:40:06 編集(投稿者)

    ONnojiさん

    > p.p.s.
    >
    > 決まり文句の[カテゴリ][タスク][担当]ですが、これで本当にOKでしょうか???
    >
    1、

    これは オートフォームを想定しているのでしょうか??

    [カテゴリ][タスク][担当]に関して問題ないと思います。
    オートフォーム的に使用出来るのなら、

     カテゴリ → 商品名
     タスク → 工程名
     担当 → 設備名

    に置き換える事も可能なのかな と思います。

    2、

    製造で使う事を想定した時、別の表で 設備マスタ or 担当者マスタ を作成して、ID番号を入力したら表引きで 担当者を表示させる事もいいと思います。

    3、

    完了日ですが、完了日を超過した場合 対策を入力させる項目があった方が便利と面ます。
    完了予定日 と 実際の完了日 が入力出来たらなと思いました。

    4、

    カレンダー部分に色が着いて欲しいです。(サンプル画像の沖縄旅行は、スケジュールより前の 開始日 完了日なので、色が表示していないだけかもしれませんが・・・)
    また、完了日より超過 or 短縮 した場合 チャート色が変われば良いと思いました。
    カテゴリ タスク 担当者 の文字色も変われば異常を感知しやすいと思います。


    ◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇

    一個人の感想ですので、参考になれば良いのですが・・・(^^;

    いつかガントチャートがリリースされたとした場合、
    教えて頂いた 休日を除いた加工完了日と上手く組み合わせる事が出来れば
    製造スケジュールが可視化出来るなとちょっと思っちゃいました(^^♪

[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14273 ] / ▼[ 14275 ]
■14274 / 7階層)  Re[7]: 加工開始日を求めたい
□投稿者/ ONnoji -(2024/04/10(Wed) 11:37:43)
    2024/04/10(Wed) 11:44:06 編集(投稿者)

    >>決まり文句の[カテゴリ][タスク][担当]ですが、これで本当にOKでしょうか???
    > これは オートフォームを想定しているのでしょうか??
    >
    > [カテゴリ][タスク][担当]に関して問題ないと思います。
    > オートフォーム的に使用出来るのなら、
    >
    >  カテゴリ → 商品名
    >  タスク → 工程名
    >  担当 → 設備名

    オートフォームでは無理なので固定になります。

    画像拝見しました。なるほど!、ですね。

    【改修前】 [カテゴリ][タスク]       [担当][開始日][終了日]

    【改修後】 [カテゴリ][タスク1][タスク2][担当][開始日][終了日][超過完了予定日][完了日][超過対策][備考]

    このように改修しようと思いました。非常に参考になりました。

    ありがとうございました。m(__)m

    > 製造で使う事を想定した時、別の表で 設備マスタ or 担当者マスタ を作成して、ID番号を入力したら表引きで 担当者を表示させる事もいいと思います。

    表引きは表(.tbx)側で設定すれば、フォームでも可能なので特にフォームでは何もしないつもりです。

    > 完了日ですが、完了日を超過した場合 対策を入力させる項目があった方が便利と面ます。
    > 完了予定日 と 実際の完了日 が入力出来たらなと思いました。

    なるほど、実用的ですね。

    > カレンダー部分に色が着いて欲しいです。(サンプル画像の沖縄旅行は、スケジュールより前の 開始日 完了日なので、色が表示していないだけかもしれませんが・・・)
    > また、完了日より超過 or 短縮 した場合 チャート色が変われば良いと思いました。
    > カテゴリ タスク 担当者 の文字色も変われば異常を感知しやすいと思います。

    現状では、*マークが連続表示されるようになっていますが、背景色を変えるだけにも対応できると思います。

    ただし、PCが遅いと表示が鈍重になるのが難点ですが・・・※特に当方のマシンはチープなスペックなものでして(^^ゞ

    > 一個人の感想ですので、参考になれば良いのですが・・・(^^;
    > いつかガントチャートがリリースされたとした場合、
    > 教えて頂いた 休日を除いた加工完了日と上手く組み合わせる事が出来れば
    > 製造スケジュールが可視化出来るなとちょっと思っちゃいました(^^♪

    試行錯誤を重ねてプロトタイプが出来ていますが、完成の目途はまだたっていません。

    p.s.

    拙作:整形ユーティリティでは、テキストファイルに疑似手続きを作成することでWBSが作れますよ。

    ※Work Breakdown Structure (WBS、作業分解構造)

    例えば、以下のような形式のものです。

    1 IPS+INF

    ├ 1.1 IPS_Framework
    │ │
    │ └ 1.1.1 SPN_Framework

    ├ 1.2 INF_Framework

    ├ 1.3 VK_Framework

    └ 1.4 MNU_Framework

    このようなWBSが作れるので、ガントチャートもと欲張っているのでありました。(^^ゞ



[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14274 ] / ▼[ 14277 ]
■14275 / 8階層)  Re[8]: 加工開始日を求めたい
□投稿者/ ジェダイの桐 -(2024/04/10(Wed) 17:09:27)
    > p.s.
    >
    > 拙作:整形ユーティリティでは、テキストファイルに疑似手続きを作成することでWBSが作れますよ。
    >
    > ※Work Breakdown Structure (WBS、作業分解構造)
    >
    > 例えば、以下のような形式のものです。
    >
    > 1 IPS+INF
    > │
    > ├ 1.1 IPS_Framework
    > │ │
    > │ └ 1.1.1 SPN_Framework
    > │
    > ├ 1.2 INF_Framework
    > │
    > ├ 1.3 VK_Framework
    > │
    > └ 1.4 MNU_Framework
    >
    > このようなWBSが作れるので、ガントチャートもと欲張っているのでありました。(^^ゞ
    >

    ONnojiさん

    バイタリティが凄いですね!

    桐で使えるガントチャートで最大に良いと感じるのは、
    スケジュール管理が出来る事も重要ですが、データベースとして蓄積出来る事だと思いました。


    例えば、

    ガントチャートで可視化して量産品生産スケジュール管理をすると共に、
    1年程度データを蓄積する。

    蓄積したデータを分析した時、いつも超過している工程があったとしら改善策を考える事が出来ます。

    また、備考欄 を 難易度欄に置き換えて使用した場合、初期設定が高難度だとしても、実際の完了日が予定完了日より常に短縮して終了している場合、

    難易度設定の見込みが甘かった or 人材が育って来ている 等 検証する事も出来ると思います。


    エクセルでも、書き込みした事が対応可能なのかもしれませんが、やっぱり餅は餅屋じゃないですが、データベースソフトで分析できた方が良いと思います(^^)/



[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14275 ] / 返信無し
■14277 / 9階層)  Re[9]: 加工開始日を求めたい
□投稿者/ ONnoji -(2024/04/10(Wed) 17:34:12)
    2024/04/10(Wed) 19:00:39 編集(投稿者)

    > 桐で使えるガントチャートで最大に良いと感じるのは、
    > スケジュール管理が出来る事も重要ですが、データベースとして蓄積出来る事だと思いました。
    > 例えば、
    > ガントチャートで可視化して量産品生産スケジュール管理をすると共に、
    > 1年程度データを蓄積する。
    > 蓄積したデータを分析した時、いつも超過している工程があったとしら改善策を考える事が出来ます。
    > また、備考欄 を 難易度欄に置き換えて使用した場合、初期設定が高難度だとしても、実際の完了日が予定完了日より常に短縮して終了している場合、
    > 難易度設定の見込みが甘かった or 人材が育って来ている 等 検証する事も出来ると思います。
    > エクセルでも、書き込みした事が対応可能なのかもしれませんが、やっぱり餅は餅屋じゃないですが、データベースソフトで分析できた方が良いと思います(^^)/

    そうですね。

    データベースの方がワークシートよりも保管しやすいですよね。

    今回のガントチャート用の表(.tbl)の定義は次の内容です。

    番号  項目名  データ型
    1    カテゴリ 文字列
    2    タスク1 文字列
    3    タスク2 文字列
    4    担当   文字列
    5    開始日  日時
    6    終了日  日時
    7    超過完了予定日  日時
    8    完了日  日時
    9    超過対策 文字列
    10   備考   文字列
    11   1     文字列
    12   2     文字列
    13   3     字列
    14   4     文字列
      :
     途中省略
      :

    96   86    文字列
    97   87    文字列
    98   88    文字列
    99   89    文字列
    100   90    文字列
    101   カレンダ開始日  文字列
        
    ここで重要なのは、

    1    カテゴリ 文字列
    2    タスク1 文字列
    3    タスク2 文字列
    4    担当   文字列
    5    開始日  日時
    6    終了日  日時
    7    超過完了予定日  日時
    8    完了日  日時
    9    超過対策 文字列
    10   備考   文字列

    の項目だけなんですよね。

    残りの項目は、単に視覚化するだけの項目なんですね。

    拙作では、任意の日付からカレンダを生成して、90日分の視覚化が可能というわけです。

    ちなみにカレンダ機能は、先日アップデートした INF_DatePicker のエンジンを流用しています。(*^^)v


[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14269 ] / ▼[ 14278 ]
■14276 / 4階層)  Re[4]: 加工開始日を求めたい
□投稿者/ ジェダイの桐 -(2024/04/10(Wed) 17:28:47)
    ONnojiさん

    プログラミングテキスト非常に読みやすいです。

    >プログラミングの書籍などでは変数とは[名前が付いた箱]といった比喩(例え話)が見受けられますが、

    >このような比喩(例え話)は頭の中が混乱するだけなので忘れてください。


    ネットで変数の事を調べると必ずと言って良いほど みかん箱 の話が出てきました。
    確かに みかん箱 で例える必要もないですね。


    >変数宣言 局所,文字列{ &variableName }


    いつも疑問に感じる事が、(桐に関しては?)変数名は漢字でもOKなはずなのに
    何故英語が書くのかが分からないのです。

    この英語は 任意のキーワード なのか プログラムの世界では一般的なキーワード なのか??

    任意だとしら、なにか命名法則があるのか??

    初心者目線の疑問でした。

    知れて良かった事は 代入 を省略して記入してあると言う事です。
    これを 知っているか いないかは 個人的にはかなり大きいと思います。


    代入しているんだろうな と想像してプログラムを見るより、代入を省略しているけど代入していると確信してプログラムを見る方が理解度が高くなるからです。


    初心者向けのプログラミングの読み物が完成してHPにアップされた暁には、必ず読ませて頂きます(^^ゞ

[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14276 ] / ▼[ 14279 ] ▼[ 14281 ]
■14278 / 5階層)  Re[5]: 加工開始日を求めたい
□投稿者/ ONnoji -(2024/04/10(Wed) 18:05:28)
    2024/04/10(Wed) 22:56:23 編集(投稿者)

    > プログラミングテキスト非常に読みやすいです。
    > >プログラミングの書籍などでは変数とは[名前が付いた箱]といった比喩(例え話)が見受けられますが、
    > >このような比喩(例え話)は頭の中が混乱するだけなので忘れてください。
    >
    > ネットで変数の事を調べると必ずと言って良いほど みかん箱 の話が出てきました。
    > 確かに みかん箱 で例える必要もないですね。

    みかん箱じゃ余計に分からなくなりますよね。

    下手くそなテクニカルライターが始めた例え話だと思いますが、ネットで蔓延していますよね。

    その他に、桐ではもちろんオブジェクト指向プログラミングは出来ないのですが、

    Javaなどのオブジェクト指向プログラミング言語でも、ものすごい例え話を並べて読者を煙に巻いています。

    あまりにも変な比喩(例え話)が世の中に蔓延したので、とうとう「なんでもオブジェクト」だと言い出す人まで現れました。

    こうなると、ChatGPT に勝るとも劣らないデタラメな議論が巻き起こったりしますね。

    レストランで出されたメニューに書かれている料理名を見て、これを「オブジェクト指向メニュー」だと誰も言わないでしょう。

    噴飯ものですよね。

    まったく呆れ果てたものですねぇ〜。アハハha

    > >変数宣言 局所,文字列{ &variableName }
    > いつも疑問に感じる事が、(桐に関しては?)変数名は漢字でもOKなはずなのに
    > 何故英語が書くのかが分からないのです。

    例えば #文字列関数のヘルプには次のようなシンタックス(文法)が掲載されています。

     #文字列( 【 num | num , n | tmst | itvl 】 )

    このように、桐のヘルプでも英語的なキーワードがたくさんあります。

    コンピュータの世界では、英語圏が中心で発達してきたんですよね。

    だから、英語や英語的なキーワードがどうしても多くなります。

    これは仕方ないと思って慣れてください。

    余談ながら、かつての日本IBMの5550というPCでは、キーボードとは呼ばずに鍵盤装置と呼称していたんですよ。

    日本IBMが頑張ってなんでも日本語で表記していたのですが、さすがにマウスは鼠とは呼ばなかったと記憶しています。(^^ゞ

    > この英語は 任意のキーワード なのか プログラムの世界では一般的なキーワード なのか??
    > 任意だとしら、なにか命名法則があるのか??
    > 初心者目線の疑問でした。

    私( ONnoji )の著作では非常に英語風の変数名が多いと思います。

    これは私( ONnoji )が漢字が使えない8ビットPC(当時マイコンと呼んでいた)からプログラミングをしていたからです。

    また桐ver.2 と出会う前までは、dBASE2/3/3+ といったデータベースでプログラミングしていましたが、

    やはり日本語の変数は誤動作の元になることがあるので、日本語は極力使わないようにしていましたよ。

    桐では日本語の変数名でも何の問題はありませんが、これは桐が最初から日本語対応だったからですよ。

    Windows が発売されたころのオフィスでも日本語の変数名は忌避されていたと思います。

    もちろん、今ではOKでしょうけれど・・・※怖さを知っている人はやはり避けますけどね。アハハha

    > 知れて良かった事は 代入 を省略して記入してあると言う事です。
    > これを 知っているか いないかは 個人的にはかなり大きいと思います。

    桐の[代入]コマンドや、VB/VBAの[Let] ステートメントは、まず、いや絶対に書きませんね。

    でも、入門書やヘルプでは、その事を教えてくれないようですね。

    > 代入しているんだろうな と想像してプログラムを見るより、代入を省略しているけど代入していると確信してプログラムを見る方が理解度が高くなるからです。
    > 初心者向けのプログラミングの読み物が完成してHPにアップされた暁には、必ず読ませて頂きます(^^ゞ

    だから、数学の等式と勘違いして頭の中が混乱する人が多いんですよ。アハハha。

    テキストはごく最初の部分だけを添付しました。

    現在鋭意執筆中ですので、完成したら拙作HPに掲載しますのでお楽しみにしてください。

    p.s.

    > この英語は 任意のキーワード なのか プログラムの世界では一般的なキーワード なのか??

    桐の関数に #文字列、#条件選択 がありますね。

    しかし、私( ONnoji )は、それぞれの関数の別名 #str #cond を好んで使うわけです。

    また、ちぇっ!また英語かぁ〜という声が聞こえてきそうですが・・・(^^ゞ

    実は、これらの別名は、多くのソフトウェアでも一般的なものなのです。

    思い付くまま列挙すると

    #文字列 → #str 意味:string 文字列

    #部分列 → #sstr 意味:sub string 部分列

    #条件選択 → #cond 意味:条件

    #終端行 → #eof 意味:End Of File ファイルの終わり

    #文字置換 → #s 意味:stuff の s だと思われます 詰め込む ※アルファベット1文字の関数名は一般的ではありません。

    他にもあると思いますが・・・この辺で(^^ゞ

    なお、

    #連結 → #cat は 語源として catalog だっと思いますが今ではこの関数を使う人はまず居ないと思います。

    なぜならば #cat( [名前], "様" ) は、関数を使わずに [名前] + "様" という式で書けるからです。

    余談ついでに(^^ゞ

     #計算 の別名は #PROGN。
     この別名って、プログラミング言語 Common Lisp の progn関数からきているようですね。
     prog1 prog2 というのもあるから、 n は n番め=最後という意味なのでしょうかね。
     そういえば、K3殿は Lisp の開発もしてましたっけ。
     ちなみに、#SETQ も Lisp 由来かもしれない。

     #TRIM や #STR など、桐の関数の別名はプログラミング言語でお馴染みのものから来ていますね。
     私は dBASE言語を使っていたので、桐のコマンド・関数の別名の大部分の見当がすぐに付きました。
     なお、[コマンド]コマンドの別名 eval はエバリュエーション(Evaluation)でしょうね。
     eval をイーバルと読む技術者も多いようですね。

[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14278 ] / ▼[ 14280 ]
■14279 / 6階層)  Re[6]: 加工開始日を求めたい
□投稿者/ うにん -(2024/04/10(Wed) 21:09:31)
    > 桐では日本語の変数名でも何の問題はありませんが、これは桐が最初から日本語対応だったからですよ。
    >
    > Windows が発売されたころのオフィスでも日本語の変数名は忌避されていたと思います。
    >
    > もちろん、今ではOKでしょうけれど・・・※怖さを知っている人はやはり避けますけどね。アハハha

    WindowsXPだったかなあ、ユーザ名を日本語にすると、何かとトラブルのもとになってました。(インストール時にIMEが使えるので日本語で入れてしまう人が多数いた)

    最近でも、FileMakerというデータベースソフトで、ファイル名を日本語にするとサーバからダウンロードできなくなるトラブルとかありました。
[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14279 ] / 返信無し
■14280 / 7階層)  Re[7]: 加工開始日を求めたい
□投稿者/ ONnoji -(2024/04/10(Wed) 21:56:11)
    > WindowsXPだったかなあ、ユーザ名を日本語にすると、何かとトラブルのもとになってました。(インストール時にIMEが使えるので日本語で入れてしまう人が多数いた)
    > 最近でも、FileMakerというデータベースソフトで、ファイル名を日本語にするとサーバからダウンロードできなくなるトラブルとかありました。

    桐のユーザは恐怖体験が無いんですよね。アハハha

    普通のソフトならデータベースのフィールド名だって漢字を使いませんよね。オッカナクッテね(^^ゞ

    ファイル名だって、変数名だって、etc. でもこれは元が舶来品のソフトウェアの場合ですね。

[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14278 ] / ▼[ 14282 ]
■14281 / 6階層)  Re[6]: 加工開始日を求めたい
□投稿者/ ジェダイの桐 -(2024/04/11(Thu) 08:59:44)
    ONnojiさん


    > やはり日本語の変数は誤動作の元になることがあるので、日本語は極力使わないようにしていましたよ。
    >
    > 桐では日本語の変数名でも何の問題はありませんが、これは桐が最初から日本語対応だったからですよ。
    >
    > Windows が発売されたころのオフィスでも日本語の変数名は忌避されていたと思います。
    >
    > もちろん、今ではOKでしょうけれど・・・※怖さを知っている人はやはり避けますけどね。アハハha
    >


    なるほど。
    そう言う歴史があるんですね!

    そのような歴史(過去は漢字が使えなかった。そもそも日本語を想定していないので、日本語を使うとトラブルが起こる可能性がある。)があると言う前段をしっていれば、すんなり英語が入ってきます。

    うにんさん と  ONnojiさんのコメントで、よりリアルに知る事が出来ました(^^♪



    >>代入しているんだろうな と想像してプログラムを見るより、代入を省略しているけど代入していると確信してプログラムを見る方が理解度が高くなるからです。
    >>初心者向けのプログラミングの読み物が完成してHPにアップされた暁には、必ず読ませて頂きます(^^ゞ
    >
    > だから、数学の等式と勘違いして頭の中が混乱する人が多いんですよ。アハハha。
    >


    =は等式じゃなく 代入 していると言う事ですもんね。
    知識が無ければ数学に感じてしまいます・・・(私も 明らかに代入に意味だなと読めない物以外は 数式 だと思っていました・・・)


    >
    > #文字列 → #str 意味:string 文字列
    >
    > #部分列 → #sstr 意味:sub string 部分列
    >
    > #条件選択 → #cond 意味:条件
    >
    > #終端行 → #eof 意味:End Of File ファイルの終わり
    >
    > #文字置換 → #s 意味:stuff の s だと思われます 詰め込む ※アルファベット1文字の関数名は一般的ではありません。
    >
    > 他にもあると思いますが・・・この辺で(^^ゞ
    >
    > なお、
    >
    > #連結 → #cat は 語源として catalog だっと思いますが今ではこの関数を使う人はまず居ないと思います。
    >
    > なぜならば #cat( [名前], "様" ) は、関数を使わずに [名前] + "様" という式で書けるからです。
    >
    > 余談ついでに(^^ゞ
    >
    >  #計算 の別名は #PROGN。
    >  この別名って、プログラミング言語 Common Lisp の progn関数からきているようですね。
    >  prog1 prog2 というのもあるから、 n は n番め=最後という意味なのでしょうかね。
    >  そういえば、K3殿は Lisp の開発もしてましたっけ。
    >  ちなみに、#SETQ も Lisp 由来かもしれない。
    >
    >  #TRIM や #STR など、桐の関数の別名はプログラミング言語でお馴染みのものから来ていますね。
    >  私は dBASE言語を使っていたので、桐のコマンド・関数の別名の大部分の見当がすぐに付きました。
    >  なお、[コマンド]コマンドの別名 eval はエバリュエーション(Evaluation)でしょうね。
    >  eval をイーバルと読む技術者も多いようですね。


    この解説はかなり助かますm(__)m
    財産にさせて頂きます!

    ◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇

    ここで一つ疑問があります。
    今回作成して頂いたプログラムの変数名の中に


    変数宣言 自動,日時 { &加工日1, &加工日2 }


    があります。
    コメントを頂いた流れで言えば

     &加工日1 → &dom1 (date of manufacture)
     &加工日2 → &dom2

    と言う変数名になった方が自然な印象です。

    表に定義のある項目名を変数名にする時は、表の言葉に合わせると言う事なのでしょうか??


    う〜ん。
    プログラムは奥が深いですね(^^ゞ

[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14281 ] / ▼[ 14283 ]
■14282 / 7階層)  Re[7]: 加工開始日を求めたい
□投稿者/ ONnoji -(2024/04/11(Thu) 09:46:45)
    2024/04/11(Thu) 11:07:21 編集(投稿者)

    > =は等式じゃなく 代入 していると言う事ですもんね。
    > 知識が無ければ数学に感じてしまいます・・・(私も 明らかに代入に意味だなと読めない物以外は 数式 だと思っていました・・・)

    初級者の最初の挫折がこの部分である人って案外と多いと思いますね。

    > ここで一つ疑問があります。
    > 今回作成して頂いたプログラムの変数名の中に
    > 変数宣言 自動,日時 { &加工日1, &加工日2 }
    > があります。
    > コメントを頂いた流れで言えば
    >  &加工日1 → &dom1 (date of manufacture)
    >  &加工日2 → &dom2
    > と言う変数名になった方が自然な印象です。
    > 表に定義のある項目名を変数名にする時は、表の言葉に合わせると言う事なのでしょうか??

    流れとしては次のようになりますね。

     手続き定義開始 cmdテストClick( )
      変数宣言 自動,文字列{ &title = "cmdテストClick( )", &msg }
      変数宣言 自動,日時 { &加工日1, &加工日2 }
       :
       :
      行訂正 [加工日1] = &加工日1, [加工日2] = &加工日2
       :
       :
     手続き定義終了

    ということで、項目[加工日1]に対応する変数が &加工日1 で、項目[加工日2]に対応する変数が &加工日2 という事です。

    これを

      行訂正 [加工日1] = &dom1, [加工日2] = &dom2

    と書いてしまうと、もちろん動きますが・・・(^^ゞ

    一番の問題は、後で読み返す際に直感的に分かりにくいんですね。
           ・・・・・・・・・・・・・・・・・・

      行訂正 [加工日1] = &加工日1, [加工日2] = &加工日2

    としていれば、一目瞭然です。※最小限の思考で済みますから・・・(^^ゞ

    それに項目名と変数名が同じならば、イベント処理を検索する時に都合がいいでしょう。※後々のことを考えましょう。アハハha

    添付のテキストには

    > 桐のようなデータベースソフトでは、データベースで指定できる[項目のデータ型]と[変数のデータ型]は1対1で対応するものなのです。
    > なので、任意のレコード(行)の[項目の【値】]を任意の名前の[変数の【値】]として入れることが出来ます。

    という文言があると思います。

    変数の最も大事な目的は、データベースの項目の値の一時的な格納先(バッファ)ということです。

    そして、もう一つの変数の目的は、プログラムの流れを制御することです。

    例えば、変数 &recordNum は、プログラムの流れの選択制御に使われています。

     手続き定義開始 prc加工日探索( 参照 日時 &加工日1, 参照 日時 &加工日2 )
      変数宣言 自動,文字列{ &title = "prc加工日探索( )", &msg }
      変数宣言 自動,長整数{ &recordNum }
       :
       :
      &recordNum = #行番号
      ジャンプ 行番号 = &recordNum
      if ( &recordNum > 5 )
       ジャンプ 行番号 = -5
       &加工日1 = [日付]
      end
       :
       :
     手続き定義終了

    話が戻りますが・・・

    >  &加工日1 → &dom1 (date of manufacture)
    >  &加工日2 → &dom2
    > と言う変数名になった方が自然な印象です。

    &dom1 &dom2 といった短い英語風の変数名は、意味が明瞭ならばOKですが、この場合には好ましくないでしょう。

    &dateOfManufacture1 &dateOfManufacture2 の方が全然素直です。
                           ・・・・

    ネットをご覧になると、変数名がアルファベット3文字というのが多いと気が付くでしょう。

    これも昔のPCのレガシー(遺産)なんですよ。

    昔のPCのメモリーが少なかったので、変数名を長くできなかったんですよ。

    それと、暗号のような変数を使っていても本人が判れば良しだったり、開発チームで暗号を共有していたりしたのです。

    そもそも、ソフトウェアに添付されているマニュアルのプログラミング例が暗号のような変数名だったのですから・・・

    桐のプログラミング例も同じく、妙に変数名を短くしているケースを見ると思いますが、これはDOS桐の文字数制限の影響でしょうね。

    いずれにしても、短い変数名を良しとするのはレガシーです。MS-DOS時代は何かと窮屈だったんですよ。アハハha

    かといって長すぎるのも読み下しが大変ですから、程々にしておくのが肝心だと思いますよ。

    > う〜ん。
    > プログラムは奥が深いですね(^^ゞ

    問題意識を持っていれば大丈夫です。

    後は経験を積んで慣れるしかありません。ガーン (*^^)ok

    p.s.

    私( ONnoji )の場合には、項目名が基本的に漢字なので、対応する変数名も漢字になります。

    そして、それ以外の変数名は基本的に英語または英語風です。
                 ・・・・

    なお、アルファベットは小文字を基本とします。

    ソフトウェアによっては大文字を基本とするものもあります。

    例えば、VB/VBAは大文字が基本だったと思います。※歴史的な経緯がありますけれど・・・

    しかし、それ以外のソフトウェアでは小文字を基本とするものが多いです。

    ちなみに、私( ONnoji )の場合には、キャメルケースを常用しています。

    こちら
     ↓
     キャメルケース フリー百科事典『ウィキペディア(Wikipedia)』
     https://ja.wikipedia.org/wiki/%E3%82%AD%E3%83%A3%E3%83%A1%E3%83%AB%E3%82%B1%E3%83%BC%E3%82%B9

     名称                       表記例     備考
     ローワーキャメルケース、または単にキャメルケース getInputReader 複合語の先頭を、小文字で書き始める。

[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14282 ] / ▼[ 14284 ]
■14283 / 8階層)  Re[8]: 加工開始日を求めたい
□投稿者/ ジェダイの桐 -(2024/04/11(Thu) 14:15:11)
    ONnojiさん


    > ということで、項目[加工日1]に対応する変数が &加工日1 で、項目[加工日2]に対応する変数が &加工日2 という事です。
    >
    > これを
    >
    >   行訂正 [加工日1] = &dom1, [加工日2] = &dom2
    >
    > と書いてしまうと、もちろん動きますが・・・(^^ゞ
    >
    > 一番の問題は、後で読み返す際に直感的に分かりにくいんですね。
    >        ・・・・・・・・・・・・・・・・・・
    >
    >   行訂正 [加工日1] = &加工日1, [加工日2] = &加工日2
    >
    > としていれば、一目瞭然です。※最小限の思考で済みますから・・・(^^ゞ
    >
    > それに項目名と変数名が同じならば、イベント処理を検索する時に都合がいいでしょう。※後々のことを考えましょう。アハハha


    解説有難うございますm(__)m
    疑問が解決しました!!
    分かりやすさは重要ですよね(^^♪


    > &dom1 &dom2 といった短い英語風の変数名は、意味が明瞭ならばOKですが、この場合には好ましくないでしょう。
    >
    > &dateOfManufacture1 &dateOfManufacture2 の方が全然素直です。
    >                        ・・・・
    >
    > ネットをご覧になると、変数名がアルファベット3文字というのが多いと気が付くでしょう。
    >
    > これも昔のPCのレガシー(遺産)なんですよ。
    >
    > 昔のPCのメモリーが少なかったので、変数名を長くできなかったんですよ。
    >
    > それと、暗号のような変数を使っていても本人が判れば良しだったり、開発チームで暗号を共有していたりしたのです。
    >
    > そもそも、ソフトウェアに添付されているマニュアルのプログラミング例が暗号のような変数名だったのですから・・・
    >
    > 桐のプログラミング例も同じく、妙に変数名を短くしているケースを見ると思いますが、これはDOS桐の文字数制限の影響でしょうね。
    >
    > いずれにしても、短い変数名を良しとするのはレガシーです。MS-DOS時代は何かと窮屈だったんですよ。アハハha
    >
    > かといって長すぎるのも読み下しが大変ですから、程々にしておくのが肝心だと思いますよ。


    こちらもありがとうございます。
    決行 3文字 のアルファベットが出てくる印象なので、そう言うものなのかなと思ってしまいました。
    やっぱり、経緯を知る事は勉強する上で理解度に差が出ると思うので教えて頂いて良かったです!


[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14283 ] / ▼[ 14285 ]
■14284 / 9階層)  Re[9]: 加工開始日を求めたい
□投稿者/ ONnoji -(2024/04/11(Thu) 17:06:10)
    2024/04/11(Thu) 17:50:49 編集(投稿者)

    蛇足を少々・・・

    > いずれにしても、短い変数名を良しとするのはレガシーです。MS-DOS時代は何かと窮屈だったんですよ。アハハha
    > かといって長すぎるのも読み下しが大変ですから、程々にしておくのが肝心だと思いますよ。

    いくつかの例外がありますの・・・

    それは「遠い昔、遥か彼方の銀河系でコンピュータ言語が発明された時以来」の習慣です。

    次の1文字の変数名は普通に使いますよ。

    それは、アイ、ジェー、ケー つまり i j k です。

    桐の場合には、変数を直接(リテラル)記述する場合には、接頭辞のアンパサンド記号(&)を付けますので

    つまり、&i &j &k ですが、これはプログラミングに慣れている人には違和感がありません。

    これらの変数は整数のカウンタとして使うんですよ。

    すなわち、&i が 1、&i が 2、&i が 3、… &i が n のように値が増加していくケースです。

    これは「ヒツジが一匹、ヒツジが二匹・・・」というやつです。(^^ゞ

    例えば、

     &step = 1
     &loop = 10
     繰り返し &i = 1, &loop, &step

      ** &i の値が、1から10になるまで1(&step)増分して繰り返す

     繰り返しい終了

    ちなみに、&j &k は、さらに繰り返しが入れ子になる場合に使いますね。
         ・・・・・・・・・・・・・・・・・・・・・・・・・・

    1文字の変数名ではありませんが、私( ONoji )はカウンタとして &cnt をよく使います。

    本当は &count でも良いのですが、やはり3文字のレガシーで &cnt です。アハハha (^^ゞ

    例えば、

     &cnt = 0
     繰り返し ( &cnt <= 10 )

      ** &i の値が、1から10になるまで1増分して繰り返す

      &cnt = &cnt + 1
     繰り返し終了

    とかですね。

    ところで、&cnt = &cnt + 1 もヘンテコに見えるでしょう。

    でもこれは、&cntに1加算した結果を &cnt 自身に代入するという意味です。

    つまり、加算(インクリメント)のコマンドになるわけです。

    ちなみに、桐以外のコンピュータ言語でも基本的に同じですが、

     i = i + 1 と書かずに i++ と書く言語が多いですよ。

    もしも、i++ なんて見るとますます頭の中が混乱しますよね。

    でもね、プログラマーは i++ を i = i + 1 とは絶対に書かないんですよ。アハハha

    p.s.

    [繰り返し ... 繰り返し終了]という繰り返しコマンドはワカリニクイでしょう。

    初級者が最も苦手とするのが、この繰り返し処理なんですよ。

    そうそう、サンプルにも繰り返し処理がありましたね。

      :
      :
     ジャンプ 行番号 = 先頭
     繰り返し ( .not #eof )

       :
      分かり易さのために途中のコマンドを省略しています
       :

      ジャンプ 行番号 = 次行 /* これを忘れると無限ループになります */
     繰り返し終了
      :
      :


     Did you understand? (^^)ok

[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14284 ] / ▼[ 14286 ]
■14285 / 10階層)  Re[10]: 加工開始日を求めたい
□投稿者/ ジェダイの桐 -(2024/04/12(Fri) 09:31:19)
    ONnojiさん


    > 次の1文字の変数名は普通に使いますよ。
    >
    > それは、アイ、ジェー、ケー つまり i j k です。
    >
    > 桐の場合には、変数を直接(リテラル)記述する場合には、接頭辞のアンパサンド記号(&)を付けますので
    >
    > つまり、&i &j &k ですが、これはプログラミングに慣れている人には違和感がありません。


    これば疑問に思っていました。
    ネットでプログラムの事を見ている時に i って頻繁に目にしました。

    これも過去からの流れなんですね!

    但し、 j と k は初めて知りました。



    > 本当は &count でも良いのですが、やはり3文字のレガシーで &cnt です。アハハha (^^ゞ


    初級者目線(私だけかもしませんが・・・)で言えば、正にこういう事がしりたかったのです。

    &count でも良い けど 3文字のレガシーで &cnt

    なんでもない事かもしれないですが、変数名は自由にしていいのに
    何故英語? 何故3文字? (?_?)

    過去からの流れで 英語 を使用した方がトラブル回避になる、項目に代入する時は 見た目に分かりやすい方が良い。(結果 漢字を使用する or 一般的に理解出来れば 3文字英語 そうでなければ 素直に英単語 にした方が分かりりやすい)

    この知識が前段で無いと、プログラミングの門が狭く感じてしまうのです・・・(^^;


    > ところで、&cnt = &cnt + 1 もヘンテコに見えるでしょう。


    確かに見えましたが、
    ↓の開設のおかげで

    >
    > でもこれは、&cntに1加算した結果を &cnt 自身に代入するという意味です。
    >
    > つまり、加算(インクリメント)のコマンドになるわけです。

    &msg =      "Start"
     &msg = &msg + "\n\nこれはテスト用のメッセージボックスです"
     &msg = &msg + "\n\n不要になったらコメントアウトしてください"
     メッセージボックス  &title, &msg, アイコン = i, ボタン指定 = 1, 制御文字展開 = する

    &msg = &msg + "\n\n文字列"
    の意味が非常に良く分かりましたm(__)m

    > p.s.
    >
    > [繰り返し ... 繰り返し終了]という繰り返しコマンドはワカリニクイでしょう。
    >
    > 初級者が最も苦手とするのが、この繰り返し処理なんですよ。
    >
    > そうそう、サンプルにも繰り返し処理がありましたね。
    >
    >   :
    >   :
    >  ジャンプ 行番号 = 先頭
    >  繰り返し ( .not #eof )
    >
    >    :
    >   分かり易さのために途中のコマンドを省略しています
    >    :
    >
    >   ジャンプ 行番号 = 次行 /* これを忘れると無限ループになります */
    >  繰り返し終了
    >   :
    >   :


    自分で完璧に作れるかは怪しいですが、
    私の理解が正しければ・・・

    ジャンプ 行番号 = 先頭 ←最初は先頭行にジャンプする
     繰り返し ( .not #eof ) ←このプログラム以下から 最終行 になるまで繰り返す


    やりたい事の命令


    ジャンプ 行番号 = 次行 ←これは ジャンプ 行番号 = 先頭 に対して 次行なので 2行目 最終行になるまで加算させる。

    だから注釈の様に ジャンプ 行番号 = 次行 を忘れると 永遠に 先頭行 を繰り返す事になる

    という事だと認識していますm(__)m


    ◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇

    昨日プログラムを見ていて気付いた事があります。


    多重化
     &multiTblNum = #is表  /* 多重化した表の表番号を取得 */



    行訂正 [加工日1] = &加工日1, [加工日2] = &加工日2



    終了 表 &multiTblNum  /* 多重化した表を閉じる */
     編集表 &hwindow


    これを見ると、 多重化 した表に 求めたいデータを最終行まで代入していると理解しています。

    最終行までいって繰り返しが終了しらたら 多重化 した表を閉じて、編集対象表に戻る。

    これ自体は理解の通りであれば、納得出来るのですが
    代入している表が 多重化 した表です。

    それが何故編集対象表に求めた結果があるのか??

    これは、 多重化した表 と 編集対象表は リンクしていると言う事なのでしょうか??

    ◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇


    このツリーは本当に私の財産です。
    初級者に対しての講義と言っても過言じゃないと思っています。

    本当に助かっています!

    ありがとうございますm(__)m


[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14285 ] / ▼[ 14288 ]
■14286 / 11階層)  Re[11]: 加工開始日を求めたい
□投稿者/ ONnoji -(2024/04/12(Fri) 12:40:45)
    2024/04/12(Fri) 14:05:39 編集(投稿者)
    2024/04/12(Fri) 13:10:32 編集(投稿者)

    >>つまり、&i &j &k ですが、これはプログラミングに慣れている人には違和感がありません。
    > これば疑問に思っていました。
    > ネットでプログラムの事を見ている時に i って頻繁に目にしました。
    > これも過去からの流れなんですね!
    > 但し、 j と k は初めて知りました。

    歴史的にそうなんですよ。アルゴリズムの書籍などを読むと必ず出てきますよ。

    > &count でも良い けど 3文字のレガシーで &cnt
    > なんでもない事かもしれないですが、変数名は自由にしていいのに
    > 何故英語? 何故3文字? (?_?)
    > 過去からの流れで 英語 を使用した方がトラブル回避になる、項目に代入する時は 見た目に分かりやすい方が良い。
    > (結果 漢字を使用する or 一般的に理解出来れば 3文字英語 そうでなければ 素直に英単語 にした方が分かりりやすい)

    &count ⇒ &cnt は、いわゆる母音抜きなんですよ。だいたい通じますね。AKIBA ⇒ AKB とかね (*^^)ok

    ところが、既出の &dom1 &dom2 では、「なんじゃコレ〜」になるわけですよ。アハハha

    >  &msg =      "Start"
    >  &msg = &msg + "\n\nこれはテスト用のメッセージボックスです"
    >  &msg = &msg + "\n\n不要になったらコメントアウトしてください"
    >  メッセージボックス  &title, &msg, アイコン = i, ボタン指定 = 1, 制御文字展開 = する
    >
    > &msg = &msg + "\n\n文字列"
    > の意味が非常に良く分かりましたm(__)m

    ご明察です。

    &msg = "Start\n\nこれはテスト用のメッセージボックスです\n\n不要になったらコメントアウトしてください"

    でもいいのですが、実際にメッセージボックスに表示されるイメージで代入しているわけです。

    視覚的にも良好だし、書き直す際に便利なんですよ。

    > 自分で完璧に作れるかは怪しいですが、
    > 私の理解が正しければ・・・
    >
    >  ジャンプ 行番号 = 先頭 ←最初は先頭行にジャンプする
    >  繰り返し ( .not #eof ) ←このプログラム以下から 最終行 になるまで繰り返す
    >    :
    >    :
    >   やりたい事の命令
    >    :
    >    :
    >   ジャンプ 行番号 = 次行 ←これは ジャンプ 行番号 = 先頭 に対して 次行なので 2行目 最終行になるまで加算させる。
    >
    > だから注釈の様に ジャンプ 行番号 = 次行 を忘れると 永遠に 先頭行 を繰り返す事になる
    > という事だと認識していますm(__)m

    桐では基本が日本語なので[終端行]と呼んでいますが、一般的には eof( end of file )いうものがファイルにはあります。

    桐の表(.tbx)の場合には、最終行レコード(行)の次の行です。もしも、レコードがひとつも無ければ、最終行とeof( 終端 )は同じです。

    桐では特に明記していないと思いますが、桐のようなデータベースの場合には、レコードポインタというものがあります。

    表ウィンドウの行セレクタにある右向き黒▲がレコードポインタです。

    [ジャンプ]コマンドは、レコードポインタを移動させるものです。

    だから、

     ジャンプ 行番号 = 先頭
     繰り返し ( .not #eof )

      ジャンプ 行番号 = 次行
     繰り返し終了

    という恰好が頻繁に表れるんですよ。

    #終端行が関数の本名ですが、私の場合には(さすがにダサく見えるので)別名の #eof を使用しています。

    #eof は0ゼロ(偽)または1イチ(真)のどちらかの値(論理値)を返す関数です。

    なので、繰り返し ( .not #eof ) を

    繰り返し ( .not #eof = 1 ) や 繰り返し ( #eof <> 1 ) や 繰り返し ( #eof ≠ 1 ) や 繰り返し ( #eof = 0 ) とは書きません。

      30.3 条件式の書き方|桐の釣魚大全のトップ > フォームアプリケーション教書 第2部
      http://silicon7565.html.xdomain.jp/guide/guide_Part2.htm#section30-3

    > 昨日プログラムを見ていて気付いた事があります。
    >  多重化
    >  &multiTblNum = #is表  /* 多重化した表の表番号を取得 */
    >   :
    >   :
    >  行訂正 [加工日1] = &加工日1, [加工日2] = &加工日2
    >   :
    >   :
    >  終了 表 &multiTblNum  /* 多重化した表を閉じる */
    >  編集表 &hwindow
    >
    > これを見ると、 多重化 した表に 求めたいデータを最終行まで代入していると理解しています。
    > 最終行までいって繰り返しが終了しらたら 多重化 した表を閉じて、編集対象表に戻る。
    > これ自体は理解の通りであれば、納得出来るのですが
    > 代入している表が 多重化 した表です。
    > それが何故編集対象表に求めた結果があるのか??
    > これは、 多重化した表 と 編集対象表は リンクしていると言う事なのでしょうか??

    多重化がどんなものか見た事がないのでリンクかな?と思われたのでしょう。

    リンクではありません、そのまま多重化です。つまり、多重人格と同じです。(@ @)

    具体的には、表ウィンドウで[メニューバー]→[ウィンドウ]→[新しいウィンドウを開く]を実行してみてください。

    その後、同じく[メニューバー]→[ウィンドウ]→[重ねて表示]などを実行してみてください。

    ほらね。見た通りですから。アハハha。

    この時に、[メニューバー]→[表示]→[ファイルパレット]を実行してみてください。

    そして、[ファイルパレット]の大きめのアイコンの一番右の[編集表]を実行してください。

    すると同じファイル名の表が2つ開いていることが分かるでしょう。

    ちなみに、私は普段から[ファイルパレット]は一切使いませんが、多重化の時だけは確認のために使いますよ。

    これは手続きで多重化した表を、うっかりで閉じ忘れる事があるからですよ。アハハha

    多重化に関してはヘルプも読んでみてください。

    > このツリーは本当に私の財産です。
    > 初級者に対しての講義と言っても過言じゃないと思っています。

    成り行きで公開講義みたいになってしまいましたね。アハハha。

    実は、執筆中の「(仮題)目からウロコのデータベース桐プログラミング」のよい取材源にもなっているんですよ。

    なので、お気楽にどうぞ。v(^^)v

    p.s.

    他にも気が付いたことがありますので、当方は追加投稿すると思います。

    しばらくはこの掲示板を見に来てください。(@^^)/~~~



[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14286 ] / ▼[ 14293 ]
■14288 / 12階層)  Re[12]: 加工開始日を求めたい
□投稿者/ ジェタイの桐 -(2024/04/12(Fri) 19:07:22)
    ONnojiさん


    > 多重化がどんなものか見た事がないのでリンクかな?と思われたのでしょう。
    >
    > リンクではありません、そのまま多重化です。つまり、多重人格と同じです。(@ @)
    >
    > 具体的には、表ウィンドウで[メニューバー]→[ウィンドウ]→[新しいウィンドウを開く]を実行してみてください。
    >
    > その後、同じく[メニューバー]→[ウィンドウ]→[重ねて表示]などを実行してみてください。
    >
    > ほらね。見た通りですから。アハハha。
    >
    > この時に、[メニューバー]→[表示]→[ファイルパレット]を実行してみてください。
    >
    > そして、[ファイルパレット]の大きめのアイコンの一番右の[編集表]を実行してください。
    >
    > すると同じファイル名の表が2つ開いていることが分かるでしょう。


    びっくり仰天でした(@_@)
    解説だけでも、何となくは理解出来たのですが、実際に 新しいウインドウ で開き 重ねて表示 させました。
    そして、文字を入力したり消してみたら、どちらの表も同じ結果になっていました。

    驚き以外の何ものでもありません…
    実際に試す事は重要ですね^_^


    > 多重化に関してはヘルプも読んでみてください。


    こちらに関してはまだ読めてないので、月曜日に確認します!


    > p.s.
    >
    > 他にも気が付いたことがありますので、当方は追加投稿すると思います。
    >
    > しばらくはこの掲示板を見に来てください。(@^^)/~~~


    はい!
    勿論チェックします!


    ◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇


    昔は要領の関係で、文字数制限があったと言われていました。
    プログラムを考える上で縛りがある分良く考えなければいけなかったじゃないでしょうか?

    と言う事は、文字数縛りのない現在と違い、発想力が凄く質の高いプログラマーが
    生まれやすい環境だったのかな??

    キャメルケースも知恵の1つですよね^_^


    等と勝手に推測してみましたm(_ _)m
[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14288 ] / ▼[ 14294 ]
■14293 / 13階層)  Re[13]: 加工開始日を求めたい
□投稿者/ ONnoji -(2024/04/15(Mon) 16:55:49)
    2024/04/15(Mon) 18:46:45 編集(投稿者)

    ジェタイの桐さん

    自然人間知能の ChatONnoji の生成結果だよ。幻覚(=ハルシネーション)じゃないからご安心ください。(^^ゞ

    >>多重化がどんなものか見た事がないのでリンクかな?と思われたのでしょう。
    > びっくり仰天でした(@_@)
    > 驚き以外の何ものでもありません…
    > 実際に試す事は重要ですね^_^

    その通りです。頭で考えるのではなく Use the Table. Feel it. です。

    時々、何の確認も取らずに仮説を立てて、思い込みだけで、独り相撲を取る人がいますが、それを避けられます。

    プログラムの制御構造というのが普通に当たり前に常識としてありますので・・・簡単に。

    それは次の3つです。 ※構造化プログラミング フリー百科事典『ウィキペディア(Wikipedia)』より

     1.順次(sequence)  部分プログラムを順々に実行する。
     2.選択(selection)  条件式が導出した状態に従い、次に実行する部分プログラムを選択して分岐する。
     3.反復(repetition) 条件式が導出した特定の状態の間、部分プログラムを繰り返し実行する。

    たぶん↑これで意味内容を理解できる初級者はまず居ないですよね。

    ということで、意味を噛み砕いて説明しますね。

    1.順次(sequence)

    順次(sequence)とは、プログラムは先頭の行から順番に実行されるように記述することです。
                       ・・・・・・・・・・・・・・・・・・・
    部分プログラムとは桐の場合では、[名札 メイン]・[一般手続き]・[イベントハンドラ]です。

    「先頭の行から順番に実行するって当たり前じゃん」と思う人が多いと思いますが、これにも歴史的な経緯があるんですよ。

    実は、初期のプログラミング言語では、プログラムの途中から実行したり、上から下へ順番に実行しないで、途中まで行って上に戻ったり、途中を飛ばして下へ進んだり、

    ありとあらゆる勝手気まま(恣意的)にプログラムの流れを作っていたんですよ。

    これはカオス(混沌)状態と同じで、いわゆるスパゲッティなプログラムなわけです。

    だから、「どげんかせんといかん」と考えた人達が現れたんですね。

    そうして、「プログラムは上から下へ流れるように書きましょう」という共通認識が培われたというわけです。

    2.選択(selection)

    選択(selection)とは、ある条件を満たしている時に実行する範囲と、条件を満たしていない時に実行する範囲を分けて作りましょうということです。

    これはWin桐ではお馴染みの if ( 条件 ) ... else ... end です。※実はDOS桐には if else end がありませんでした。これホント

    似た物としては、ケース開始 ケース( 条件 ) ... ケース その他 ... ケース終了 があります。※これはDOS桐にもありました。

    ということで、DOS桐時代の一括処理を見ると、[ケース開始 ... ケース終了]がたくさん書いてありますよ。

    ところが、DOS桐には[分岐]と[名札]コマンドがあるので、[ケース開始 ... ケース終了]を使うべきところで、

    [条件 分岐]と[名札]コマンドでプログラムの流れを選択していた初級者も居たと思います。

    さらに、DOS桐では初級者によって[条件 分岐]と[名札]コマンドを使いスパゲッティなプログラムが大量生産されていたと思います。

    DOS桐の時代は、MS-DOSのバッチファイルや、NEC 9801のBASIC言語の全盛期でしたが、

    どちらもスパゲティなプログラムが自由自在に作れるので、DOS桐の利用者も全然気にしていなかったと思いますね。

    しかし、当時すでにスパゲッティなプログラムが作れない、または原則禁止のプログラミング言語もありまして、※dBASE言語には分岐命令がありません

    そういうプログラミング言語を使っている人たちからみると、DOS桐は恐ろしく見えたかもしれませんね。

    かくゆう私( ONnoji )が初めて桐ver.2の一括処理を見せてもらった時には、あまりにもスパゲッティなプログラムが多いので腰を抜かしましたよ。

    3.反復(repetition)

    反復(repetition)は、同じ範囲を繰り返して実行することです。

    Win桐では、[繰り返し ... 繰り返し終了]コマンドが相当します。

    これは難しくないので、すぐに理解出来るでしょう。

    一番のキモは、[繰り返し ( 条件 ) ... 繰り返し終了]の場合には、 if ( 条件 ) ... else ... end の場合と同じように、

    ( 条件 )に記述する条件式が最終的に論理値を生成している点を理解することです。

    つまり、 条件式の結果(これは評価とも)が1イチ(真)か0ゼロ(偽)のどちらかということです。

    これさえ理解すればOKです。

     ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

    以上がプログラムの制御構造と制御構文ですが、関連することを・・・

    to be continued

[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14293 ] / ▼[ 14296 ] ▼[ 14298 ]
■14294 / 14階層)  Re[14]: 加工開始日を求めたい
□投稿者/ ONnoji -(2024/04/15(Mon) 16:56:38)
    以上がプログラムの制御構造と制御構文ですが、関連することを・・・

    実は、スパゲッティにならなければ何でもよいのか?というわけではないのです。

    もう一つ重要なポイントは、ブロック化です。

    分かり易く言えば、ブロック玩具のレゴ(LEGO)みたいにプログラムを作るということです。
             ・・・・・・・・・・・・・・・・・・・・・・・・

    以下のイベント処理(.kex)は何度も見ていると思います。

    1.[名札  メイン ... *]
    2.[手続き定義開始 cmdテストClick( ) ... 手続き定義終了]
    3.[手続き定義開始 prc加工日探索( ) ... 手続き定義終了]

    ↑この3つが機能のブロックですね。

    しかし、単に範囲という意味ではなくて[機能]という視点からのブロックです。
                      ・・・・・・・・・・・・・・・・
    つまり、このイベント処理(.kex)には、3個の機能(ブロック)があるということです。

    そして、機能のブロックを[モジュール]と呼びますよ。

      ┌名札  メイン
      │
      │ ** フォームが開かれる時に必ず実行される機能のブロック
      │
      └*

      ┌手続き定義開始 cmdテストClick( )
      │ 変数宣言 自動,文字列{ &title = "cmdテストClick( )", &msg }
      │ 変数宣言 自動,日時 { &加工日1, &加工日2 }
      │ 変数宣言 自動,整数 { &multiTblNum }
      │ 変数宣言 自動,長整数{ &recordNum }
      │
      │
      │ &msg =      "Start"
      │ &msg = &msg + "\n\nこれはテスト用のメッセージボックスです"
      │ &msg = &msg + "\n\n不要になったらコメントアウトしてください"
      │ メッセージボックス  &title, &msg, アイコン = i, ボタン指定 = 1, 制御文字展開 = する
      │
      │ 多重化
      │ &multiTblNum = #is表  /* 多重化した表の表番号を取得 */
      │
      │ 解除 *
      │ 絞り込み [休日]{ [休日] = #u }
      │ ジャンプ 行番号 = 先頭
      │┌繰り返し ( .not #eof )
      ││
      ││ &recordNum = #行番号
      ││ 手続き実行 prc加工日探索( &加工日1, &加工日2 )
      ││ ジャンプ 行番号 = &recordNum
      ││
      ││ トレース出力 _[日付], "  ", _&加工日1, "  ", _&加工日2
      ││ 行訂正 [加工日1] = &加工日1, [加工日2] = &加工日2
      ││
      ││ ジャンプ 行番号 = 次行 /* これを忘れると無限ループになります */
      │└繰り返し終了
      │
      │ 終了 表 &multiTblNum  /* 多重化した表を閉じる */
      │ 編集表 &hwindow
      │
      │ &msg =      "Finish"
      │ &msg = &msg + "\n\nこれはテスト用のメッセージボックスです"
      │ &msg = &msg + "\n\n不要になったらコメントアウトしてください"
      │ メッセージボックス  &title, &msg, アイコン = i, ボタン指定 = 1, 制御文字展開 = する
      │
      │ *手続き定義終了
      │
      └end

      ┌手続き定義開始 prc加工日探索( 参照 日時 &加工日1, 参照 日時 &加工日2 )
      │ 変数宣言 自動,文字列{ &title = "prc加工日探索( )", &msg }
      │ 変数宣言 自動,長整数{ &recordNum }
      │
      │ &加工日1 = #u /* 参照引数を初期化 */
      │ &加工日2 = #u /* 参照引数を初期化 */
      │
      │ &recordNum = #行番号
      │ ジャンプ 行番号 = &recordNum
      │┌if ( &recordNum > 5 )
      ││ ジャンプ 行番号 = -5
      ││ &加工日1 = [日付]
      │└end
      │
      │ ジャンプ 行番号 = &recordNum
      │┌if ( &recordNum > 7 )
      ││ ジャンプ 行番号 = -7
      ││ &加工日2 = [日付]
      │└end
      │
      └手続き定義終了

    もうひとつ大事なことは、3個の機能(ブロック)のうち2つの機能

     cmdテストClick  ← 上位の機能(モジュール)
     │
     └ prc加工日探索 ← 下位の機能(モジュール)

    は、実行するタイミングで、上位の機能(モジュール)と下位の機能(モジュール)と呼びます。

    これは、呼び方が違うだけでメインルーチンとサブルーチンと全く同じものですよ。

    上位モジュール:cmdテストClickの機能

     ・多重化した表の先頭から最後までジャンプすること

    下位モジュール:prc加工日探索の機能

     ・加工日を探索して、変数に格納して、呼び出し元へ値を返すこと。

    ということです。

    このように、各モジュールで仕事分担をしています。

    そして、ひとつのモジュールはひとつの機能を分担しています。
        ・・・・・・・・・・・・・・・・・・・・・・・・

    実は、初級者の場合このような機能の分割・分担の切り分けが上手に出来ません。

    だって、慣れていないのですから当たり前です。

    繰り返しになりますが、ひとつのモジュールはひとつの機能を分担するという事を常に念頭にしていれば、

    上位の機能(モジュール)と下位の機能(モジュール)の関係で手続きが作れるようになりますよ。

    そして、機能(モジュール)は一般手続きですから、同じイベント処理の別の機能(一般手続き・イベントハンドラ)からも呼び出せます。

    また、一度作った一般手続きは、別のイベント処理でも再利用しやすくなります。

    cmdテストClickの機能とprc加工日探索の機能を合体させた、ひとつの一般手続きを例示しようと思っていましたが、説明が長くなったので割愛します。

    でも、合体させた場合には、プログラムが複雑にってしまって分かりにくくなるということはイメージできると思います。

     <参考>
     8.4 一般プロシージャをサブルーチンとして呼び出す|桐の釣魚大全のトップ > フォームアプリケーション教書 第1部
     http://silicon7565.html.xdomain.jp/guide/guide_Part1.htm#section8-4

    p.s.

    今回話題にした[プログラムの制御構造]や[モジュラー設計]というのは、いわゆる[構造化プログラミング]と呼ばれるものです。

    [構造化プログラミング]は、はるか昔から提唱されてきた考え方ですので、現代では特に[構造化プログラミング]が雑誌やネットで騒がれることはありません

    また、[構造化プログラミング]とされる範囲は非常に広いので、今さら[構造化プログラミング]をお勉強される必要はないと思います。

    非常に文章が長くなって恐縮ですが。アハハha (@^^)/~~~


[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14294 ] / ▼[ 14297 ]
■14296 / 15階層)  Re[15]: 加工開始日を求めたい
□投稿者/ ジェダイの桐 -(2024/04/15(Mon) 17:45:27)
    ONnojiさん


    > もう一つ重要なポイントは、ブロック化です。


    > 1.[名札  メイン ... *]
    > 2.[手続き定義開始 cmdテストClick( ) ... 手続き定義終了]
    > 3.[手続き定義開始 prc加工日探索( ) ... 手続き定義終了]
    >
    > ↑この3つが機能のブロックですね。



    > もうひとつ大事なことは、3個の機能(ブロック)のうち2つの機能
    >
    >  cmdテストClick  ← 上位の機能(モジュール)
    >  │
    >  └ prc加工日探索 ← 下位の機能(モジュール)
    >
    > は、実行するタイミングで、上位の機能(モジュール)と下位の機能(モジュール)と呼びます。


    ブロック化の考え方、私に合っていると思います。
    1つずつ分けて考えた方が分かりやすいからです。

    ただ一つ疑問が・・・

    今回は cmdテストClick(上位機能) prc加工日探索(下位機能)だけでした。
    もし 後から prc加工日探索(下位機能) を使いまわしたくなった場合、


    cmdテストClick  ← 上位の機能(モジュール)
     │
     └ prc加工日探索 ← 下位の機能(モジュール)
     │
     └cmdテスト2Click← 後から追加した上位の機能(モジュール)


    上機能 → 下機能 → 上機能 の順番になると思うのです。

    であれば、明らかに汎用性の高い 下位機能 と分かっている場合は 別のイベント処理(.kex) を作成して 代入 させた方が 上位下位の整合性が保ち易いのではないかと思ってしまいました。

    物凄く見当違いな意見かもしれませんが・・・


    詳しい解説有難うございましたm(__)m
[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14296 ] / ▼[ 14300 ] ▼[ 14299 ]
■14297 / 16階層)  Re[16]: 加工開始日を求めたい
□投稿者/ ONnoji -(2024/04/15(Mon) 17:59:24)
    2024/04/15(Mon) 18:08:38 編集(投稿者)

    > ただ一つ疑問が・・・
    >
    > 今回は cmdテストClick(上位機能) prc加工日探索(下位機能)だけでした。
    > もし 後から prc加工日探索(下位機能) を使いまわしたくなった場合、
    >
    >
    > cmdテストClick  ← 上位の機能(モジュール)
    >  │
    >  └ prc加工日探索 ← 下位の機能(モジュール)
    >  │
    >  └cmdテスト2Click← 後から追加した上位の機能(モジュール)
    >
    >
    > 上機能 → 下機能 → 上機能 の順番になると思うのです。
    >
    > であれば、明らかに汎用性の高い 下位機能 と分かっている場合は 
    > 別のイベント処理(.kex) を作成して 代入 させた方が 上位下位の整合性が保ち易いのではないかと思ってしまいました。

    上機能 → 下機能 → 上機能 というのは、A機能 → B機能 → A機能 という考えた方が良いと思いますよ。

    つまり、上とか下はあまり重要ではありません。

    外しているかもしれませんが、いや当たりかなぁ〜???

    ひょっとして[再帰呼び出し]のことでしょうかね?????

     <参考>
     38.2 再帰呼び出し|桐の釣魚大全のトップ > フォームアプリケーション教書 第2部
     http://silicon7565.html.xdomain.jp/guide/guide_Part2.htm#section38-2

    しかし、当方は部品展開や逆展開で使うと便利かなぁ〜程度の認識ですが、ウルトラ難度の頭の回転技を必要としそうですよ。

    時々[再帰呼び出し]が得意な人を見かけますが、当方は詳しくないので聞かないでね。m(__)m

    p.s.

    最初から汎用性を追求する必要性はありませんよ。

    たくさん、手続きを作っていくうちに、汎用性がある機能というのが浮かび上がってくるものなんですよ。
                      ・・・・・・・・・・・・・・・・・・・・・・

    そうしたら、汎用性を持たせた内容で、新しく作り直した方が早いですよ。
                      ・・・・・・・・・・・・
    ローマは一日してならず。

[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14297 ] / 返信無し
■14300 / 17階層)  Re[17]: 加工開始日を求めたい
□投稿者/ ジェダイの桐 -(2024/04/15(Mon) 18:19:55)
    ONnojiさん


    早速の返信ありがとうございますm(_ _)m

    ちょっと書き方が分かりにくかったかもしれません。

    cmdテストClick  ← 上位の機能(モジュール)
     │
    └ prc加工日探索 ← 下位の機能(モジュール)

    └cmdテスト2Click← 後から追加した上位の機能(モジュール)
    └ prc加工日探索 ← 下位の機能(モジュール)(使い回し。cmdテスト2Clickの中にprc加工日探索を指示しておけば、実際にはcmdテスト2Clickの上にプログラムがあるので、記載しなくて良いと言う認識です。)

    だけど、

    > 上機能 → 下機能 → 上機能 というのは、A機能 → B機能 → A機能 という考えた方が良いと思いますよ。

    と言う考え方なのですね^_^
    気を引き締めて、理解していかないとスパゲッティ迷宮に迷い込みそうです(TT)


    > ひょっとして[再帰呼び出し]のことでしょうかね?????


    私の発想はかなり単純でした。
    上位プログラム と 下位プログラムを最初から分けておいた方が管理がしやすいのかな??
    と思ってしまったんです…

    まさか、こんなにウルトラ難度とも梅雨知らず(TT)


    勉強になりました(^^)/

    >  <参考>
    >  38.2 再帰呼び出し|桐の釣魚大全のトップ > フォームアプリケーション教書 第2部
    >  http://silicon7565.html.xdomain.jp/guide/guide_Part2.htm#section38-2
    >
    > しかし、部品展開や逆展開で使うと便利かなぁ〜程度の認識ですが、ウルトラ難度の頭の回転技を必要としそうですよ。

    本当に本当に上達して、必要がある時のみ、こう言う事が出来ればなぁ とは思いますが、まずはしっかりと基礎固めします^_^
[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14297 ] / ▼[ 14301 ]
■14299 / 17階層)  Re[17]: 加工開始日を求めたい
□投稿者/ ONnoji -(2024/04/15(Mon) 18:18:06)
    > ただ一つ疑問が・・・
    >
    > 今回は cmdテストClick(上位機能) prc加工日探索(下位機能)だけでした。
    > もし 後から prc加工日探索(下位機能) を使いまわしたくなった場合、

    ↑これ当方は、実はよく理解できないんです。

    もしも、使い回したい機能があれば、それを呼び出す一般手続きまたはイベントハンドラから呼び出せばOKです。

    そういう意味なのでそんなに悩ましいとは思えないのですが・・・

    ただですね、prc加工日探索(下位機能) は、名前は立派ですが、内容は非常にチープなんですよ。

    だって、探索する項目も探索する日数も全部が固定されているでしょう。

    なので、まだまだ改良の余地があるでしょう。

    でも、最初は急ぐよりも、一歩一歩が大事なんですよ。

    急がば回れというでしょう。急いでも何も良い事はありませんよ。


[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14299 ] / ▼[ 14302 ]
■14301 / 18階層)  Re[18]: 加工開始日を求めたい
□投稿者/ ONnoji -(2024/04/15(Mon) 19:02:22)
    2024/04/15(Mon) 19:40:29 編集(投稿者)

    > ちょっと書き方が分かりにくかったかもしれません。
    >
    > cmdテストClick  ← 上位の機能(モジュール)
    >  │
    >  └ prc加工日探索 ← 下位の機能(モジュール)
    >  │
    >  └cmdテスト2Click← 後から追加した上位の機能(モジュール)
    >  └ prc加工日探索 ← 下位の機能(モジュール)(使い回し。cmdテスト2Clickの中にprc加工日探索を指示しておけば、実際にはcmdテスト2Clickの上にプログラムがあるので、記載しなくて良いと言う認識です。)
    >
    > だけど、
    >
    >>上機能 → 下機能 → 上機能 というのは、A機能 → B機能 → A機能 という考えた方が良いと思いますよ。
    >
    > と言う考え方なのですね^_^
    > 気を引き締めて、理解していかないとスパゲッティ迷宮に迷い込みそうです(TT)


    よ〜く見たら、

    cmdテストClick  ← 上位の機能(モジュール)
     │
     └ prc加工日探索 ← 下位の機能(モジュール)

    cmdテスト2Click ← 後から追加した上位の機能(モジュール)
     │
     └ prc加工日探索

    ↑こういう意味なんでしょうね。

    サンプルはあくまでも見本ですので最小で作ってあるんですよ。

    この場合には、

    cmdテストClick ※メインの機能を 手続き実行 prc多重化して探索( ) に変更
     │
     └ prc多重化して探索 ※cmdテストClickを prc多重化して探索( ) にリネームしたもの
       │
       └ prc加工日探索 ※そのまま 


    cmdテスト2Click ※メインの機能を 手続き実行 prc多重化して探索( ) に変更
     │
     └ prc多重化して探索 ※cmdテストClickを prc多重化して探索( ) にリネームしたもの
       │
       └ prc加工日探索 ※そのまま 

    のように、コマンドボタンから呼び出す一般手続きを2つ作って、

    cmdテストClick と cmdテスト2Click ですが、

     手続き定義開始 cmdテストClick( )

      手続き実行 prc多重化して探索( )

     手続き定義終了

     手続き定義開始 cmdテスト2Click( )

      手続き実行 prc多重化して探索( )

     手続き定義終了

    こんな感じでOKです。

     <参考>
     25.3 プロシージャ(手続き)名の付け方|桐の釣魚大全のトップ > フォームアプリケーション教書 第2部
     http://silicon7565.html.xdomain.jp/guide/guide_Part2.htm#section25-3

    p.s.

    最初のサンプルの時に、3階層で作って置けばよかったですかね?

     cmdテストClick ※メインの機能を 手続き実行 prc多重化して探索( ) に変更
      │
      └ prc多重化して探索 ※cmdテストClickを prc多重化して探索( ) にリネームしたもの
        │
        └ prc加工日探索 ※そのまま 

    でも、いきなり3階層では、消化不良を起こすかもしれなかったので2階層にしましたよ。(^^ゞ


[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14301 ] / ▼[ 14309 ]
■14302 / 19階層)  Re[19]: 加工開始日を求めたい
□投稿者/ ONnoji -(2024/04/15(Mon) 21:46:17)
    2024/04/15(Mon) 22:08:34 編集(投稿者)

    こんなやり取りがありましたね。(^^ゞ

    > ■Re[9]: 行制約について
    >>正に一番やりたかったイメージの物でした!
    >>フォーム+イベント処理は敷居が高く感じますが、乗り越えたらやりたいイメージの物が出来上がりますね!
    >>ブログ読ませて頂きます!(直ぐに理解出来ないので何回も読もうと思います)
    > 当方のwebページの、
    > フォームアプリケーション教書 第1部
    > フォームアプリケーション教書 第2部
    > は、[フォーム+イベント処理]のガイド・事典として執筆したものです。
    > 一応、順番にお読みになることをお勧めしますが、必要な所を拾い読みしていただくのでも構いません。
    > なお、著者が認める「悪文」ですので、読み難さについてはご勘弁ください。アハハhe(^^ゞ
    > 対象範囲が広いので、例えば「変数って何ですか?」のような初級者向けの事柄は割愛しています。
    > つまり、変数の知識は有ることが前提になっています。
    > そうしないと、膨大な量の解説を書かなければなりませんがら・・・(^^ゞ

    予想をはるかに超えて大きなツリーになってしまいました。

    貴殿のような初級者の人に、実際に動作するサンプルを見せて、後は自分で頑張ってね〜(^^)v

    なんてね、でもそれはちょっと酷だと思ったのです。

    実は当方では「(仮題)目からウロコのデータベース桐プログラミング」という小論を書き始めた時期だったのです。

    このようにタイミングが重なったためにかなり長大な投稿を繰り返してしまいました。

    最後まで読んでいただいて、丁寧なリプライをいただきまして感謝です。

    また、ガントチャートに関しての知見をお聞かせいただいて合わせて感謝です。

    ということで、いい加減に終わりですが (^^ゞ

    最後にひとつ・・・

    ジェダイの桐さんのお仕事は製造業のようなので、加工機械は身近なものでしょう。

    この機械(マシン)はハードウェアと言うものですね。

    一方、桐の[フォーム+イベント処理]はソフトウェアです。

    このソフトウェアという言葉を、[柔らかな機械]と考えていただきたいのです。

    見えなくて、実際に触ることも出来ないけれど、それは機械と同じなんだとね。

    だから、機能だとかモジュラー設計だとか、まるでハードウェアと同じような言葉が飛び出すのです。

    ハードウェアのメンテナンスや故障診断と、ソフトウェアのそれはまったく同じではありませんが、

    ソフトウェアが[柔らかな機械]だと考えればイメージしやすくなるでしょう。

    では最後に、

    ジェダイの桐さんへ

    フォームを使え。感じるのだ。 Use the Form. Feel it.

    フォームと共にあらんことを。 May the Form be with you.

    それでは。(@^^)/~~~


[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14302 ] / ▼[ 14310 ]
■14309 / 20階層)  Re[20]: 加工開始日を求めたい
□投稿者/ ジェダイの桐 -(2024/04/18(Thu) 09:19:37)
    ONnojiさん


    このツリーで最後の返信にします。
    教えて貰った後日談です。


    変数の読み方 ブロック構造の考え方 の知識が入った状態で、
    ONnojiさん と あこめさんの、プログラム練習をやっている途中です。
    以前やった時は 作業 でやったみただけ状態でした。


    しかし、今は若干ではありますがプログラムの意味が分かります。
    (代入 が省かれて記入されている事と、ブロック構造の考え方を教えて貰ったのが大きいと思います。)


    プログラム練習を全部やって、少しずつ自分の業務に応用出来る様に挑戦していきます。


    また、新たな壁にぶつかった時は 掲示板に新たな投稿をします。
    フォームを感じ、フォームと共に頑張ります(^^)/


    今まで本当にありがとうございましたm(__)m
    それでは〜(^^♪
[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14309 ] / 返信無し
■14310 / 21階層)  Re[21]: 加工開始日を求めたい
□投稿者/ ONnoji -(2024/04/19(Fri) 18:41:09)
    2024/04/19(Fri) 18:42:39 編集(投稿者)

    ジェダイの桐さん

    後日談拝を読しました。

    さらに参考になるかもしれない?ということで、補習授業みたいな??

    この【多遊】さんのHPの、もうひとつ別の掲示板「のほか掲示板」に投稿してテキストを添付しました。
                 ・・・・・・・・・・・・・・・・・・・・・

    よろしければ、添付のテキストをお読みになってみてください。


    《 桐質問以外の話題は、「のほか掲示板」からどうぞ 》

    > ■1442 / 親階層)  (仮題)目からウロコの「桐プログラミング」入門
    > □投稿者/ ONnoji -(2024/04/19(Fri) 18:33:10)
    >
    > 現在、(仮題)目からウロコの「桐プログラミング」入門という小論を執筆中です。
    >
    > これは[フォーム+イベント処理]の初級者向けの内容です。
    >
    > まだまだ執筆途中ですが、ご高覧いただければ嬉しいです。
    >
    > ご意見・ご感想などフィードバックいただければ幸いです。
    >
    > よろしくお願いいたします。m(__)m

[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/

▲[ 14294 ] / 返信無し
■14298 / 15階層)  Re[15]: 加工開始日を求めたい
□投稿者/ ONnoji -(2024/04/15(Mon) 18:09:28)
    2024/04/15(Mon) 18:31:45 編集(投稿者)

    > cmdテストClickの機能とprc加工日探索の機能を合体させた、ひとつの一般手続きを例示しようと思っていましたが、説明が長くなったので割愛します。
    >
    > でも、合体させた場合には、プログラムが複雑にってしまって分かりにくくなるということはイメージできると思います。

    上位モジュールと下位モジュールを合体させてみました。

    複雑さが増して、その結果分かりにくくなっているでしょう??

    最初はこれでもいいのですが、だって動くんだモン♪

    でもね、モジュール化をしないと、一か月後、数か月後、一年後と時間が経てば経つほど、

    記憶もあいまいになって、さらに複雑さも加わり、謎のプログラムに変容していくのです。アハハ。

    しかし、モジュール化しておけば、記憶が曖昧になっていても、複雑さが軽減されているで、何とかなるのです。アハハ。

    自分で作ったプログラムが解読出来なくて何時間も格闘するするのは無駄でしょう。、

    だから、未来への投資だと思って、後々のことを考えて拙速にならないようにくれぐれも気を付けてください。


      ┌手続き定義開始 cmdテストClick( )
      │ 変数宣言 自動,文字列{ &title = "cmdテストClick( )", &msg }
      │ 変数宣言 自動,日時 { &加工日1, &加工日2 }
      │ 変数宣言 自動,整数 { &multiTblNum }
      │ 変数宣言 自動,長整数{ &recordNumMain } /* 変数名が重複するので &recordNum → &recordNumMain に変更 */
      │ 変数宣言 自動,長整数{ &recordNum }
      │
      │
      │ &msg =      "Start"
      │ &msg = &msg + "\n\nこれはテスト用のメッセージボックスです"
      │ &msg = &msg + "\n\n不要になったらコメントアウトしてください"
      │ メッセージボックス  &title, &msg, アイコン = i, ボタン指定 = 1, 制御文字展開 = する
      │
      │ 多重化
      │ &multiTblNum = #is表  /* 多重化した表の表番号を取得 */
      │
      │ 解除 *
      │ 絞り込み [休日]{ [休日] = #u }
      │ ジャンプ 行番号 = 先頭
      │┌繰り返し ( .not #eof )
      ││
      ││ &recordNumMain = #行番号
      ││ **手続き実行 prc加工日探索( &加工日1, &加工日2 ) /* 下位モジュールを読み込んだのでコメントアウト */
      ││
      ││ &加工日1 = #u /* 参照引数を初期化 */
      ││ &加工日2 = #u /* 参照引数を初期化 */
      ││
      ││ &recordNum = #行番号
      ││ ジャンプ 行番号 = &recordNum
      ││┌if ( &recordNum > 5 )
      │││ ジャンプ 行番号 = -5
      │││ &加工日1 = [日付]
      ││└end
      ││
      ││ ジャンプ 行番号 = &recordNum
      ││┌if ( &recordNum > 7 )
      │││ ジャンプ 行番号 = -7
      │││ &加工日2 = [日付]
      ││└end
      ││
      ││ ジャンプ 行番号 = &recordNumMain
      ││
      ││ トレース出力 _[日付], "  ", _&加工日1, "  ", _&加工日2
      ││ 行訂正 [加工日1] = &加工日1, [加工日2] = &加工日2
      ││
      ││ ジャンプ 行番号 = 次行 /* これを忘れると無限ループになります */
      │└繰り返し終了
      │
      │ 終了 表 &multiTblNum  /* 多重化した表を閉じる */
      │ 編集表 &hwindow
      │
      │ &msg =      "Finish"
      │ &msg = &msg + "\n\nこれはテスト用のメッセージボックスです"
      │ &msg = &msg + "\n\n不要になったらコメントアウトしてください"
      │ メッセージボックス  &title, &msg, アイコン = i, ボタン指定 = 1, 制御文字展開 = する
      │
      └手続き定義終了

    p.s.

    これは、適切に機能を分割していない例です。

    既出の prc加工日探索 のように、機能を分割するべきです。

    そして、 prc加工日探索 は本来ならば汎用性が求められるものですが、現行のサンプルは見本であって汎用性に欠けていますよ。(^^ゞ

[ 親 14266 / □ Tree ] 返信 [メール受信/OFF] 削除キー/


Mode/  Pass/

HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -