(現在 過去ログ84 を表示中)

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

[ 最新記事及び返信フォームをトピックトップへ ]

■12547 / inTopicNo.1)  繰り返し
  
□投稿者/ hiro -(2020/08/11(Tue) 17:21:47)
    2020/08/11(Tue) 17:49:49 編集(投稿者)
    2020/08/11(Tue) 17:48:16 編集(投稿者)
    2020/08/11(Tue) 17:46:50 編集(投稿者)

    やりたい事ですが、
    会計の仕訳で、借方、貸方とあるのですが、複式伝票ですと伝票の借方貸方合計は
    当然あっているのですが、1行1行は金額が違います。
    それを1行1行毎に仕訳を起こしたように分解したいのです。
    (大きい金額の行を複写して下行の空白に複写し、借方貸方の金額を同じにしているつもりです)
    桐verは10sです。うんともすんとも言わないのですが何処がおかしいでしょうか?
    よろしくお願い致します。
    ---------------------------------------------------------
    変数宣言 共通,文字列{ &いつ,&伝票NO,&借方コード,&借方科目,&借方補助コード,&借方補助科目,&貸方コード,&貸方科目,&貸方補助コード,&貸方補助科目}
    変数宣言 共通,数値{&借方本体金額, &貸方本体金額,&差額金額,&残額}
    繰り返し
    表 ”01022-3資金繰仕訳.tbx”
    絞り込み  [借方貸方差額]{=0}   /*借方、貸方同じ額のものを選んで*/ 
      if (#空ファイル=0)    /*それが空で無いなら*/
    表 ”01022-4資金繰仕訳.tbx”   /*この表に読み込み*/  
    読み込み条件登録 表,条件名="","01022-3資金繰仕訳.tbx",ファイル名変更=しない,編集表=する,*
    読み込み 表,条件名=""
    編集表 ”01022-3資金繰仕訳.tbx”
    行削除 *             /*読み終えたら要らないのでその分は削除*/
        絞り込み解除  1     /*最初の状態へ*/
    表形式編集
        else if (#空ファイル=1) /*差額0が無い空ファイル状態なら*/
        絞り込み解除  1       /*解除で最初の状態へ*/
        代入 &いつ=[日付変換]
        代入 &伝票NO=[伝票No.]
        代入 &差額金額=[借方貸方差額]
        検索条件登録 "日付伝票",{[日付変換]{&いつ},[伝票No.]{&伝票NO}}
        絞り込み 条件名="日付伝票"
        絞り込み 行数=1
    ケース開始
      ケース (#空ファイル=0)   /*真の空ファイルになったらここで終了*/
    繰り返し中止
      ケース (&差額金額<0)           /*貸方の金額が大きい時は*/
         代入 &貸方コード=[貸方勘定科目コード]
         代入 &貸方科目=[貸方勘定科目名]
         代入 &貸方補助コード=[貸方補助科目コード]
         代入 &貸方補助科目=[貸方補助科目名]
         代入 &貸方本体金額=[貸方本体金額]
         絞り込み 補集合
         検索 [借方本体金額]{ <>0,<>#U }
         絞り込み 行数=1             /*借方の1行を呼び出し*/
         代入 &借方本体金額=[借方本体金額]
         代入 &残額=&貸方本体金額×-1-&借方本体金額
         置換 [貸方勘定科目コード]=&貸方コード   /*以下、空白になっている行に貸方の同じ値を複写*/
         置換 [貸方勘定科目名]=&貸方科目
         置換 [貸方補助科目コード]=&貸方補助コード
         置換 [貸方補助科目名]=&貸方補助科目
         置換 [貸方本体金額]=&借方本体金額     /*貸方が大きかったので借方の額に合わせる*/
        絞り込み解除  1
        絞り込み解除  1
         置換 [貸方本体金額]=&残額         /*最初の大きかった額から借方分を除いた残額に*/
      ケース (&差額金額>=0)           /*以下は貸方と逆のパターン*/
         代入 &借方コード=[借方勘定科目コード]
         代入 &借方科目=[借方勘定科目名]
         代入 &借方補助コード=[借方補助科目コード]
         代入 &借方補助科目=[借方補助科目名]
         代入 &借方本体金額=[借方本体金額]
         絞り込み 補集合
         検索 [貸方本体金額]{ <>0,<>#U }
         絞り込み 行数=1
         代入 &貸方本体金額=[貸方本体金額]
         代入 &残額=&借方本体金額-&貸方本体金額
         置換 [借方勘定科目コード]=&借方コード
         置換 [借方勘定科目名]=&借方科目
         置換 [借方補助科目コード]=&借方補助コード
         置換 [借方補助科目名]=&借方補助科目
         置換 [借方本体金額]=&貸方本体金額
        絞り込み解除  1
        絞り込み解除  1
         置換 [借方本体金額]=&残額
      ケース (#空ファイル=1)         /*貸借が0のものは移動させてるので空になるまで繰り返し*/
      ケース終了
       end
    繰り返し終了


引用返信 [メール受信/OFF] 削除キー/
■12548 / inTopicNo.2)  Re[1]: 繰り返し
□投稿者/ ONnoji -(2020/08/11(Tue) 17:54:26)
    2020/08/11(Tue) 19:31:04 編集(投稿者)
    2020/08/11(Tue) 18:04:25 編集(投稿者)

    > 桐verは10sです。うんともすんとも言わないのですが何処がおかしいでしょうか?

    提示された一括処理(.cmx)の内容を制御構造だけで表すと次のようになります。

    ┌繰り返し
    │ ┌if (#空ファイル=0)    /*それが空で無いなら*/
    │ │  **if (#空ファイル=0)    /*それが0なら*/
    │ ├else if (#空ファイル=1) /*差額0が無い空ファイル状態なら*/
    │ │ ┌ケース開始
    │ │ ├─ケース (#空ファイル=0)   /*真の空ファイルになったらここで終了*/
    ←─┼─┼───繰り返し中止
    │ │ ├─ケース (&差額金額<0)           /*貸方の金額が大きい時は*/
    │ │ ├─ケース (&差額金額>=0)           /*以下は貸方と逆のパターン*/
    │ │ ├─ケース (#空ファイル=1)         /*貸借が0のものは移動させてるので空になるまで繰り返し*/
    │ │ └ケース終了
    │ └end
    └繰り返し終了

    [繰り返し] ... [繰り返し終了]のループになっているのですが、[繰り返し]コマンドには条件が付加されていません。

    つまり、無条件ループなので、必ず[繰り返し] ... [繰り返し終了]のループに入っているハズです。

    この「うんともすんとも言わない」という表現が微妙で曖昧なのですが、

    考えられるのは、

    ・無限ループに入って一括処理が止まらなくなった状態 ※無限ループに陥った場合には、Ctrl + Shift + PauseBrake で一括処理を中断できる場合があります

    ・[繰り返し中止]コマンドが実行されて、
      直ちに[繰り返し] ... [繰り返し終了]のループから脱出している状態

    → もしも、無限ループに陥っているのであれば、正しく[繰り返し] ... [繰り返し終了]のループから脱出するようにしてください。

    → もしも、無限ループに陥らずに、一括処理が直ちに終了しているのであれば、一括処理の制御構造を見直してください。

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

    参考のために以下に全行を示します。なお、字下げ(インデント)は拙作:整形ユーティリティで自動的にしたものです。

     変数宣言 共通,文字列{ &いつ,&伝票NO,&借方コード,&借方科目,&借方補助コード,&借方補助科目,&貸方コード,&貸方科目,&貸方補助コード,&貸方補助科目}
     変数宣言 共通,数値{&借方本体金額, &貸方本体金額,&差額金額,&残額}
    ┌繰り返し
    │  表 ”01022-3資金繰仕訳.tbx”
    │  絞り込み  [借方貸方差額]{=0}   /*借方、貸方同じ額のものを選んで*/
    │  **絞り込み  [借方貸方差額]{=0}   /*借方から貸方引いて*/
    │ ┌if (#空ファイル=0)    /*それが空で無いなら*/
    │ │  **if (#空ファイル=0)    /*それが0なら*/
    │ │  表 ”01022-4資金繰仕訳.tbx”   /*この表に読み込み*/
    │ │  読み込み条件登録 表,条件名="","01022-3資金繰仕訳.tbx",ファイル名変更=しない,編集表=する,*
    │ │  読み込み 表,条件名=""
    │ │  編集表 ”01022-3資金繰仕訳.tbx”
    │ │  行削除 *             /*読み終えたら要らないのでその分は削除*/
    │ │  絞り込み解除  1     /*最初の状態へ*/
    │ │  表形式編集
    │ ├else if (#空ファイル=1) /*差額0が無い空ファイル状態なら*/
    │ │  絞り込み解除  1       /*解除で最初の状態へ*/
    │ │  代入 &いつ=[日付変換]
    │ │  代入 &伝票NO=[伝票No.]
    │ │  代入 &差額金額=[借方貸方差額]
    │ │  検索条件登録 "日付伝票",{[日付変換]{&いつ},[伝票No.]{&伝票NO}}
    │ │  絞り込み 条件名="日付伝票"
    │ │  絞り込み 行数=1
    │ │ ┌ケース開始
    │ │ ├─ケース (#空ファイル=0)   /*真の空ファイルになったらここで終了*/
    ←─┼─┼───繰り返し中止
    │ │ ├─ケース (&差額金額<0)           /*貸方の金額が大きい時は*/
    │ │ │   代入 &貸方コード=[貸方勘定科目コード]
    │ │ │   代入 &貸方科目=[貸方勘定科目名]
    │ │ │   代入 &貸方補助コード=[貸方補助科目コード]
    │ │ │   代入 &貸方補助科目=[貸方補助科目名]
    │ │ │   代入 &貸方本体金額=[貸方本体金額]
    │ │ │   絞り込み 補集合
    │ │ │   検索 [借方本体金額]{ <>0,<>#U }
    │ │ │   絞り込み 行数=1             /*借方の1行を呼び出し*/
    │ │ │   代入 &借方本体金額=[借方本体金額]
    │ │ │   代入 &残額=&貸方本体金額×-1-&借方本体金額
    │ │ │   置換 [貸方勘定科目コード]=&貸方コード   /*以下、空白になっている行に貸方の同じ値を複写*/
    │ │ │   置換 [貸方勘定科目名]=&貸方科目
    │ │ │   置換 [貸方補助科目コード]=&貸方補助コード
    │ │ │   置換 [貸方補助科目名]=&貸方補助科目
    │ │ │   置換 [貸方本体金額]=&借方本体金額     /*貸方が大きかったので借方の額に合わせる*/
    │ │ │   絞り込み解除  1
    │ │ │   絞り込み解除  1
    │ │ │   置換 [貸方本体金額]=&残額         /*最初の大きかった額から借方分を除いた残額に*/
    │ │ ├─ケース (&差額金額>=0)           /*以下は貸方と逆のパターン*/
    │ │ │   代入 &借方コード=[借方勘定科目コード]
    │ │ │   代入 &借方科目=[借方勘定科目名]
    │ │ │   代入 &借方補助コード=[借方補助科目コード]
    │ │ │   代入 &借方補助科目=[借方補助科目名]
    │ │ │   代入 &借方本体金額=[借方本体金額]
    │ │ │   絞り込み 補集合
    │ │ │   検索 [貸方本体金額]{ <>0,<>#U }
    │ │ │   絞り込み 行数=1
    │ │ │   代入 &貸方本体金額=[貸方本体金額]
    │ │ │   代入 &残額=&借方本体金額-&貸方本体金額
    │ │ │   置換 [借方勘定科目コード]=&借方コード
    │ │ │   置換 [借方勘定科目名]=&借方科目
    │ │ │   置換 [借方補助科目コード]=&借方補助コード
    │ │ │   置換 [借方補助科目名]=&借方補助科目
    │ │ │   置換 [借方本体金額]=&貸方本体金額
    │ │ │   絞り込み解除  1
    │ │ │   絞り込み解除  1
    │ │ │   置換 [借方本体金額]=&残額
    │ │ ├─ケース (#空ファイル=1)         /*貸借が0のものは移動させてるので空になるまで繰り返し*/
    │ │ └ケース終了
    │ └end
    └繰り返し終了
     表


引用返信 [メール受信/OFF] 削除キー/
■12549 / inTopicNo.3)  Re[2]: 繰り返し
□投稿者/ hiro -(2020/08/11(Tue) 17:58:18)
    2020/08/11(Tue) 18:03:22 編集(投稿者)

    No12548に返信(ONnojiさんの記事)
    >>桐verは10sです。うんともすんとも言わないのですが何処がおかしいでしょうか?
    ONnojiさん、早速回答ありがとうございます、助かります。
    ものの1秒位で終わるので文構造がおかしいと言う事ですね
    考えて見ます、これで合ってると思ってるので見つけきれるかどうか・・・ありがとうございます。
引用返信 [メール受信/OFF] 削除キー/
■12550 / inTopicNo.4)  Re[3]: 繰り返し
□投稿者/ ONnoji -(2020/08/11(Tue) 18:22:01)
    2020/08/11(Tue) 18:34:25 編集(投稿者)

    > ものの1秒位で終わるので文構造がおかしいと言う事ですね
    > 考えて見ます、これで合ってると思ってるので見つけきれるかどうか

    ┌繰り返し
    │ ┌if (#空ファイル=0)    /*それが空で無いなら*/
    │ ├else if (#空ファイル=1) /*差額0が無い空ファイル状態なら*/
    │ │ ┌ケース開始
    │ │ ├─ケース (#空ファイル=0)   /*真の空ファイルになったらここで終了*/
    ←─┼─┼───繰り返し中止
    │ │ ├─ケース (&差額金額<0)           /*貸方の金額が大きい時は*/
    │ │ ├─ケース (&差額金額>=0)           /*以下は貸方と逆のパターン*/
    │ │ ├─ケース (#空ファイル=1)         /*貸借が0のものは移動させてるので空になるまで繰り返し*/
    │ │ └ケース終了
    │ └end
    └繰り返し終了

    頭の中や机上であれこれ考えても、実際にどのように実行されてるのかを確認しなければ、まったく信頼性が揺らぎます。

    プログラムは、作者の願望の通りに動くのではなく、プログラムに書かれているとおりに動作するのですから。

    私ならば、[トレース出力]コマンドを使って条件がどのように判定されているのか確かめますよ。

    次のように[トレース出力]コマンドを挿入すると、[トレース出力ウィンドウ]に結果のイチ(1)、ゼロ(0)が表示されます。

    もちろん、イチ(1)は真、ゼロ(0)は偽です。

     繰り返し

       トレース出力 "if (#空ファイル=0)"    = #str( (#空ファイル=0))
       トレース出力 "else if (#空ファイル=1)" = #str( (#空ファイル=1))
       if (#空ファイル=0)    /*それが空で無いなら*/
       else if (#空ファイル=1) /*差額0が無い空ファイル状態なら*/

        トレース出力 "ケース (#空ファイル=0)" = #str( (#空ファイル=0))
        トレース出力 "ケース (&差額金額<0)"  = #str( (&差額金額<0))
        トレース出力 "ケース (&差額金額>=0))" = #str( (&差額金額>=0))
        トレース出力 "ケース (#空ファイル=1)" = #str( (#空ファイル=1))

        ケース開始
          ケース (#空ファイル=0)   /*真の空ファイルになったらここで終了*/
            繰り返し中止
          ケース (&差額金額<0)           /*貸方の金額が大きい時は*/
          ケース (&差額金額>=0)           /*以下は貸方と逆のパターン*/
          ケース (#空ファイル=1)         /*貸借が0のものは移動させてるので空になるまで繰り返し*/
         ケース終了
       end
     繰り返し終了

    詳しくは、「フォームアプリケーション教書 第2部」の
         「40 [トレース出力]ウィンドウと[トレース出力]コマンド」を参照してください。
     http://silicon7565.html.xdomain.jp/



引用返信 [メール受信/OFF] 削除キー/
■12551 / inTopicNo.5)  Re[4]: 繰り返し
□投稿者/ hiro -(2020/08/11(Tue) 18:30:33)
    No12550に返信(ONnojiさんの記事)
    >>ものの1秒位で終わるので文構造がおかしいと言う事ですね
    >>考えて見ます、これで合ってると思ってるので見つけきれるかどうか

    ONnojiさん有難うございます、もう少し考えて見ます

    >
    > ┌繰り返し
    > │ ┌if (#空ファイル=0)    /*それが空で無いなら*/
    > │ ├else if (#空ファイル=1) /*差額0が無い空ファイル状態なら*/
    > │ │ ┌ケース開始
    > │ │ ├─ケース (#空ファイル=0)   /*真の空ファイルになったらここで終了*/
    > ←─┼─┼───繰り返し中止
    > │ │ ├─ケース (&差額金額<0)           /*貸方の金額が大きい時は*/
    > │ │ ├─ケース (&差額金額>=0)           /*以下は貸方と逆のパターン*/
    > │ │ ├─ケース (#空ファイル=1)         /*貸借が0のものは移動させてるので空になるまで繰り返し*/
    > │ │ └ケース終了
    > │ └end
    > └繰り返し終了
    >

    > 詳しくは、「フォームアプリケーション教書 第2部」の
    >      「40 [トレース出力]ウィンドウと[トレース出力]コマンド」を参照してください。
    >  http://silicon7565.html.xdomain.jp/
    >
    まずは1個見つけました
      ケース (#空ファイル=0)ここが (#空ファイル=1)こうでした  /*真の空ファイルになったらここで終了*/
    繰り返し中止
    今は、
    kd:1508作業フィルが作れません
    置換 [貸方勘定科目コード]=&貸方コード   /*以下、空白になっている行に貸方の同じ値を複写*/
    の所でエラーになった状態です
引用返信 [メール受信/OFF] 削除キー/
■12552 / inTopicNo.6)  Re[5]: 繰り返し
□投稿者/ ONnoji -(2020/08/11(Tue) 18:40:03)
    2020/08/11(Tue) 18:41:09 編集(投稿者)

    > まずは1個見つけました
    >   ケース (#空ファイル=0)ここが (#空ファイル=1)こうでした  /*真の空ファイルになったらここで終了*/
    > 繰り返し中止
    > 今は、
    > kd:1508作業フィルが作れません
    > 置換 [貸方勘定科目コード]=&貸方コード   /*以下、空白になっている行に貸方の同じ値を複写*/
    > の所でエラーになった状態です

    当方は人間デバッガではありませんので、エラーの修復は自己努力でお願いします。

    当方は、[トレース出力]コマンドをご案内しましたが、DOS桐以来の[確認]コマンドでもOKです、

    そちらで慣れている手法を使ってエラーを潰してください。


引用返信 [メール受信/OFF] 削除キー/
■12553 / inTopicNo.7)  Re[6]: 繰り返し
□投稿者/ hiro -(2020/08/11(Tue) 18:44:10)
    No12552に返信(ONnojiさんの記事)
    > 2020/08/11(Tue) 18:41:09 編集(投稿者)
    >

    > 当方は人間デバッガではありませんので、エラーの修復は自己努力でお願いします。
    >
    > 当方は、[トレース出力]コマンドをご案内しましたが、DOS桐以来の[確認]コマンドでもOKです、
    >
    > そちらで慣れている手法を使ってエラーを潰してください。
    >
    ONnojiさん、ありがとうございます
    トレースとは何ぞやと確認しています。
引用返信 [メール受信/OFF] 削除キー/
■12554 / inTopicNo.8)  Re[7]: 繰り返し
□投稿者/ hiro -(2020/08/11(Tue) 19:54:21)
    トレースは開始しました、1508エラー、ctrl+break、終わりましたの2行で終わってしまうので、表形式編集を所々に入れて見ると、
         代入 &貸方コード=[貸方勘定科目コード]
         代入 &貸方科目=[貸方勘定科目名]
         代入 &貸方補助コード=[貸方補助科目コード]
         代入 &貸方補助科目=[貸方補助科目名]
    の所で値が代入されていない事が分かりました。

    つづく
引用返信 [メール受信/OFF] 削除キー/
■12566 / inTopicNo.9)  記述の局部的添削プラスアルファ
□投稿者/ 悲しげ -(2020/08/12(Wed) 18:23:42)
    No12547に返信(hiroさんの記事)
    全体構造は置いといて、一括処理記述の局部的添削を試みてみます。(^^;)

    「#空ファイル=0」ってのは初めて見ました。何だか「無が有」「無が無」みたいで斬新です。
    私は直感的に「&選択件数>0」とか「#総件数>0」を使ってきたので。
    さて

    繰り返し
     表 "01022-3資金繰仕訳.tbx"
     絞り込み  [借方金額]=[貸方金額]
     if(&選択件数>0)    /*それが空で無いなら*/
      表 "01022-4資金繰仕訳.tbx"   /*この表に読み込み*/  
      読み込み 表,"01022-3資金繰仕訳.tbx",*
      編集表 "01022-3資金繰仕訳.tbx"
      行削除 *  /*読み終えたら要らないのでその分は削除、つまり[借方金額]=[貸方金額]の行を消す*/
      絞り込み解除 1     /*最初の状態へ、つまり[借方金額]<>[貸方金額]の行を表示する*/
      *表形式編集
     else /*差額0が無い、つまり[借方金額]<>[貸方金額]のデータだけ*/
      絞り込み解除 1  /*解除で最初の状態へ、つまりは先頭行*/
      *(A)
      *(B)&いつ=[日付変換],&伝票NO=[伝票No.],&差額金額=[借方貸方差額]
    **「代入」の字句は省略可なので、見通しをよくするため抜いている。以下同様。
      *(B)検索条件登録 "日付伝票",{[日付変換]{&いつ},[伝票No.]{&伝票NO}}
      *(B)絞り込み 条件名="日付伝票"
      絞り込み 行数=1
    ここで何をやっているのか判らない。
    解除後は先頭行に位置するはずだが、先頭行の幾つかの項目値を変数に取得し、
    その変数値でもって絞り込んで、その先頭行1行を絞り込む。これってつまりは
    元の先頭行1行を絞り込むのと同じだから「*(B)」の記述は不要のはず?
    と言うか、そもそもここで1行を絞り込むのは何のため?
      ケース開始
      *ケース (#空ファイル=0)   /*真の空ファイルになったらここで終了*/
      * 繰り返し中止
    ここは「#空ファイル=1」の誤記とのことで、ならば上記「*(A)」の辺りで
      条件(&選択件数=0) 繰り返し中止
    とした方がすっきりするような・・・。
      ケース (&差額金額<0)           /*貸方の金額が大きい時は*/
      *または([貸方金額]>[借方金額])でもよいが
       &貸方コード=[貸方勘定科目コード],&貸方科目=[貸方勘定科目名]\n
       ,&貸方補助コード=[貸方補助科目コード],&貸方補助科目=[貸方補助科目名]\n
       ,&貸方本体金額=[貸方本体金額]
       絞り込み 補集合
    なぜ補集合? 先に1行目だけを絞り込んでいるから、補集合では2行目以降全てが対象になる?
    尤もその前に[日付]と[伝番]で絞り込んでいるから全補集合ではなさそうだが、となると1行目
    を対象外とするのは?
       検索 [借方本体金額]{ <>0,<>#U }
       絞り込み 行数=1             /*借方の1行を呼び出し*/
       &借方本体金額=[借方本体金額],&残額=-&借方本体金額-&貸方本体金額
       置換 [貸方勘定科目コード]=&貸方コード,[貸方勘定科目名]=&貸方科目\n
       ,[貸方補助科目コード]=&貸方補助コード,[貸方補助科目名]=&貸方補助科目\n
       ,[貸方本体金額]=&借方本体金額   /*貸方が大きかったので借方の額に合わせる*/
    ははぁ、置換を使うために苦しい1行絞り込みを行っていたのですね。
    ここは全行対象の「置換」ではなく、当該1行のみを対象とする「行訂正」がよいでしょう。
       絞り込み解除  1
       絞り込み解除  1
       置換 [貸方本体金額]=&残額         /*最初の大きかった額から借方分を除いた残額に*/
    この辺りの記述の意図は判りかねるが、その辺はパスして(^^;)、
    一般に「置換」ではなく各行を「行訂正」して行く定石的記述を例示すると
      繰り返し
       &借方本体金額=[借方本体金額],&残額=-&借方本体金額-&貸方本体金額
       行訂正 [貸方勘定科目コード]=&貸方コード,[貸方勘定科目名]=&貸方科目・・・・
       *借方の記述は略
       ジャンプ 行番号=次行
       条件(#終端行) 繰り返し中止
      繰り返し終了
    これだと、絞り込み〜解除の煩雑さから逃れることが出来ます。(^^)v

    *

    余談ながら、そもそも本件は、複合仕訳や諸口仕訳を単一仕訳に振り替える問題ですよね。
    これって桐での複式簿記全般の話題だから、経験者にお知恵を拝借したらどうでしょう?
    今回のエラー原因の探索とは離れて。
    私が自営=会計業務から離れて15年以上たつのでもうすっかり忘れてしまったし。
    尤も私の場合は入力は専ら「弥生」で、結果をテクストやCSVで書き出して桐で処理=印刷
    していただけでしたが。
引用返信 [メール受信/OFF] 削除キー/
■12568 / inTopicNo.10)  Re[2]: 記述の局部的添削プラスアルファ
□投稿者/ hiro -(2020/08/12(Wed) 19:15:24)
    悲しげさん、どうもありがとうございます。
    > 「#空ファイル=0」ってのは初めて見ました。何だか「無が有」「無が無」みたいで斬新です。
    #空ファイル=0,#終端行=0,#総件数<>0,どれもデータがある状態で、気分で使ってます
    厳密には使い分けるのが良いのでしょうけど、その区別は分かりません(;^ω^)

    >   *(B)絞り込み 条件名="日付伝票"
    >   絞り込み 行数=1
    > ここで何をやっているのか判らない。
    複式簿記の場合、金額が大きかったら残りの行は空白なので複写する為
    例えば
    1行目       普通預金700,000
    2行目買掛金400,000
    3行目未払金300,000
    4行目買掛金300,000 当座預金300,000
    とかですと、2〜3行目は貸方が空白なので、1行目をコピーし
    2行目買掛金400,000 普通預金400,000
    3行目未払金300,000 普通預金300,000
    に変更しようとしているためです
    (今は並び替えて金額が大きい数字が先頭に来るようにしています)

    >「*(B)」の記述は不要のはず?
    伝票毎に処理する為、伝票内での金額の分解が必要なのです

    > ははぁ、置換を使うために苦しい1行絞り込みを行っていたのですね。
    そうです、上記例えで言いますと
    2行目買掛金400,000 普通預金400,000とする為です


    >   繰り返し
    >    &借方本体金額=[借方本体金額],&残額=-&借方本体金額-&貸方本体金額
    >    行訂正 [貸方勘定科目コード]=&貸方コード,[貸方勘定科目名]=&貸方科目・・・・
    >    *借方の記述は略
    >    ジャンプ 行番号=次行
    次行は借方金額が違うので、借方の額を貸方と同じになるのかが気になりました
    (複数行が混在していますので)

引用返信 [メール受信/OFF] 削除キー/
■12569 / inTopicNo.11)  (削除)
□投稿者/ -(2020/08/12(Wed) 19:24:29)
    この記事は(投稿者)削除されました
引用返信 [メール受信/OFF] 削除キー/
■12572 / inTopicNo.12)  Re[3]: 記述の局部的添削プラスアルファ
□投稿者/ hiro -(2020/08/12(Wed) 19:38:51)
    No12568に返信(hiroさんの記事)
    悲しげさん、どうもありがとうございます。
    >「#空ファイル=0」ってのは初めて見ました。何だか「無が有」「無が無」みたいで斬新です。
    #空ファイル=0,#終端行=0,#総件数<>0,どれもデータがある状態で、気分で使ってます
    厳密には使い分けるのが良いのでしょうけど、その区別は分かりません(;^ω^)

    >  *(B)絞り込み 条件名="日付伝票"
    >  絞り込み 行数=1
    >ここで何をやっているのか判らない。
    複式簿記の場合、金額が大きかったら残りの行は空白なので複写する為
    例えば
     1行目       普通預金700,000
    2行目買掛金400,000
    3行目未払金300,000
    4行目買掛金300,000 当座預金300,000
    とかですと、2〜3行目は貸方が空白なので、1行目をコピーし
    2行目買掛金400,000 普通預金400,000
    3行目未払金300,000 普通預金300,000
    に変更しようとしているためです
    (今は並び替えて金額が大きい数字が先頭に来るようにしています)
    (金額が同じものは1行内に記入され、金額が違う物は反対が空白です)
    >「*(B)」の記述は不要のはず?
    伝票毎に処理する為、伝票内での金額の分解が必要なのです

    >ははぁ、置換を使うために苦しい1行絞り込みを行っていたのですね。
    そうです、上記例えで言いますと
    2行目買掛金400,000 普通預金400,000とする為です


    >  繰り返し
    >   &借方本体金額=[借方本体金額],&残額=-&借方本体金額-&貸方本体金額
    >   行訂正 [貸方勘定科目コード]=&貸方コード,[貸方勘定科目名]=&貸方科目・・・・
    >   *借方の記述は略
    >   ジャンプ 行番号=次行
    次行は借方金額が違うので、借方の額を貸方と同じになるのかが気になりました
    (複数行が混在していますので)

引用返信 [メール受信/OFF] 削除キー/
■12573 / inTopicNo.13)  Re[1]: 繰り返し
□投稿者/ hiro -(2020/08/12(Wed) 20:42:36)
    繰り返しの下にケース開始が有り
    合致するケース処理が終わったら
    繰り返しの次の行に飛ぶのか?
    ケース開始の次の行に飛ぶのか?
    どちらでしょうか?
    よろしくお願い致します。
引用返信 [メール受信/OFF] 削除キー/
■12574 / inTopicNo.14)  Re[2]: 繰り返し
□投稿者/ ONnoji -(2020/08/12(Wed) 21:00:18)
    2020/08/13(Thu) 09:46:10 編集(投稿者)
    2020/08/12(Wed) 21:29:36 編集(投稿者)
    2020/08/12(Wed) 21:06:29 編集(投稿者)

    > 繰り返しの下にケース開始が有り
    > 合致するケース処理が終わったら
    > 繰り返しの次の行に飛ぶのか?
    > ケース開始の次の行に飛ぶのか?
    > どちらでしょうか?

    [トレース出力]コマンド等を使って自身で確認してください。

    こういうことは、自分自身で確認できるようにならないといけません。

    先はまだまだ遠いですよ。

    p.s.

    > 合致するケース処理が終わったら

    [ケース終了]コマンドへ進み、次の行以降に記述されている有効なコマンドが実行されます。
                   ※コメント行と空行も実行対象ですが、それらは何も実行しない行です。

    それが、何であるかは、プログラムのデザイン次第です。

    ヘルプの[ケース開始 … ケース終了]をよ〜く読んでください。φ(..)

    疑問が生じたら、まずヘルプを見ましょう。

    そして、それでも疑問がある場合には、具体的に質問を投稿しましょう。

    取扱説明書であるヘルプすら見ずに質問するのは、ちょっとだと思いますよ。



引用返信 [メール受信/OFF] 削除キー/
■12575 / inTopicNo.15)  Re[3]: 繰り返し
□投稿者/ hiro -(2020/08/12(Wed) 21:29:51)
    ONnojiさん、どうもありがとうございます
    トレースはトレース整形しても、メモ帳に張り付けたものと同じ物しか
    出来上がらないんですよね(;^ω^)
    ヘルプも見ましたけど、ケースはケース終了までとしか書いて無いんです
    終了したら何処へ行くのかは書かれていませんね
    結局、繰り返しは繰り返し終了まで、ケース開始はケース終了までと言う事だと
    思いますが、推察しますと、ケース終了がもしケース開始の次へとなると自動的に繰り返しをしている事になってしまうからケース開始ではないだろうなと考えました。
    (只、繰り返しとケースの間に、if endも有りました(;^ω^)ややこしい)


引用返信 [メール受信/OFF] 削除キー/
■12577 / inTopicNo.16)  Re[4]: 繰り返し
□投稿者/ ONnoji -(2020/08/12(Wed) 21:47:49)
    2020/08/12(Wed) 22:40:56 編集(投稿者)
    2020/08/12(Wed) 22:08:14 編集(投稿者)

    > トレースはトレース整形しても、メモ帳に張り付けたものと同じ物しか
    > 出来上がらないんですよね(;^ω^)

    当方は、イベント処理を念頭に置いていまして、一括処理の場合は想定外であります。(^^ゞ

    しかし、それでも[トレース確認]コマンドや[確認]コマンドに比べれば、ましでしょう。

    > ヘルプも見ましたけど、ケースはケース終了までとしか書いて無いんです
    > 終了したら何処へ行くのかは書かれていませんね

    ヘルプには次のように何処に行くか書いてあります。

    ・[ケース]コマンドの<条件式>が真であれば、つぎの[ケース]コマンドまたは[ケース終了]コマンドまでのコマンドを実行します。
    ・[ケース]コマンドの<条件式>が偽であれば、つぎの[ケース]コマンドまたは[ケース終了]コマンドに移ります。

    これを読めば、

    [ケース終了]コマンドへ進み、次の行以降に記述されている有効なコマンドが実行されます。

    と理解できるハズです。

    提示された内容からすると、

    │ │ └ケース終了         ※[ケース終了]コマンドへ進み
    │ └end ←───── つまりここ! ※次の行以降に記述されている有効なコマンドが実行されます
    └繰り返し終了
     表

    ですね。


引用返信 [メール受信/OFF] 削除キー/
■12578 / inTopicNo.17)  Re[5]: 繰り返し
□投稿者/ hiro -(2020/08/12(Wed) 22:04:55)
    ONnojiさん、どうもありがとうございます
    推察通りでした、只、繰り返しの次の行に、教えて頂いた&cot=&cot+1を書いてるのに
    変数管理で見ても、数値が未定義のままになっています(;^ω^)他の共通変数は値が入っているのに・・・
引用返信 [メール受信/OFF] 削除キー/
■12579 / inTopicNo.18)  Re[6]: 繰り返し
□投稿者/ ONnoji -(2020/08/12(Wed) 22:15:46)
    2020/08/12(Wed) 22:18:19 編集(投稿者)

    > 推察通りでした、只、繰り返しの次の行に、教えて頂いた&cot=&cot+1を書いてるのに
    > 変数管理で見ても、数値が未定義のままになっています(;^ω^)他の共通変数は値が入っているのに・・・

    変数:&cnt をどのように宣言しましたか?

    1.変数宣言 共通,数値{ &cnt }

    2.変数宣言 固有,数値{ &cnt }

    3.変数宣言 数値{ &cnt }


    1.の場合のスコープは共通変数です。

    2.と3.の場合のスコープは固有変数です。

    変数に関しては、桐のヘルプ(変数宣言)と

    拙作HP

    http://silicon7565.html.xdomain.jp/
    フォームアプリケーション教書 第1部
    17. 名札メインと局所変数

    を参照してください。

    【引用】フォームアプリケーション教書 第1部 17. 名札メインと局所変数より

    ― 変数の種別とスコープ 2006/4/19(水) ― ブログ版 桐のイベント道場より
      各種別で同じ名前の変数を宣言した場合、次の順番で検索され、最初に見つかった変数の値が参照されます。

      自動
      局所
      固有
      共通
      ※組み込み変数と同名の変数は宣言できません。

      スコープの異なる同名の変数の有効範囲は以下のようになる。├──┤有効範囲を広さを表す。

      ├─自動─┤   この変数は宣言した手続き内でのみ有効です。手続きから抜けると自動的に削除されます。
      ├─局所──┤  この変数は、フォームウィンドウ固有ものです。フォームウィンドウが閉じると自動的に削除されます。
      ├─固有───┤ この変数は、表またはフォームのウィンドウが開いているあいだだけ有効です。
      ├─共通────┤この変数は、桐で作業している間はつねに有効です。

      <置換式の特殊性>
      置換式に指定した変数は[組み込み変数]または[共通変数]または[固有変数]でなければならない!
      表( .tbl )が項目計算式などで参照できる変数が、組み込み変数や共通変数や固有変数だけということが原因だと思います。
      筆者注:置換式がアンダーバー( _ )で指定する式の場合には式に用いる変数は局所変数や自動変数でもよい。
          ただし、式の中で局所変数や自動変数を表現するとエラーになります。

引用返信 [メール受信/OFF] 削除キー/
■12580 / inTopicNo.19)  Re[1]: 繰り返し
□投稿者/ ONnoji -(2020/08/12(Wed) 22:27:04)
    2020/08/14(Fri) 13:33:59 編集(投稿者)
    2020/08/13(Thu) 00:06:31 編集(投稿者)

    改めて投稿しましょう。

    > (只、繰り返しとケースの間に、if endも有りました(;^ω^)ややこしい)

    プログラムとは「ややこしい」ものなのです。

    何故ならば、ソフトウェアは「柔らかな機械」だからです。※その反対がハードウェア「硬い機械」です。

    機械である以上、ネジの一本一本、寸法の間違えなど許されないのです。

     ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

    プログラムの制御構造を正しく理解していない場合には、プログラムを作成できません。

    これは世の中で言うところの「構造化プログラミング」というものです。

    しかしながら、DOS桐で[分岐]コマンド[名札]コマンドが普通の使われていたように、

    現在でも、桐のヘルプではDOS桐の流れのままに、「構造化プログラミング」をそれほど強く押し出していません。

    DOS桐の利用者の多くは、当時のBASIC同様に、分岐(GOTO)や名札(LABEL)でプログラムしていたのですが、現在ではそれが仇になります。
    ※少数の桐の利用者は、手続き実行(GOSUB)...手続き終了(RETURN)を使っていましたけれども、多数派ではありませんでした。
    ※ちなみに、DOS桐には、if ... else ... end が無かったんですよ。
    ※そのために、[ケース開始] ... [ケース 条件] ... [ケース その他] ... [ケース終了] が if ... else .. end の代用だったりしました。
    ※else節を含まないif ... end は[繰り返し 条件] ... [繰り返し中止]+[繰り返し終了]で実現できます。
    ※ これを私は非常によく利用していましたが、このようなコーディングをした人は極めて少ないハズです。

    さて現在では、Win桐も普通に構造化プログラミング言語の仲間入りをしているんです。

    しかしながら、世の中で言うところの「構造化プログラミング」は最近では耳にしなくなっています。

    なぜならば、「構造化プログラミング」はあまりにも当ったり前の常識になっているからです。※当たり前田のクラッカー!のレベルです。

    例えば、昔であれば新人プログラマ研修で「構造化プログラミング」をみっちり教え込みましたが、

    現在では、サッと紹介して、オブジェクト指向プログラミング等へ進みます。

    それくらい、当ったり前の、常識の知識になってしまっているということです。

    しかしながら、DOS桐からの利用者は、世の中で言うところの「構造化プログラミング」を知らない人が多いです。

    今回はそこがネックであると断言しますよ。

    世の中で言うところの「構造化プログラミング」を理解できないとゴールは遠くなるハズですよ。


引用返信 [メール受信/OFF] 削除キー/
■12581 / inTopicNo.20)  Re[7]: 繰り返し
□投稿者/ hiro -(2020/08/12(Wed) 22:27:57)
    ONnojiさん、どうもありがとうございます
    1のパターンです、他の変数も共通の数値や文字列です。
    会話処理の変数管理の共通変数で見た時に、名前だけはあるのに値が未定義なので
    それで先ほど、ケース終了、end、が繰り返しに戻っていなくて、もしかして何処かに飛んでいるのかな?と思った次第でした。
引用返信 [メール受信/OFF] 削除キー/

次の20件>

トピック内ページ移動 / << 0 | 1 >>

[このトピックに返信]
Mode/  Pass/

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

- Child Tree -
- Antispam Version -