| entyoさんこんにちは コマンドに分岐が多用されているようですがこれは極力使わない方が いいと思います。 全てを手続きにして作り替えてみました。
変数削除 共通 * 変数削除 固有 * 変数宣言 固有,文字列{&FILE,&pass="c:\data\KIRI\DENPYOU\",&Main="c:\data\KIRI\事務メイン.wfm"} 手続き実行 初期メニュー() 終了 桐 手続き定義開始 初期メニュー() 変数宣言 自動,文字列{&メイン処理} 変数宣言 自動,整数{&メインhd,&end} 繰り返し 手続き実行 ウィンド取得と終了() ウィンドウ作成 &Main,位置=(2,42),ハンドル=&メインhd ウィンドウ会話 &メインhd,更新=禁止,許可作業 =なし,終了状態=&end,ボタン=&メイン処理 ウィンドウ終了 &メインhd * 確認 "終了状態endは "+#STR(&end)+" ボタンは " + &メイン処理 if (&end = 1) if (&メイン処理="伝票処理") 手続き実行 伝票開始読み込み() else if (&メイン処理="納付金処理") 手続き実行 納付金読み込み() else if (&メイン処理="名簿処理") 手続き実行 名簿() else if (&メイン処理="タックシール") 手続き実行 タックシール() else if (&メイン処理="終了") 繰り返し中止 end else 繰り返し中止 end 繰り返し終了 手続き定義終了
手続き定義開始 ウィンド取得と終了() 変数宣言 自動,整数{&win} 表 繰り返し ウィンドウリスト取得 &win if (&win>0) ウィンドウ終了 &win else 繰り返し中止 end 繰り返し終了 表 手続き定義終了
手続き定義開始 伝票開始読み込み() データパス名 &pass,固定=する 変数宣言 自動,文字列{&伝票1= &pass + "伝票メニュー.wfm" ,&処理1},自動,整数{&end,&メニュー1} 表 "伝票0000.tbl" 繰り返し ウィンドウ作成 &伝票1, 位置=(340,42),ハンドル=&メニュー1 ウィンドウ会話 &メニュー1,更新=禁止,許可作業 =なし,終了状態=&end,ボタン=&処理1 ウィンドウ終了 &メニュー1 if (&end = 1) if (&処理1="入力済伝票") 手続き実行 入力済み伝票処理() else if (&処理1="新月伝票") 手続き実行 新月伝票入力() else if (&処理1="伝票終了1") 繰り返し中止 end else 繰り返し中止 end 繰り返し終了 終了 表 編集対象表 手続き定義終了
手続き定義開始 伝票終了() 選択解除 行集計解除 表整理 余白割合=0 終了 表 編集対象表 手続き定義終了
手続き定義開始 入力済み伝票処理() 行削除 *,圧縮 変数宣言 自動,文字列{&ms[6]={"◇ 処理する年月ファイル名を入力して下さい ◇"\ ,"◇ 誤ファイル名を入力すると一括処理エラーで中止されます ◇"\ ,"例=2000(年)04(月)と入力します"\ ," 漢字(年)・(月)・tblは入力しません "\ ,"処理するファイル名"\ ,"処理を中止する場合は入力せずにリターンして下さい"}},整数{&入力} メッセージボックス &ms[1],&ms[2]+"\n"+&ms[3]+"\n"+&ms[4]+"\n"+&ms[5]+"\n"+&ms[6]\ , アイコン=!, ボタン指定=1, 制御文字展開=する,&入力 &FILE = "" /* 使用する変数は前もって初期化しておく 他の手続きで使用する場合固有か共通を使用する */ キー入力 (16,33)-(16,44),プロンプト="201404で平成26年4月の伝票指定",モード=無変換,終了状態=&入力, &FILE * データパス名 &pass,固定=しない /* ここで固定しないだとおかしいのでは */ if (&入力 = 0 /* Escで何も入力しなかった場合 */) 確認 "処理を中止し元に戻ります。" else /* 入力があるかEnterで未入力の場合 */ if (&FILE=#未定義) 確認 "処理を中止し元に戻ります。" else if ( #FSIZE( &pass + &FILE + ".tbl" ) > 0 ) &FILE = &pass + &FILE + ".tbl" 読み込み 表,&FILE 手続き実行 入力伝票処理() else 確認 "指定されたファイル "+ &FILE + " は見つかりませんでした。" end end end 手続き定義終了
手続き定義開始 入力伝票処理() 変数宣言 自動,文字列{&メニュー2=&pass+"伝票処理メニュー.wfm",&伝票2} 変数宣言 自動,整数{&end,&処理2} 繰り返し ウィンドウ作成 &メニュー2,位置=(550,42),ハンドル=&処理2 ウィンドウ会話 &処理2,更新=禁止,許可作業 =なし,終了状態=&end,ボタン=&伝票2 ウィンドウ終了 &処理2 if (&end = 1) if (&伝票2="入力訂正") 手続き実行 伝票入力("伝票入力画面.wfm") else if (&伝票2="確認印刷") 手続き実行 伝票確認印刷() else if (&伝票2="削除復活") 手続き実行 伝票削除復活() else if (&伝票2="終了") 繰り返し中止 end else 繰り返し中止 end 繰り返し終了 手続き定義終了
手続き定義開始 伝票入力(文字列 &入力wfm) 位置指定 行番号=最終 使用フォーム &入力wfm フォーム形式編集 許可作業=行挿入+行訂正 手続き実行 伝票保存() 使用フォーム /* 順番が逆だと表が選択状態のままで解除できない */ 手続き定義終了
手続き定義開始 伝票保存() * 画面表示 (10,1),"◇ データー 整理・保存中 ◇",中央揃え,黄,点滅 * ↑一括処理ウィンド表示中のみ表示可能なのでメッセージフォームを作成すること 条件 (#グループ選択状態<>0) グループ選択解除 条件 (#行集計状態<>0) 行集計解除 解除 * 表整理 余白割合=0 /* "伝票0000.tbl"は開くときに表整理しているので不要では?70行目 */ if (#処理条件名検索(2,"日付")<1) 並べ替え条件登録 条件名="日付", {[日付]昇順} 確認 "並び替え条件を再定義しました。" end /* このような処理条件は一括処理でキチンと定義した方がよい */ 並べ替え 条件名="日付" * 置換 [番号] /* サンプルがないため動作しないようにしました。コメント行の解除は先頭1文字を削除 */ データパス名 &pass,固定=しない if ( #ファイル使用( &FILE , 1 ) = 1 ) 書き出し 表,&FILE else 確認 "書き出すファイル "+ &FILE + " は使用中です" end /* ↑ここは違うファイル名に変更して保存するようにメッセージボックスで問い合わせたらいかが? */ 手続き定義終了
|