概要
本番も近くなると『このLF、キーなんだっけ?』とドキュメントを開く時間も無くなります。
で、DSPFD でキーフィールド名調べて、PF のソース見て項目名確認したりします。
のが、面倒なので、まとめてやってくれるスクリプトを作りました。
ライブラリも、面倒なのでライブラリリスト指定で一番上を見に行きます。
本番も近くなると『このLF、キーなんだっけ?』とドキュメントを開く時間も無くなります。
で、DSPFD でキーフィールド名調べて、PF のソース見て項目名確認したりします。
のが、面倒なので、まとめてやってくれるスクリプトを作りました。
ライブラリも、面倒なのでライブラリリスト指定で一番上を見に行きます。
このページに書かれている事を実行して、何が起こっても私は知りません。
まぁ、このページに到達された方なら大丈夫でしょうけど(^o^)。
スクリプト re974001.hta の固定値をご自分の環境に合わせて変更し、そのディレクトリに UDB_Dic というディレクトリを作ってから、スクリプトを起動して下さい。
左上には調べたいファイル名、縦長のテキストボックスには調べたいライブラリリストを指定して下さい。
DSPFDとDSPFFDを実行して、結果をそれっぽく表示します。
UDB_Dic ディレクトリには、項目名情報テキストを格納します。『項目名再取得』のチェックを入れると作り直します。
『オブジェクト情報』のチェックを入れるとDSPOBJDの結果もそれっぽく表示します。
DDS名の4桁表示は、おまけです。まぁ、適当にソースいじって下さい。
iSeries Access とか Client Access は、自力でインストールして下さい。
[re974001.hta:ここから]====================================================================== <html> <head> <HTA:APPLICATION APPLICATIONNAME="AS/400 DSPFD表示" ICON="wiaacmgr.exe" /> <style type="text/css"> <!-- body,select,input,td,textarea { font-family : monospace; font-size : 100%; } h1 { margin-top : 0.5em; padding-top : 0.2em; padding-bottom : 0.2em; margin-bottom : 0.2em; padding-left : 1 em; color : #3333ff; background-color : #99ffff; font-size : 130%; } table.soto_waku { margin-left : 1 em; border-style : solid none none solid ; border-width : 0pix ; } table.naka_waku { margin-left : 1em; border-style : solid none none solid ; border-width : 1pix ; } td.naka_waku { margin-top : 0em; margin-bottom : 0em; text-align : center; border-style : none solid solid none ; border-width : 1pix ; } textarea.cmd_list { font-family : monospace; } input.text { width : 8em; } input.button { font-size : 80%; } span.UL { text-decoration : underline; } --> </style> </head> <body onload="S_onload_proc()" onkeyup="S_Keyup_on_body()"> <form id="form_main" onsubmit=""> <h1 id="page_title"></h1> <table class="soto_waku" ><tr> <td class="soto_waku" valign="top"> <input class="text" name="Target_file" accesskey="f" value="TOKMASL"/> <br> <input class="button" name="Execute" type="button" onclick="S_AS_commands_check()" value="(F10)表示"/> <br> <textarea class="cmd_list" id="Target_libl" rows="14" cols="10"> QTEMP DTALIB1 DTALIB2 QGPL </textarea> <br> <select name="connect_AS" size="1" accesskey="a" > <option value="192.168.100.100" selected>自社</option> <option value="192.168.100.110" >客先</option> </select> <br> <input class="text" name="connect_user" accesskey="u" /> <br> <input class="text" name="connect_pass" accesskey="w" type="password" /> <br> <input id="Special_Font" type="checkbox" onclick="S_Click_Special_Font()" checked><label for="Special_Font">特殊フォント</label> <br> <input id="Reget_field_name" type="checkbox" ><label for="Reget_field_name">項目名再取得</label> <br> <input id="DSPOBJD" type="checkbox" ><label for="DSPOBJD">オブジェクト情報</label> </td> <td class="soto_waku" valign="top"> 基本情報 <table id="BASE" title="基本情報(BASATR・MBR)" class="naka_waku" cellspacing="0"></table> 並び順 <table id="ACCPTH" title="並び順(ACCPTH)" class="naka_waku" cellspacing="0"></table> 選択条件 <table id="SELECT" title="選択条件(SELECT)" class="naka_waku" cellspacing="0"></table> オブジェクト情報 <table id="OBJECT" title="オブジェクト情報(DSPOBJD)" class="naka_waku" cellspacing="0"></table> </td> </tr></table> </form> <script language="VBScript"> option explicit Const C_title_text = "AS/400 DSPFD表示 V1.1" Const C_initial_width = 630 Const C_initial_height = 580 Const C_DFT_AS_SYSTEM = "192.168.100.100" Const C_DFT_AS_UID = "USERID" Const C_DFT_AS_PWD = "PASSWORD" Const C_FD_outfile_lib = "QGPL" 'DSPFD の OUTFILE 格納ライブラリ。QTEMP 不可。 Const C_FD_BASATR_file = "FD_BASATR" 'DSPFD の OUTFILE 格納ファイル名:BASATR Const C_FD_MBR_file = "FD_MBR" 'DSPFD の OUTFILE 格納ファイル名:MBR Const C_FD_ACCPTH_file = "FD_ACCPTH" 'DSPFD の OUTFILE 格納ファイル名:ACCPTH Const C_FD_SELECT_file = "FD_SELECT" 'DSPFD の OUTFILE 格納ファイル名:SELECT Const C_OBJD_file = "DSPOBJDOUT" 'DSPOBJD の OUTFILE 格納ファイル名 Const CA_BASATR_Fields = "ATFILE,ATLIB,ATFTYP,ATTXT" 'BASATR から必要な項目を並べる。 Const CA_MBR_Fields = "MBBOF,MBBOL,MBNRCD,MBBOLF" 'MBR から必要な項目を並べる。 Const CA_ACCPTH_Fields = "APKEYN,APKEYF,APKSEQ" 'ACCPTH から必要な項目を並べる。 Const CA_SELECT_Fields = "SORULE,SOFLD,SOCOMP,SOVALU" 'SELECT から必要な項目を並べる。 Const CA_OBJD_Fields = "ODCDAT,ODCTIM,ODSRCD,ODSRCT,ODSRCL,ODSRCF,ODSRCM" 'OBJDOUT から必要な項目を並べる。 Const CA_BASATR_title = "ファイル,ライブラリ,タイプ,テキスト" 'BASATR から必要な項目を並べる。 Const CA_MBR_title = "物理ファイル,ライブラリ,件数,レコード様式名" 'MBR から必要な項目を並べる。 Const CA_ACCPTH_title = ",項目,A/D" 'ACCPTH から必要な項目を並べる。 Const CA_SELECT_title = "選択除外,項目,比較,値" 'SELECT から必要な項目を並べる。 Const CA_OBJD_title = "ファイル作成日,ファイル作成時刻,ソース変更日,ソース変更時刻,ソースライブラリ,ソースファイル,ソースメンバー" 'OBJDOUT から必要な項目を並べる。 Const C_Dic_path = "UDB_Dic\" 'fdf 格納ディレクトリ。スクリプトのあるディレクトリの中に作ってね。末尾には \ を。 Const C_Dic_ext = ".txt" 'fdf 定義ファイル拡張子。dds名、項目名のタブ区切りテキストです。 Const C_ffd_outfile_name = "DSPFFDOUT" Const C_Normal_Font = "monospace" Const C_Special_Font = "エミュレータフォント:ゴシック,monospace" dim G_AS400,G_AS_CMD dim G_Target_file dim L_ADO_con dim rt,i dim LA_commands() dim LA_Libl() dim L_constr '-------------------------------------------------------------------------------- '『表示』ボタン押下時の処理 Sub S_AS_commands_check() Err.Clear G_Target_file = trim(document.all("Target_file").value) if G_Target_file = "" then S_OK_msg "ファイル名を指定して下さい。" exit sub end if 'AS/400接続 Call S_AS_connect() If Err.Number <> 0 Then exit sub 'ライブラリリスト設定&DSPFDOUT Call S_AS_cmd_execute() If Err.Number <> 0 Then exit sub end sub '-------------------------------------------------------------------------------- 'ライブラリリスト設定&DSPFDOUT sub S_AS_cmd_execute() dim L_Libl_str dim LA_temp_Libl,L_temp_Lib dim L_cmd_str dim L_ADO_con,L_RS dim L_SQL_str dim L_cur_row,L_cell_data dim L_ATFTYP,L_PF_name,L_PF_lib dim L_column_dic dim LA_temp_fields dim L_temp_text ' On Error Resume Next '結果テーブルの初期化 '1行目はタイトル行なので、削除しません。 For i = (document.all("ACCPTH").rows.length - 1) to 1 Step - 1 document.all("ACCPTH").deleteRow(i) Next For i = (document.all("SELECT").rows.length - 1) to 1 Step - 1 document.all("SELECT").deleteRow(i) Next 'オブジェクト情報テーブルは取り合えず、全行消します。 For i = (document.all("OBJECT").rows.length - 1) to 0 Step - 1 document.all("OBJECT").deleteRow(i) Next 'で、表示する必要があるなら、用意しときます。 if document.all("DSPOBJD").checked then 'オブジェクト情報テーブル Call S_Initialize_2retsu_table(CA_OBJD_Fields,CA_OBJD_title,"OBJECT") end if err.clear '初期ライブラリリストの設定 if document.all("Target_libl").value <> "" then L_Libl_str = "" 'オブジェクト名配列の作成:LA_objects LA_temp_Libl = Split(document.all("Target_libl").value,vbcrlf) for i = 0 to UBound(LA_temp_Libl) 'それぞれのメンバー毎の処理 L_temp_Lib = trim(LA_temp_Libl(i)) if ( ( L_temp_Lib <> "" ) and ( left(L_temp_Lib,1) <> "#" ) ) then L_Libl_str = L_Libl_str & " " & L_temp_Lib end if next '実際のライブラリリストの変更 if L_Libl_str <> "" then L_cmd_str = "CHGLIBL (" & L_Libl_str & ")" G_AS_CMD.run L_cmd_str If Err.Number <> 0 Then Call S_Err_msg(L_cmd_str) '結果メッセージの表示 Exit sub end if end if end if 'ADOによるレコードセットに対する処理 Set L_ADO_con = F_Set_ADO_con() Set L_RS = CreateObject("ADODB.Recordset") L_RS.CursorType = 0 'adOpenForwardOnly L_RS.LockType = 1 'adLockReadOnly 'BASATR項目の表示 Call S_Display_2retsu_table(L_ADO_con,L_RS,"BASATR",C_FD_BASATR_file,CA_BASATR_Fields) If Err.Number <> 0 Then exit sub '後で使う項目を取っときます。 L_ATFTYP = L_RS.fields.item("ATFTYP") L_PF_name = trim(L_RS.fields.item("ATFILE")) L_PF_lib = trim(L_RS.fields.item("ATLIB")) L_RS.Close 'MBR項目の表示 Call S_Display_2retsu_table(L_ADO_con,L_RS,"MBR",C_FD_MBR_file,CA_MBR_Fields) If Err.Number <> 0 Then exit sub '後で使う項目を取っときます。 if trim(L_RS.fields.item("MBBOF")) <> "" then L_PF_name = trim(L_RS.fields.item("MBBOF")) if trim(L_RS.fields.item("MBBOL")) <> "" then L_PF_lib = trim(L_RS.fields.item("MBBOL")) L_RS.Close 'L_PF_name を元に、ディクショナリ作成 Set L_column_dic = F_create_column_dic(L_PF_name,L_PF_lib) 'DDS名変換ディクショナリ定義 'ACCPTHテーブル Call S_Display_Ichiran_table(L_ADO_con,L_RS,L_column_dic,"ACCPTH","APKEYF",CA_ACCPTH_Fields,C_FD_ACCPTH_file) If Err.Number <> 0 Then exit sub 'SELECTテーブル if L_ATFTYP <> "P" then Call S_Display_Ichiran_table(L_ADO_con,L_RS,L_column_dic,"SELECT","SOFLD",CA_SELECT_Fields,C_FD_SELECT_file) If Err.Number <> 0 Then exit sub end if 'DSPOBJD項目の表示 if document.all("DSPOBJD").checked then 'オブジェクト情報テーブル Call S_Display_2retsu_table(L_ADO_con,L_RS,"OBJECT",C_OBJD_file,CA_OBJD_Fields) If Err.Number <> 0 Then exit sub L_RS.Close 'mmddyy → yymmdd L_temp_text = document.all("ODCDAT").innerHTML document.all("ODCDAT").innerHTML = right(L_temp_text,2) & "/" & left(L_temp_text,2) & "/" & mid(L_temp_text,3,2) L_temp_text = document.all("ODCTIM").innerHTML document.all("ODCTIM").innerHTML = left(L_temp_text,2) & ":" & mid(L_temp_text,3,2) & ":" & right(L_temp_text,2) L_temp_text = document.all("ODSRCD").innerHTML document.all("ODSRCD").innerHTML = left(L_temp_text,2) & "/" & mid(L_temp_text,3,2) & "/" & right(L_temp_text,2) L_temp_text = document.all("ODSRCT").innerHTML document.all("ODSRCT").innerHTML = left(L_temp_text,2) & ":" & mid(L_temp_text,3,2) & ":" & right(L_temp_text,2) ' msgbox document.all("ODCDAT").innerHTML end if L_ADO_con.close Set L_column_dic = nothing Set L_ADO_con = nothing On Error Goto 0 end sub '-------------------------------------------------------------------------------- '2列表示型のテーブル表示(BASATR・MBR sub S_Display_2retsu_table(P_ADO_con,P_RS,P_Table_id,P_FD_file,PA_Fields) dim L_cmd_str dim L_SQL_str dim LA_temp_fields,L_temp_text 'DSPFD−BASATR if P_Table_id = "OBJECT" then L_cmd_str = "DSPOBJD " & G_Target_file & " *FILE OUTPUT(*OUTFILE) " else L_cmd_str = "DSPFD " & G_Target_file & " *" & P_Table_id & " *OUTFILE " end if L_cmd_str = L_cmd_str & "OUTFILE(" & C_FD_outfile_lib & "/" & P_FD_file & ")" G_AS_CMD.run L_cmd_str If Err.Number <> 0 Then Call S_Err_msg(L_cmd_str) '結果メッセージの表示 Exit sub end if 'BASATR L_SQL_str = "Select " & PA_Fields & " from " & C_FD_outfile_lib & "." & P_FD_file P_RS.Open L_SQL_str,P_ADO_con,,,&H0001 'adCmdText If Err.Number <> 0 Then Call S_Err_msg(L_SQL_str) '結果メッセージの表示 exit sub end if 'テーブル項目の表示 LA_temp_fields = Split(PA_Fields,",") For i = 0 to UBound(LA_temp_fields) 'それぞれのメンバー毎の処理 L_temp_text = trim(P_RS.fields.item(LA_temp_fields(i))) if L_temp_text = "" then L_temp_text = "-" document.all(LA_temp_fields(i)).innerText = L_temp_text next 'レコードセットの項目を使ったりするので、クローズは外でやります。 end sub '-------------------------------------------------------------------------------- '一覧表示型のテーブル表示(ACCPTH・SELECT sub S_Display_Ichiran_table(P_ADO_con,P_RS,P_column_dic,P_TABLE_id,P_Key_field,PA_Fields,P_FD_file) dim L_cmd_str dim L_SQL_str dim L_cur_row,L_cell_data 'DSPFDコマンド実行 L_cmd_str = "DSPFD " & G_Target_file & " *" & P_TABLE_id & " *OUTFILE " L_cmd_str = L_cmd_str & "OUTFILE(" & C_FD_outfile_lib & "/" & P_FD_file & ")" G_AS_CMD.run L_cmd_str If Err.Number <> 0 Then Call S_Err_msg(L_cmd_str) '結果メッセージの表示 Exit sub end if 'SQL文を元に、一覧表示 L_SQL_str = "Select " & PA_Fields & " from " & C_FD_outfile_lib & "." & P_FD_file P_RS.Open L_SQL_str,P_ADO_con,,,&H0001 'adCmdText If Err.Number <> 0 Then Call S_Err_msg(L_SQL_str) '結果メッセージの表示 exit sub end if Do While ( Not P_RS.EOF ) 'DDS名配列・属性配列・値配列です。 rt = document.all(P_TABLE_id).insertRow() L_cur_row = document.all(P_TABLE_id).rows.length - 1 For i = 0 To (P_RS.Fields.Count -1) Step 1 rt = document.all(P_TABLE_id).rows(L_cur_row).insertcell() document.all(P_TABLE_id).rows(L_cur_row).cells(i).classname = "naka_waku" '項目表示 L_cell_data = trim(P_RS(i)) if L_cell_data = "" then L_cell_data = "-" document.all(P_TABLE_id).rows(L_cur_row).cells(i).innerHTML = L_cell_data Next '項目名 rt = document.all(P_TABLE_id).rows(L_cur_row).insertcell() document.all(P_TABLE_id).rows(L_cur_row).cells(P_RS.Fields.Count).classname = "naka_waku" document.all(P_TABLE_id).rows(L_cur_row).cells(P_RS.Fields.Count).innerHTML = P_column_dic.item(trim(P_RS.fields.item(P_Key_field))) '末尾4桁 rt = document.all(P_TABLE_id).rows(L_cur_row).insertcell() document.all(P_TABLE_id).rows(L_cur_row).cells(P_RS.Fields.Count+1).classname = "naka_waku" document.all(P_TABLE_id).rows(L_cur_row).cells(P_RS.Fields.Count+1).innerHTML = right(trim(P_RS.fields.item(P_Key_field)),4) P_RS.MoveNext Loop P_RS.Close end sub '-------------------------------------------------------------------------------- 'AS/400接続 sub S_AS_connect() Set G_AS400 = createobject("cwbx.AS400System") G_AS400.define document.all("connect_AS").value G_AS400.UserID = document.all("connect_user").value G_AS400.Password = document.all("connect_pass").value Set G_AS_CMD = createobject("cwbx.Command") Set G_AS_CMD.system = G_AS400 end sub '-------------------------------------------------------------------------------- ' Bodyでのキーアップイベント → F10 で実行 sub S_Keyup_on_body() 'F10 if window.event.keyCode = 121 then document.all("Execute").onclick end sub '-------------------------------------------------------------------------------- sub S_onload_proc() dim LA_temp_fields,LA_temp_title dim L_cur_row '初期値設定 document.title = C_title_text document.all.page_title.innerText = C_title_text rt = window.resizeTo(C_initial_width,C_initial_height) document.all("connect_AS").value = C_DFT_AS_SYSTEM document.all("connect_user").value = C_DFT_AS_UID document.all("connect_pass").value = C_DFT_AS_PWD 'フォント初期設定 Call S_Click_Special_Font() 'テーブル初期配置 '基本情報テーブル Call S_Initialize_2retsu_table(CA_BASATR_Fields,CA_BASATR_title,"BASE") 'メンバー情報テーブル Call S_Initialize_2retsu_table(CA_MBR_Fields,CA_MBR_title,"BASE") '並び順情報テーブル Call S_Initialize_Ichiran_table(CA_ACCPTH_title,"ACCPTH") '選択条件情報テーブル Call S_Initialize_Ichiran_table(CA_SELECT_title,"SELECT") 'オブジェクト情報テーブル if document.all("DSPOBJD").checked then Call S_Initialize_2retsu_table(CA_OBJD_Fields,CA_OBJD_title,"OBJECT") end if end sub '-------------------------------------------------------------------------------- '一覧表示型のテーブル初期表示(BASATR・MBR sub S_Initialize_2retsu_table(PA_Fields,PA_title,P_Table_id) dim LA_temp_fields,LA_temp_title dim L_cur_row LA_temp_fields = Split(PA_Fields,",") LA_temp_title = Split(PA_title,",") For i = 0 to UBound(LA_temp_fields) 'それぞれのメンバー毎の処理 '行追加 rt = document.all(P_Table_id).insertRow() L_cur_row = document.all(P_Table_id).rows.length - 1 'タイトルセル追加 rt = document.all(P_Table_id).rows(L_cur_row).insertcell() document.all(P_Table_id).rows(L_cur_row).cells(0).classname = "naka_waku" document.all(P_Table_id).rows(L_cur_row).cells(0).innerHTML = LA_temp_title(i) '値セル追加 rt = document.all(P_Table_id).rows(L_cur_row).insertcell() document.all(P_Table_id).rows(L_cur_row).cells(1).classname = "naka_waku" document.all(P_Table_id).rows(L_cur_row).cells(1).id = LA_temp_fields(i) document.all(P_Table_id).rows(L_cur_row).cells(1).innerHTML = LA_temp_fields(i) next end sub '-------------------------------------------------------------------------------- '一覧表示型のテーブル初期表示(ACCPTH・SELECT sub S_Initialize_Ichiran_table(PA_title,P_TABLE_id) dim LA_temp_title '並び順情報テーブル LA_temp_title = Split(PA_title,",") '行追加 rt = document.all(P_TABLE_id).insertRow() '1行目 For i = 0 to UBound(LA_temp_title) 'それぞれのメンバー毎の処理 'タイトルセル追加 rt = document.all(P_TABLE_id).rows(0).insertcell() document.all(P_TABLE_id).rows(0).cells(i).classname = "naka_waku" document.all(P_TABLE_id).rows(0).cells(i).innerHTML = LA_temp_title(i) next rt = document.all(P_TABLE_id).rows(0).insertcell() document.all(P_TABLE_id).rows(0).cells(i).classname = "naka_waku" document.all(P_TABLE_id).rows(0).cells(i).innerHTML = "テキスト" rt = document.all(P_TABLE_id).rows(0).insertcell() document.all(P_TABLE_id).rows(0).cells(i+1).classname = "naka_waku" document.all(P_TABLE_id).rows(0).cells(i+1).innerHTML = "4桁" end sub '-------------------------------------------------------------------------------- Sub S_Click_Special_Font() 'フォント指定変更時の処理 dim L_selectorText for i = 0 to document.styleSheets(0).rules.length - 1 L_selectorText = document.styleSheets(0).rules(i).selectorText if L_selectorText = "BODY" or L_selectorText = "INPUT" or L_selectorText = "SELECT" or L_selectorText = "TD" or L_selectorText = "TEXTAREA" then if document.all("Special_Font").checked then document.styleSheets(0).rules(i).style.fontFamily = C_Special_Font else document.styleSheets(0).rules(i).style.fontFamily = C_Normal_Font end if end if next end sub '-------------------------------------------------------------------------------- sub S_OK_msg(P_msg) msgbox P_msg,0,C_title_text end sub '-------------------------------------------------------------------------------- sub S_Err_msg(P_msg) msgbox P_msg & vbcrlf & Err.Description,0,C_title_text end sub '-------------------------------------------------------------------------------- Sub S_create_ffdf(P_PF_Name,P_PF_lib,P_ffd_file_path,P_dic) '項目名定義ファイルの作成 dim L_cmd_str,L_SQL_str dim L_ADO_con,L_RS dim L_fso,L_write_file 'DSPFFDのOUTFILE出力 dspffd &L/&N *outfile outfile(qgpl/dspffdout) L_cmd_str = "DSPFFD " & P_PF_lib & "/" & P_PF_Name & " *OUTFILE OUTFILE(" & C_FD_outfile_lib & "/" & C_ffd_outfile_name & ")" G_AS_CMD.run L_cmd_str If Err.Number <> 0 Then Call S_Err_msg(L_cmd_str) '結果メッセージの表示 Exit sub end if 'ADOによるレコードセットに対する処理 Set L_ADO_con = F_Set_ADO_con() Set L_RS = CreateObject("ADODB.Recordset") L_RS.CursorType = 0 'adOpenForwardOnly L_RS.LockType = 1 'adLockReadOnly 'SQL文を元に、テキストファイル作成 L_SQL_str = "Select WHFLDI,WHFTXT from " & C_FD_outfile_lib & "." & C_ffd_outfile_name L_RS.Open L_SQL_str,L_ADO_con,,,&H0001 'adCmdText If Err.Number <> 0 Then Call S_Err_msg(L_SQL_str) '結果メッセージの表示 exit sub end if Set L_fso = CreateObject("Scripting.FileSystemObject") Set L_write_file = L_fso.OpenTextFile(P_ffd_file_path,2,true) Do While ( Not L_RS.EOF ) L_write_file.WriteLine trim(L_RS.fields.item("WHFLDI")) & vbtab & trim(L_RS.fields.item("WHFTXT")) P_dic.add trim(L_RS.fields.item("WHFLDI")),trim(L_RS.fields.item("WHFTXT")) L_RS.MoveNext Loop L_write_file.Close Set L_fso = nothing L_RS.Close Set L_RS = nothing Set L_ADO_con = nothing end sub '-------------------------------------------------------------------------------- Function F_Set_ADO_con() 'ADO接続定義の作成 dim L_Con_Str ' ODBC for AS/400 L_Con_Str = "DRIVER=Client Access ODBC Driver (32-bit);" L_Con_Str = L_Con_Str & " SYSTEM=" & document.all("connect_AS").value & ";" L_Con_Str = L_Con_Str & " UID=" & document.all("connect_user").value & ";" L_Con_Str = L_Con_Str & " PWD=" & document.all("connect_pass").value & ";" L_Con_Str = L_Con_Str & " SIGNON=" & document.all("connect_user").value & ";" On Error Resume Next Set F_Set_ADO_con = CreateObject("ADODB.Connection") F_Set_ADO_con.ConnectionString = L_Con_Str F_Set_ADO_con.ConnectionTimeout = 20 F_Set_ADO_con.Open If Err.Number <> 0 Then Call S_Err_msg(L_Con_Str) '結果メッセージの表示 end if On Error Goto 0 end Function '-------------------------------------------------------------------------------- Function F_create_column_dic(P_PF_Name,P_PF_lib) 'ファイル名をもらって、カラム名ディクショナリオブジェクトを作ります。 dim L_ffd_file_path dim LA_temp_array dim L_dic dim L_fso,L_file dim test '項目名定義ファイルパスの編集 L_ffd_file_path = left(document.location.pathname,InStrRev(document.location.pathname,"\")) & C_Dic_path & P_PF_Name & C_Dic_ext Set L_fso = CreateObject("Scripting.FileSystemObject") Set L_dic = CreateObject("Scripting.Dictionary") if (Not L_fso.FileExists(L_ffd_file_path) ) or document.all("Reget_field_name").checked then 'ディクショナリは参照渡しで帰ってきます。 CAll S_create_ffdf(P_PF_Name,P_PF_lib,L_ffd_file_path,L_dic) else 'ディクショナリ元ファイルが存在します。 Set L_file = L_fso.OpenTextFile(L_ffd_file_path,1) Do While L_file.AtEndOfLine <> True LA_temp_array = split(L_file.ReadLine,vbtab) L_dic.add LA_temp_array(0),LA_temp_array(1) Loop L_file.Close set L_file = nothing end if set F_create_column_dic = L_dic set L_dic = nothing set L_fso = nothing end Function '-------------------------------------------------------------------------------- </script> </body></html> [re974001.hta:ここまで]======================================================================