| モモンガさんこんにちは > 桐10はk3xのみ対応?? 書き出し k3 コマンドは必ず拡張子に.k3xと付加するようです。 コマンド名↑は変更していないようです。 桐10と桐9で動作するように作ってみました。
表 変数削除 共通 変数削除 * var str{ &fold , &file , &temp , &k3 = #cond(#int(#バージョン番号) < 10 , ".k3" , 1 , ".k3x" )} var int { &win , &end } , Str { &tb = #cond(#int(#バージョン番号) <10 , ".tbl" , 1 , ".tbx" )} ウィンドウリスト取得 &win while (&win>0) ウィンドウ終了 &win ウィンドウリスト取得 &win end フォルダ名入力 初期値=#データパス名, プロンプト="フォルダー名を指定してください", 許可作業=*,&fold if (&fold<>"" ) ファイル名入力 初期値 = "*"+&tb, プロンプト="コピーするファイルを指定します", 許可作業=*,&file if (&file <> "") キー入力 (10,10),プロンプト="書き出す表の名前を指定します。", モード=全角, 上書き=する, 初期値="O社員結合", 終了状態=&end,&temp if (&temp <>"") &temp = #COND(#文字位置(&temp,".")>0,#SSTR(&temp,1,#文字位置(&temp,".")-1),1,&temp),&fold = &file call 定義ファイル変換( &file , &temp ) 表作成 &temp, 定義ファイル = &file , データファイル = &temp + "temp" + &k3 , モード=専有, 終了状態 = &end cond ( #IS表 > 0 ) 終了 表 #IS表 call 列表示条件設定( &fold , &temp ) 表形式編集 cond ( #IS表 > 0 ) 終了 表 #IS表 end end end Proc 定義ファイル変換( 参照 Str &定義file ,Str &整形前 ) var Int { &終了[4] , &item , &cnt , &tbl } , Str { &Q = """" , &C = "," } var Str { &QCQ = &Q + &C + &Q } if ( #FSIZE( &整形前 + ".txt") > 0 ) ファイル削除 &整形前 + ".txt", 終了状態 = &終了[3] if ( &終了[3] <> 0 ) 確認 "ファイル削除エラー番号 "+ #STR(&終了[3]) 手続き終了 end end if ( #FSIZE( &整形前 + &k3 ) > 0 ) ファイル削除 &整形前 + &k3, 終了状態 = &終了[2] if ( &終了[2] <> 0 ) 確認 "ファイル削除エラー番号 "+ #STR(&終了[2]) 手続き終了 end end 表 表 &定義file &item = #項目数 , &tbl = #IS表 印字開始 &整形前 + ".txt" , 終了状態 = &終了[1] if ( &終了[1] = 0 ) 確認 "エラー番号 "+ #STR(&終了[1]) 終了 表 &tbl 手続き終了 else 繰り返し &cnt = 1 , &item , 1 印字 &Q + #項目属性( &cnt , 1 ) + &QCQ + #項目属性( &cnt , 2 ) + &Q 繰り返し終了 end 印字終了 改頁=しない 書き出し K3 , &整形前 + "temp", 項目名 = しない , 終了状態 = &終了[4] , * if ( &終了[4] = -2 ) 確認 "エラー 排他エラー(ファイルが既にオープン中)" 終了 表 &tbl 手続き終了 else if ( &終了[4] = 0 ) 確認 " 0 : その他のエラー" 終了 表 &tbl 手続き終了 end 終了 表 &tbl ファイル名変更 &整形前 + ".txt",&整形前 + &k3 , 終了状態 = &終了[3] if ( &終了[3] <> 0 ) 確認 "ファイル名変更エラー番号 "+ #STR(&終了[3]) 手続き終了 else &定義file = &整形前 + &k3 end End
Proc 列表示条件設定( Str &元表 ,Str &変更 ) 表 &元表 var int { &num = #項目数 + 5 , &終了[4] , &cnt = 1 , &tbx , &no = #処理条件数( 1 ) } var Str { &txt = &変更+".txt" , &st , &lin[ &num ] , &名 } if ( &no < 1 ) &名 = "表示条件01" , &tbx = &no 表示条件書き出し 条件名 = &名 end &no = #処理条件数( 1 ) if ( &no <1 ) 終了 表 編集対象表 手続き終了 表 &変更 else &名 = #処理条件名( 1 , 1 ) if ( &no > 1 ) for &cnt = 2 , &no , 1 &名 = &名 + "," + #処理条件名( 1 , &cnt ) end &no = #処理条件名検索( 1 , """") &名 = #cond(&no<>#U, """", 1 , #処理条件名( 1 , &no ) ) end end 印字開始 &txt , 終了状態 = &終了[2] if ( &終了[2]<>1) 確認 "エラー番号 " + #STR(&終了[2]) + #対応文字列(" 共有違反の時, エラー終了の時",&終了[2] + 2 ) 終了 表 編集対象表 印字終了 表 &変更 手続き終了 else 条件印字 表示,項目番号出力=しない,&名 end 印字終了 /* ↓作った物の後始末 初期値が0だったので削除 */ 条件 ( &tbx = 0) 表示条件削除 &名 終了 表 編集対象表 表 &変更 ファイル入力開始 &txt , 終了状態 = &cnt if ( &cnt <> 1 ) 確認 "エラー番号 " + #STR(&終了[1]) + #対応文字列(" 共有違反の時, その他のエラー時",&終了[1] + 2 ) 終了 表 編集対象表 手続き終了 else while ( &終了[2] = 1 ) ファイル入力 &st , 行 , 終了状態 = &終了[2] &終了[3] = #cond( #文字位置( &st ,"\" ) > 0 , #NVL(&終了[3],0) + 1 , 1 , 0 ) &lin[&cnt]=&lin[&cnt] + #cond(&終了[3]<1,&st,1,#文字列反転(#SSTR(#文字列反転(#trim(&st,3)),2))) 条件 ( (&終了[3] = 0 ) * ( &lin[&cnt] <> "") > 0 ) コマンド &lin[ &cnt ] &cnt = #cond( &終了[3] > 0 , &cnt , 1 , &cnt + 1 ) end end ファイル入力終了 表示条件読み込み 条件名 = &名 , 開始条件 = 無効 End
|