共用ルーチン(レコード操作、Excel互換)

レコードの挿入・書換・検索・削除、Excel互換

ご自由にテストください

共用ルーチンの組込利用により、本プログラムの作成が簡明になります。

このテストプログラムは、下記定型規格(データファイル・フォーマット)に適合した可変長ファイルすべてにつき適用できます。
ファイルの選択 (形式別にテストファイルを用意)
ファイル(テスト用)昇降順コード
   (「選択」により下の各データファイルアドレスが入力されます)
可変長ファイル
../03data/cg-03vi.txtコード、昇順inc
../03data/cg-03vd.txtコード、降順dec
../03data/cg-03vl.txt番号、昇順、最後の行に追加lst
../03data/cg-03vf.txt番号、降順、最初の行に追加fst
ファイル(他のプログラムから)
   (「選択」により下の各データファイルアドレスが入力されます)
   
   (下記フォーマット規格に準拠するデータファイル、キーの長さ(6以上)、
    項目数(このテストでは20まで)、その他の仕様は各プログラムの設定による)
  1. ファイルの表示 (JavaScript による)
    データファイル(URL)名:(上記、「選択」で入力されます)



  2. ファイルの読取 (cg_00io30.pl による)
    データファイルアドレス:(上記、「選択」で入力されます)


  3. ファイルのフォーマット取得・フォーマットチェック
    データファイルアドレス:(上記、「選択」で入力されます)


    フォーマット取得(最初2行)、 全行チェック
  4. データの挿入、書替
    データファイルアドレス:(上記、「選択」で入力されます)


    キー:(コード、番号)

    挿入の場合番号キーは入力不要、長さは規定(この例では半角6字)、
    また、「 - 」「 _ 」を除く半角記号は避けてください。

    データ(4項目):
    文字 
    数値 
    数値 
    文字 

     挿入、    書替
  5. データの検索・削除
    データファイルアドレス:(上記、「選択」で入力されます)


    キー(コード・番号):先頭からの部分を記入すれば、その対象レコードは複数になることがあります
           

     検索、    削除
  6. Excelファイル(タブ切りTEXT)のアップロード・変換
    Excel原 Excel ファイルは下記の基準ファイルと同じ項目構成(番号キー欄は空白)、データは3行目以降で準備、「タブ区切りTEXT」で保存
    原タブ区切りTEXT
    アップロード後
    タブ区切り
    TEXTアドレス
    $upexcel../03excel/up.txt (既存の上書き可)
    変換後データ
    ファイルアドレス
    $datafile../03excel/.txt  (既存の上書き可)
    基準
    ファイル
    アドレス
    $basefile../03excel/.txt
    「inc」を「dec, lst, fst」に置換してテストください
    サブルーチン&fl_upexcel($upexcel,$datafile,$basefile);
    (文字列区切りコード回避)$_ =~ s/\"\"/”/g;(「""」を「"」に)
    $_ =~ s/\"//g;      (「"」を削除)
    $_ =~ s/\'/’/g;
    (HTMLタグコード回避)$_ =~ s/</&lt;/g;)
    $_ =~ s/>/&gt;/g;
    (項目間区切りタブを変更)$_ =~ s/\t/_SP_/g;
    (日本語コード変換 - UTF-8)$_ = Jcode->new($_)->h2z->utf8;
    結 果アップロード後タブ切りTEXT変換後データファイル
    $errmsg別画面表示(項目構成不正、キー重複)
  7. Excel用ファイル(タブ切りTEXT)のダウンロード前変換
    原データ
    ファイル
    アドレス
    $datafile../03excel/.txt
    変換後タブ切り
    TEXTアドレス
    $dnexcel../03excel/dn.txt (既存の上書き可)
    サブルーチン&fl_dnexcel($datafile,$dnexcel);
    (文字列区切りコード復元)$f1_LINES[$i] =~ s/&rdquo;/\"/g;
    $f1_LINES[$i] =~ s/&rsquo;/\'/g;
    (項目間区切りをタブに変更)$f1_LINES[$i] =~ s/_SP_/\t/g;
    (HTML表示用「改行」削除)$f1_LINES[$i] =~ s/<br \/>//g;
    結 果変換後タブ切りTEXT
    「名前をつけて保存」、Excelで「開く」、「区切り文字(タブ)」、「文字列の引用符(なし)」、「列のデータ形式(文字列)」(右クリックは不可)

データファイル・フォーマット(可変長)

サンプルフォームcg-03v0.txt
1)ファイル名3字目は " - "
2)第 0 行
  項目名
第0項目「inc」:昇順コード
「inctrs」:時系列
「incthd」:スレッド (主副分離は「_」)
「dec」:降順コード
「lst」:昇順番号・末尾追加( 1 - )
「fst」:降順番号・先頭追加( - 1 )
3)第 1 行
  フォーマット
第0項目キー:6桁以上
「//////」:昇順コード
「||||||」:降順コード
「//////」:昇順番号・末尾追加( 1 - )
「||||||」:降順番号・先頭追加( - 1 )
4)全行
(第 0/1行含む)
文字数合計自由
項目数規定項目数
項目分離_SP_
キー
第0項目
キー:重複不可、、「 - 」「 _ 」を除く半角記号は回避
固定長(コード:過不足入力の場合のチェックまたは事前の自動調整要)
その他項目可変長
項目内の「改行」は事前に<br />に
最終項目END「\n 改行」

ファイル操作・共用プログラム( cg_00fx30.pl )操作明細

  1. フォーマット取得・チェック
    事前指定変数
    $file1ファイルアドレス
    サブルーティン
    取得(最初の2行)
    チェック(全行)
    &fl_fileformat($file1)
    &fl_filecheck($file1)
    操作結果(グロバール変数)
    $f1_fileファイルアドレス(=$file1)
    $f1_filenameファイル名
    $f1_type="var"(可変長)
    $f1_colnmbr項目数
    $f1_line0第0行目レコード
    $f1_line1第1行目レコード
    @f1_title項目名(第0行目)
    @f1_formatフォーマット(第1行目、主に、固定長)
    $f1_order="inc"、="dec"、="lst"、="fst"
    $f1_ordermark="/"("inc"、"lst")、="|"("dec"、="fst")
    $f1_order2="trs"、="thd"
    $keylenキー字数(半角6字以上、「 - 」「 _ 」(スレッドの場合不可)以外の記号を除く)
    $f1_linenmbrレコード行数(第 0/1行含む)
    $errmsg(ローカル)不調の場合のコメント、順調の場合は「 "" 」

  2. 挿入・書換(単一レコード)
    事前指定変数
    $file1ファイルアドレス
    @data[0 - ]データ
    キー($data[0])は挿入(「lst,fst」)の場合、番号キー空白
    配列:項目順、項目内の改行コードは<br /> に自動変換
    エラー中断 $out="err"(エラーコメントを画面表示、管理メールの後、中断)
    サブルーティン
    挿入
    書換
    (レコード作成のみ)
    $errmsg=&fl_rcrdinsert($file1,$out)
    $errmsg=&fl_rcrdrewrite($file1,$out)
    &fl_rcrdform
    操作結果
    $f1_recordレコード
    $f1_key挿入(「lst/fst」)の場合、番号キー
    return($errmsg)不調の場合のコメント、順調の場合は「 "" 」

  3. 検索・削除(複数レコード)
    事前指定変数
    $file1ファイルアドレス
    $keynmbrキー総数
    @keylist[0 - ]全キーリスト (先頭からの部分可)
    サブルーティン
    検索
    削除
    &fl_rcrdsearch($file1)
    &fl_rcrddelete($file1)
    操作結果
    $f2_rcrdnmbr(該当)レコード総数
    @f2_rcrdlist[0 - ](該当)レコードリスト
    $f8_keynmbr(該当なし)キー総数
    @f8_keylist[0 - ](該当なし)キーリスト(該当なし)


プログラムご希望の方は:

  1. このサーバーでは
    パスファイル
    /home/ sr_cntrl30.css
    STYLESHEET
    basiccgi30/ cntrl/cg_0330.html
    cg_03lock30.txt
    本ページ
    ロックファイル
    cgi-bin/ cg_0330.cgi

    cg_00io30.pl
    cg_00st30.pl
    cg_00fl30.pl
    本(テスト用)プログラム
    共用ルーチン
      入出力操作
      ファイル操作
      文字列操作
    03data/データファイル
    03upexcel/Excel関連ファイル
  2. キーに「 _ 」を除く半角記号が含まれる場合は
    if($key =~ /\W/){ ................ }
    により除外できます。 
  3. CGI共用ルーチンでは、原則として、橋渡しのグローバル変数名には通常「 _ 」を含み、内部変数はローカル「 my 」または「 local 」設定をしています。

  4. .htaccess、CGI(.cgi/.pl)、StyleSheet(.css)、JavaScript(.js)ファイルは内容表示のために、仮の拡張子「.txt]を使用しています。
    HTML ファイルのソースコードの参照は、画面右クリック「ソースの表示」で。

  5. 要確認・変更箇所は、HTML、CGI 両ファイル上に
    ====begin===================
    ====end=====================
    で明記してあります。
    (特に、サーバにより各ファイル・URLのパス設定が異なります。)
トップへ
W3C/xhtml:OK   14年 02月 27日改訂  ご批評・ご意見賜りたく(表紙へ)