Complete Walker FastCGI

C言語とFETCHそしてFastCGIによるHTML5に対応したWEB-DBアプリケーションの世界へようこそ。
このWEBアプリケーション開発システムは、DB操作をまるでスタンドアロンのように操作することを目的として作成されました。
以下のサンプルプログラムはComplete Walker FastCGI にて生成されるコードのテスト用に開発しているプログラムです。
「宅配らくちん管理」のロゴをクリックするとサンプルプログラムを実行出来ます。

次のサンプルプログラムは郵便番号の検索を利用するサンプルです。郵便番号辞書はPostgreSQLデータベースで作成されています。

郵便番号辞書（入力から検索して画面に書き込む）
郵便番号をハイフン無しで入力して下さい。

都道府県 | 地区名と番地区域名

[注意事項]：「宅配らくちん管理」では操作上、郵便番号を入力時にEntreキーでは無くTABキーで決定して下さい。そうでないとsubmitされます。

Complete Walker FastCGI はC言語を利用したCGIプログラムの自動生成とデバッグログ出力/テスティング管理/差分管理/故障管理を行えます。 必要な環境は以下になります。 1)Linuxカーネル2.6.18以降 2)ncurses5.7(aseエディタがこのライブラリで作成されているため必須) 3)ksh(cms差分管理システムがこのシェルで作成されているため必須) 4)apache2以降のバージョン 5)postgreSQL 8.4以降のバージョン(C言語への埋め込みSQLを利用するのでECPGプリプロセッサのインストールは必須) 6)Google Chrome5.0以上 Opera10.0以降 FireFox 3.0以降 Safari5.01以降 IE8以降 7)FastCGI(現在fcgi2.4.0を利用しております) 8)libsubformHTML.a(本プログラムのメインライブラリです。テーブルの行列を操作しHTMLに関連付けます) 9)現在 HTML5.0の機能を追加中(生成されるソースコード中にHTMLの矛盾点がまだ少々有ります) ※libsubformHTML.aはComplete Walkerに含まれている機能です。 ※最大９９９９９行のDB行を操作可能 本システムは以下の長所があります。 ・HTML部分の生産性の低いC言語だが、DB関連のHTMLを生成するための開発効率は他のスクリプト言語よりむしろかなり早い。 ・生成されるプログラムの実行速度は非常に高速である。 ・分散開発がしやすい。 ・プログラムをSQL毎に分割出来るのでSQLが大きくならないため処理速度が早い。 ・SQL発行後自体FETCHカーソルでメモリ上にてC言語により処理出来るため、これが処理速度に非常に貢献している。 ・C言語のみでHTMLコードを生成するが、編集するコードの部分をswitch文ブロックで示しているため追加編集が明確になっている。 ・C言語のみでのWEB－DBプログラム記述が可能（PHP等のスクリプト言語は不要）。 ・DB設計自体がプログラム設計書になるため管理が楽である。 ・開発環境自体はインストール時システム設定ファイルを(/etc等に)設定する必要が無いためシステム全体の転居が簡単 。 ・開発時にはComplete Walkerの差分管理機能と故障管理機能を利用出来るのでバグやテスト時の問題処理がスムース。 ・セキュリティには最初にログイン画面を用いるとLinux及びDBのパスワード等多重防御を利用可能、さらにC言語を用いているため独自の暗号化も可能。 ・記述するjabascriptコードの量を最小限に抑えることが出来る。 なお、開発にあたっては以下の問題点があります。 ・DB設計から始めるためシステムの用件と開発しやすさをDB設計自体に上手に反映するのが難しい。（ACCESSでプロトタイプを作成しておくと良いかも） ・直接C言語を利用してCGIを作成するためプログラムの無限ループ等のバグに注意して作成する必要がある。 ・logctlプロセスに長大なログを出力するとディスクを極度に圧迫するおそれがあるので注意すること。（ループ処理等） ・CGIがCGIを呼ぶ連鎖で動作するためユーザの認識はセッションで解決できない。そのため利用するユーザはあらかじめ特定されていなければならない。 ※以上の問題点がありますが、本プログラムの高速性と利便性は格別であり将来の発展を希望するものです。 2010年8月の下旬までは以下のアドレスでサンプルを表示します。（昼間のみ） このサンプルはどんな操作をしても構いませんの色々と試してみてください。 自宅サーバ（DELL OptiPlex GX260 (P4-2.4GHz/1024MB/40GB/Debian-Linux)） http://codoo2hk.corede.net/ 最初のサンプルプログラムは「宅配らくちん管理」のWEB版です。 お届け先の行表示を横幅1400ドットに設定してありますので対応したディスプレイでご覧下さい。 この{宅配らくちん管理」は顧客とお届け先を連結して操作する宅配伝票を発行するシステムです。 元々MS-ACCESSで開発された作品を元にWEB版に再開発しているものです。 このプログラムで特徴的なのはACCESSのサブフォーム機能をWEB上で実現している点です。 「顧客」に対する「お届け先」を行表示します。そしてそのどの行でも「追加」「更新」「削除」が出来ます。 まだ印刷機能等は付属しておりませんが、ASPの利用出来る環境であればクリスタルレポート等を利用した印刷が出来ると思います。 C言語で作成されたCGIですので超高速に動作します。(さらに高速にするために本プログラムはfcgiライブリを利用しております) 各テーブル操作のCGIモジュールは機能ごとに分割して開発しています。(CGIがCGIを呼ぶ方法です) 2番目のサンプルプログラムは郵便番号の検索を入力検索によりフォームに適用するサンプルです。 通常このような検索プログラムはjavascriptで記述しますが、このサンプルではjavascriptで行う記述は非常に僅かなものとなっています。 フォームに適用する場合は以下の仕様にしたがってください。 -利用方法- 利用する側では例えば"form00000"というform+5桁の番号と"field01","field02"および、"field03"というfield+2桁の名前が]必要です。 また、受け側ではformの名前のほかにfield01,field02とかfield03をテキストかselectのoption-valueで用意する必要があります。 この時、WEBプログラム側ではjavascriptのコードで以下のパラメータを検索プログラムに渡してください。 (上書きするフォーム名がform99999でテキストボックスの名前がfield01,field02とfield03の場合) window.open('http://codoo2hk.corede.net/cgi-bin/yubin_Fetch.cgi?field='+zipcode99999+'&field=99999'+'&field=2'+'&field=3'); この両方のユニークな名前があればそのフィールドに指定した郵便番号の検索住所が上書きされます。 "field01"に郵便番号、"field02"に都道府県名、"field03"に地区名称と番地区域名が適用されます。 ※このサンプルではfield01,field02,field03は固定の名前となっています。 ・CGIプログラムの作成方法 cwのファイラー画面より以下の方法でファイルを生成します。 1)'a''a'とaキーを2回タイプすることでaseエディタに変身します。 2)ファイル名を入力します。 3)'H'でヘルプを呼び出しましょう。通常は以下のコマンドでaseを操作します。 viのように h j k l でカーソル移動 '-'でテキストレコードモード 'R'で数値レコードモード 'B'でBOOLレコードモード 'F'でDOUBLEレコードモード 's'でレコードテーブル定義の開始 'e'でテーブル１レコードの終端位置決定 'E'でテキストボックスの終端位置決定 InsertキーかHomeキーでデータベースレコード名を入力する。 テキスト（VARCHAR）項目入力の場合{項目名:バイト数}というように定義されます。 以下のようなテキスト画面を作成します。テキストエディタで作成する場合右端は必ず揃えてください。 {johoID}{kokyakuCD@5}{outaikubunID}{shimei:128}{furigana:156}{shokugyou:12}{kaisyamei:64}{yakushoku:12}{yubin:7}{todoufuken:24}{jusho1:64}{jusho2:64}{mail:50} {kaisyaTEL:13}{naisenTEL:13}{FAX:13}{keitaiTEL:13}{jitakuTEL:13}{insatu}{henjinashi}{fumei}{mocyu}{bikou:1024}{YahooID:32} [rnpe][ltpo][r$pe][---][---][---][---][---][---][------][-------][-------][-----][--------][--------][-------][------][------][B][B][B][B][--------][--------] [rnpe][ltpo][r$pe][---][---][---][---][---][---][------][-------][-------][-----][--------][--------][-------][------][------][B][B][B][B][--------][--------] ＜rnpe＞ ＜ltpo＞ ＜rnpe＞ ＜---------------------------------------------------------------＞ ＜---------------------------------------------------------------＞ ＜-----------＞ ＜---------------------------------------------------------------＞ ＜-----------＞ ＜------＞ ＜-------------------＞ ＜---------------------------------------------------------------＞ ＜---------------------------------------------------------------＞ ＜-------------------------------------------------＞ ＜------------＞ ＜------------＞ ＜------------＞ ＜------------＞ ＜------------＞ ＜B＞ ＜B＞ ＜B＞ ＜B＞ ＜-------------------------------------------------------------------------------------------------------------------------------＞ ＜-------------------------------＞ < > で囲まれている部分はテキストボックスの長さを決定するため、実際の長さにします。(256バイト以上はtextarea属性が適用されます) [ ]で囲まれている部分はテーブル定義です。 双方とも、属性が[----]<---->叉は[ltpott]のようになっていますが、これは以下を意味します。 ltpo 左詰めテキスト－つまり文字列を意味します。(アライメント属性はCSSファイルで適用されます） rtpo 右詰テキスト－つまり数字を意味します。(アライメント属性はCSSファイルで適用されます） @マークがある項目はキー項目になります。（検索用キーです）複数設定可能ですが最初のキーが優先されます。 :の後にレコードのバイト数を設定することが出来ます。（VARCHARのみ） k または p の文字があるとスキップステップの設定が出来ます。これは操作上必要でない項目を扱わないための機能です。 但し、反映されるソースコードは テーブル名_Fetch2.pgc だけになります。 テーブル名_Menu.pgc はりレーションテーブルを利用したコンボボックスを作成するために利用してください。 ブール型の更新のためにチェックボックスの利用が可能になっています。 ※設計情報ファイルのエラーチェックは画面上の小さなドットマークの表示で確認出来るようになっています。矛盾点があればそこだけクリアされません。 なお、本プログラムはLinux でコンパイルと実行が可能です。ただし、GNOME端末で利用する場合はUTF-8を使用してください。 その場合コンパイルオプションに -ncurses ではなく -ncursesw が必要です。frmSockFTPクラス では-lsocks(FTXの場合) が必要になります。 その場合、Windoowsから接続する場合は teraterm を推奨します。 端末制御ライブラリは、添付されている（/cms/lib） teraterm-wsubform と kterm-wsubform の使用を推奨します。 ・ソースコード生成 CGIプログラムのソースコードは以下のコマンドで作成します。 aseエディタ画面より 'c' でソース生成を開始します。 ソースファイルは以下のファイル名になります。 ・テーブル名.pgc:基本ファイルです。レコードの一覧を表示し検索文字列をGETで送信します。 ・テーブル名_Fetch.css:スタイルシート設定ファイルです。{text-align}が自動生成されます。さらに細かな設定をする場合はこのファイルを編集します ・テーブル名_Fetch.pgc:UPDATE,INSRT,DELETEを実行するCGIに検索文字列をPOSTで送信します。 ・テーブル名_Fetch2.pgc:UPDATEのみに対応した検索文字列をPOSTで送信します。SKIP_STEPの機能でテキストボックスを抜粋出来ます。 ・テーブル名_Fetch_New.pgc:新規INSERTのみに対応した検索文字列をPOSTで送信します。 ・テーブル名_Update.pgc:Fetch.cgi から転送されたUPDATE文字列でデータベースを更新します。DB項目のskip_step 機能を利用しないので全ての項目を使用します。 ・テーブル名_Update2.pgc:_Fetch.cgi から転送されたUPDATE文字列でデータベースを更新します。DB項目のskip_step 機能を読み込みます。 様々な機能はこのファイルに生成されます。このファイルを利用することで開発効率をアップ出来ます。 ・テーブル名_Insert.pgc:_Fetch.cgi から転送されたINSERT文字列でデータベースに追加を行います。 ・テーブル名_Delete.pgc:_Fetch.cgi から転送された指定文字列でデータベースからレコードを削除します。 ・テーブル名_Menu.pgcリレーションテーブルの機能をCGIに実現するコードを生成します。リレーションはこのコードを利用する形になります。 ・create_テーブル名.sql:テーブルをクリエイトします。 ※リレーションの実現は主にHTMLタグのselectを利用します。MS-ACCSESSのコンボボックスのような機能です。 ※BOOL型データタイプはチェックボックスとして利用出来ます。 ']'コマンドでコンパイルします。（サンプルの makefile のルールを参考にしてください） wsubformHTML.cに関連する関数が装備されていますのでwsubformHTML.c自身は'^]'でコンパイルします。 最後に、作成されたcgiプログラムをcgi-binにコピーします。 ※コンパイル時に少々の警告メッセージが表示されます。 ※キーの設定は必ず行ってください。現在のバージョンではそうしないとエラーになります。 ase のヘルプには記述してありませんが、以下のカーソル移動コマンドが使えます。 Shift + g で画面の最下行に移動します。 t で画面の最上行に移動します。 ^t で行頭に移動します。 ^g で行の最後に移動します。 m で列の真ん中へ移動します。 M で行の真ん中で移動します。 ・デバッグ時に必要な事柄 CGIプログラムのデバッグは非常に困難です。そのため以下のプログラムを用意しました。 logctl.sh aseが生成するコードの中に、logmsg()という関数があります。 コード生成時コメントアウトされていますが、コメントを外すことでエラー処理が出来ます。 また、コードの各所にlogmsg()を利用することでデバッグが可能です。 それには事前に logctl.sh をバックグラウンドで実行しておいてください。 $ logctl.sh & 各種エラーやデバッグメッセージは以下のログに記録されます。 /home/cms/log/cgi_log ログの記録場所やファイル名を変更したい場合は logctl.sh を編集してください。 なお、サーバの起動時に自動実行したい場合は/etc/init.d及び、/etc/rc.d　に登録してください。 ・CGIプログラムの転送について 通常CGIプログラムはapacheが提供するcgi-binというディレクトリ配下に転送して利用します。 cw でCGIプログラムを開発して試験する場合、ブックマークメニュー画面から'p'で簡単に目的のディレクトリにファイルをコピー出来ます。 この場合あらかじめcgi-binディレクトリをブックマークに登録しておいてください。 cwの画面からテストとデバッグが非常に効率良く行えます。 Complete Walker FastCGI についての詳細 Complete Walker FastCGI　は複数のプログラマが同時に同じソースコードを開発することの出来るCMSというリビジョンコントロールシステムの中で、プログラム開発をより楽しく有意義に出来るよう考えられたファイラーシステムです。本システムはデータベースをPostgreSQLに限定していますが、ECPGプリプロセッサを活用することでユニークなWEBデータベースシステムの開発とテスティング環境を構築することが出来ます。 1.CWファイラーシステム 当初の目的でもあった、FTPクライントとディレクトリ操作とデータベース操作を付け加えたため、もともとのＣ言語バージョンからＣ＋＋言語で書き換えてあります。 Ｃ＋＋の便利なクラス機能を利用して、基本ファイラは LocalFiler クラス、FTP はFTXクラス、ディレクトリ操作は LocalTree クラス、ASEエディタは AseEditor クラスとして明解に区別してあります。 1.1 ローカルファイラー 起動方法 [注意事項] お使いの Linux/UNIX システムによっては、使用する前に画面を大きくして eval `resize`　とタイプする必要があるかもしれません。 % cw 1)基本操作方法 vi にほぼ準じる 'j' と　'k' のキーで上下にスクロール（矢印キーもＯＫです） SHIFT　＋　'H' でヘルプ画面の表示 'c' で選択中のディレクトリに移動 TABキーファイルを選択することで一括コピー及び、一括移動、一括削除が行えます。 まずTABキーを押すとファイル名の前に * のマークが付きます。 いくつかファイルに * マークを付けた後以下の機能が使用出来ます。 コントロールキー　＋　P で一括コピー コントロールキー　＋　L　で一括移動 コントロールキー　＋　W　を2回続けて押すと一括削除 なお、SHIFT　＋　c で全ての選択解除が出来ます。 2)その他の機能 1）'t' キーで先頭のファイルにジャンプ 2）'g' キーで最後のファイルにジャンプ 3）コントロールキー　＋　d で５行づつ下にジャンプ 4）コントロールキー　＋　u　で5行づつ上にジャンプ 5）'1' でアクセス月日表示に切り替え 6）'0' で作成月日表示に切り替え 7）'9' で作成年月表示に切り替え 8）'X' キーダブルでFTPクライアントに変身 9) '\' キーでツリーファイラに変身 10) '^' キーでファイル名の前に . の付いたファイルの表示／非表示 11) '~' キーでブックマークのディレクトリに移動 12) '' キーでブックマークにカレントディレクトリを保存 13) .def ファイルでは Enter キーで ase ファイルの編集(aseエディタに変身) 14) '\' キーで ツリーファイラーに変身 15) '_' キーで CMSファイラーに変身 なお以下の機能はツリーファイラと共通機能です。 使用キー 　　機能 コントロールキー　＋　A チェンジモード（775 とか 664 と入力します） コントロールキー　＋ R ファイル削除 コントロールキー　＋　H 環境変数 $HOME のディレクトリに移動する コントロールキー　＋　B cw　を起動したディレクトリに戻る 'e' vi でファイルを編集 '^E' vi で新規ファイルを編集 'i' ひとつ上のディレクトリに移動 '/' 検索 'n' 次を検索 'p' ファイルコピー SHIFT + 'm' ファイルの移動またはリネーム 'm ディレクトリの作成 SHIFT + 'o' 指定したディレクトリに移動 SHIFT + 'c' 画面の適正化 2.変身するファイラー CWは4つの顔（機能）を持つファイラーとPostgreSQLのDBを操作するエディタを含んでいます。 これらの顔は、CW の大きな特徴のひとつです。その用途に合わせて使い分けすると良いでしょう。 2.1 ツリーファイラー ツリーファイラーへの変身は '\' キーにて行います。 ツリーの表示はカスタマイズし易いようにシェルコマンドの出力を利用しています。 ツリーファイラーではディレクトリが対象となりますので、コピーや削除、Move等は全て選択したディレクトリ自身を操作することになります。 ツリー表示はカレントディレクトリ配下のみになるため、'i' キーでディレクトリを遡るとツリーの表示に時間がかかるようになります。 / ディレクトリのように頂点のディレクトリではファイルシステムの大きさにもよりますが、それなりの時間を必要とします。（キャッシュメモリの大きいコンピュータが良い） クラスライブラリになっているので他のプログラムで利用可能です。 2.2 FTXファイラー FTXファイラー への変身は 'X''X' とダブルコマンドで行います。 このファイラーはインターネットに接続されたFTPクライアントです。 FTPクライアントとして必要な機能はほとんど実現していますので、コマンドラインのFTPに疲れた人にとっては、コマンド等の手入力が各段に少ないので朗報だと思います。 FTPクライアントになった場合では、ファイル送信のみミニローカルファイラーを呼出し複数ファイル選択の送信が出来ます。 ファイルの送信と受信がターゲットファイルの複数選択で出来ます。 なお、単独のクラスライブラリになっているので他のプログラムとリンクして利用可能です。ソースレベルでのリンクはFTXのマニュアルを参照してください。 2.3 ミニローカルファイラー FTXファイラーから 'X''S'とキー入力でローカルミニファイラーに変身します。 ローカルミニファイラーからはTABキーでの複数選択によるファイル送信が出来ます。 このファイラーはファイル送信用のファイラーという位置づけですが、ローカルファイラーに近い機能を合わせ持ちます。ただ、ローカルミニファイラーでは、複数選択でのコピー／移動の機能はありません。 2.4 ASEエディタ ASE は PostgreSQLへのデータベースアクセスを行うプログラムとDB-HTMLライブラリ用の各種ファイルを操作します。ローカルファイラーの表示で、.pgc .def .sql という拡張子の付いたファイルは Enter キーで vi 又は ASEエディタに変身し、DBグリッド設計画面としてオープンします。 これらのファイルは ASEエディタでDB設計ファイルから生成されるファイルになります。 libsubformHTML.a という名前のスタティックライブラリはPostgreSQlと HTML5.0 のために開発されたWEB-DBシステムを構築するためのライブラリです。 ASEは生成したC言語ソースファイルをこのライブラリを利用してWEB-DBシステムを構成し、まるでデスクトップで動作するようなデータベースアプリケーションのソースファイルを生成します。 なお、cw が aseエディタに変身した時ファイルのオープン時表示速度が遅くなる場合があります。 これはエディタ内でセルを作成する量の多さの他に、CURSESライブラリのマルチバイト処理をコンパイルオプションに加えているからです。 この場合、設計画面の大きさを画面限度最大に設定してください。見違える程表示が速くなります。 なお、gnome端末を利用している場合には、「端末」メニューから「文字コードの設定」で、「日本語（UTF-8）」に変更してください。 2.5 CMSファイラー CMSLocalFiler クラスは cmsmenu をファイラークラス化したメニューオブジェクトとなっています。このファイラーは特殊なファイラーで CMS ユーザのバージョン／リビジョン管理のために存在します。 この CMS ファイラーはこれまでのファイラーと違い、ホームディレクトリの表示が CMS に登録されたファイルのみの表示となります。 これは、バージョン／リビジョンの管理にターゲットファイルに絞りやすくすることと、登録ファイル以外のファイルとの区別を明確にする意味があります。。 また、CMS ファイラーは /home/cms 配下の他のディレクトリのファイルを見ることは出来ません。そのため、このファイラーを CMS のセキュリティーのために利用することが可能です。 複数の開発者が同時にCMS を利用してリビジョンの管理を行う場合は安全のためにこのファイラーを使用することを推奨します。特にカレントディレクトリにサンプル等のファイルや、データファイル等が多い場合には、CMS に登録されたソースファイルの管理に威力を発揮します。 また、階層化されたソースファイルのシステムの、階層の下の位置からでも CMS を操作出来ます。CMSファイラーの単独プログラム名は cf です。 3.cwが利用するシェルプログラム fconv.ksh UTF-8、シフトＪＩＳ、ＥＵＣ変換用 cwがコマンドとして利用。必ずパスのあるディレクトリに存在することが必要。 お使いのコンピュータシステムによって漢字変換プログラムが異なる場合はこのファイルを変更してください。 dtree.sh cwがコマンドとして利用。必ずパスのあるディレクトリに存在することが必要。 Linux の複雑なファイルシステムをツリー表示するため、Shell コマンドにしてあります。各システムによってはこのファイルを変更して調整してください。 dtree_path.sh cwがコマンドとして利用。必ずパスのあるディレクトリに存在することが必要。 dtree.sh と対のコマンド path名を保存する。 各システムによってはこのファイルを変更して調整してください。 dtree.root.sh cwがコマンドとして利用。必ずパスのあるディレクトリに存在することが必要。 コマンドのユーザIDを root とするとより多くのディレクトリを表示出来る。 Linux の複雑なファイルシステムをツリー表示するため、Shell コマンドにしてあります。各システムによってはこのファイルを変更して調整してください。 dtree.root_path.sh cwがコマンドとして利用。必ずパスのあるディレクトリに存在することが必要。 コマンドのユーザIDを root とするとより多くのディレクトリを表示出来る。 dtree.root.sh と対のコマンド path名を保存する。 各システムによってはこのファイルを変更して調整してください。 以下は CMS が使用する KSH コマンドです。 これらのコマンドのほとんどは fusr の下にあるユーザホームディレクトリで実行する必要があります。これらのコマンドをメニューから実行出来る cmsmenu というプログラムもありますので、そちらを使うようにしてください。 get.ksh GETの実行 最新のソースファイルを呼び出します。 put.ksh PUTの実行 現在のソースファイルを起点のソースとの差分を保存し削除します。 pulog.ksh PUT修正記録の編集 put.ksh による保存された修正履歴文書を再編集します。 vget.ksh リビジョンの呼び出し 0 〜 99 までの修正差分により、以前のソースに復元します。 mredit.ksh ＭＲの編集 mr.ksh によって保存された障害修理処理票を編集します。 mr.ksh ＭＲの登録 tr.ksh による故障処理票に関連して障害修理処理票を新規登録します。 unget.ksh GETの取り消し get.ksh によって呼び出されたソースファイルの修正を中止します。 カレントディレクトリのソースファイルを削除するかどうかの質問あり。 showget.ksh GET履歴の表示 過去に行った get.ksh のログを表示します。 showput.ksh PUT履歴の表示 過去に行った put.ksh のログを表示します。 tredit.ksh ＴＲの編集 tr.ksh によって保存された故障処理票を編集します。 tr.ksh ＴＲの登録 ソフトウェアテスト時、故障を発見した場合に故障処理票を登録します。 newfile.ksh CMSへファイルの登録 新規の CMS で管理するソースファイルを登録します。 新規登録する前に tabchg.ksh でテーブルファイルに新規ソースファイル名を 記述する必要があります。 tabchg.ksh CMSテーブルファイルの編集 newfile.ksh で新規ソースファイルの登録をするまえにファイル名を記述します。 階層化で記述出来るので大規模なシステムの登録可能です。 mrreport.ksh ＭＲ記録のレポート 障害修正記録ファイルＭＲの一覧を表示します。 rejectmr.ksh ＭＲの削除 障害修正記録ファイルＭＲを削除します。 ＭＲが削除されても関連するＴＲがあれば故障履歴は確保されます。 reject.ksh リビジョンの削除 put.ksh によって保存された差分を削除します。 submit.ksh SUBMITの実行 これは最後の PUT コマンドになります。 sabunntouroku 差分登録は同じですが、SUBMITが発行された後は PUTとGET は出来なくなります。 この他に commit.ksh というコマンドもありますが、cmsmenu からは利用出来ません。 4.cwが利用するライブラリ libsubformHTML.a（WEB用C言語ライブラリ） HTMLとDBを扱うライブラリ。PostgreSQL データベースを 各種ブラウザを利用してWEBでのデータベースシステムを構築することが出来る。 ECPG プリプロセッサでコンパイル出来るコードを自動的に作成することが可能なaseエディタを使用すると簡単にWEB用C言語のソースコードを生成する。 生成されたコードはそれぞれテーブルごとに名前が異なるため、テーブルごとの操作プログラム（HTML)を動的に標準出力するCGIとなる。 テーブルによっては膨大な情報量があるため、プログレッシブで長大なHTMLの出力に耐えうるブラウザが必要。 libsubform.a（C言語ライブラリ） データベース試験用ライブラリ。 グリッドとテキストを扱うライブラリ。PostgreSQL とのリンクをソースコードレベルで行う。DBグリッドを利用するとデータベースをリアルタイムに監視するとが可能になる。 aseエディタを使用すると簡単にDBグリッドを作成出来る。 このライブラリは C言語で作成されていますが、全てのソースコードが付属します。 詳細は wsubform ライブラリと ase のマニュアルを参照してください。 libftx.a（C++クラスライブラリ） FTPクライアントライブラリ libftx.a を提供します。 このライブラリを利用することにより、インターネット上の様々な操作プログラムが作成可能です。 ソースコードレベルで改変が可能な ftpfrm.cc が付属します。 詳細はFTXクラスライブラリマニュアルを参照してください。 5.cwが利用するローカルクラス CW はそのプログラムの中に、外部クラス FTX の他に内部クラスとして、LocalFiler クラス、TreeFiler クラス、AseEditor クラス、CMSLoalFiler クラスを含んでいます。 これらのクラスは /home/cms/fusr/ftx/filer.h の中に定義されています。 6.コマンドリファレンス ローカルファイラー H このヘルプを表示 v ファイルを表示 e ファイルを編集 f EUC -> SHIFT-JIS x 実行ファイルを実行 p ファイルをコピー ^P 選択ファイルコピー m ディレクトリを作成 r ディレクトリを削除 ^R ファイルを削除 c ディレクトリを移動 ^O 移動ディレクトリ入力 F SHIFT-JIS -> EUC M ファイル移動/名前変更 ^W^W 選択ファイルを削除 ^A 属性を変更 ^B cw を起動した場所に ^H $HOME に戻る - 以前に移動した場所に移動 + 以前に移動した場所から移動 n 検索を開始。入力は '/' で ^L 選択ファイル移動 i ひとつ上へ S 画面の更新 ^E vi の実行 @ CMS メニューの起動 t 画面の先頭へ g 最後尾に ! シェルモードに 2 アクセス時刻表示 9 作成年月表示 0 作成時刻表示 1 メニュー表示切替 u 半画面上に d 半画面下に j 一行下に k 一行上に G 画面最後尾に : .ファイルの非表示 \\ カレントツリー ^K ブックマークに位置を保存 ~ ブックマークメニューを開く TAB ファイルを複数選択する" q で終了 ローカルツリー H このヘルプを表示 / 検索名入力 n 画面を下に検索 N 画面を上に検索 p 単一ディレクトリをコピー ^P 選択ディレクトリのコピー m ディレクトリを作成 r ディレクトリを削除 ^R 選択ディレクトリを配下まで削除 c ディレクトリをチェンジ i ひとつ上のディレクトリへ ^ 先頭に.のあるファイルも表示 M ディレクトリ移動/名前変更 ^W^W 選択ディレクトリを削除 ^A 属性を変更 ^B ファイラーを起動した場所に戻る ^H $HOME に戻る - 以前に移動した場所に移動 + 以前に移動した場所から戻る Enter ツリー表示の終了（選択中のディレクトリを表示） ^L 選択ディレクトリの移動 S 画面の更新 ^E vi の実行 @ CMS メニューの起動 = ツリー表示時フルパスを表示 t 画面の先頭へ g 最後尾に ! シェルモードに 1 アクセス時刻表示 9 作成年月表示 0 作成時刻表示 2 メニュー表示切替 u 半画面上に d 半画面下に j 一行下に k 一行上に G(g) 画面最後尾に ^K ブックマークに位置を保存 ~ ブックマークメニューを開く q で終了 リモートファイラー x x キーダブルで再接続 X S キーダブルでローカルファイラーに変身しTABにて選択したファイルを送信() X E キーダブルで hosts.ftx を vi で編集 X R キーダブルでTABにて複数選択したファイルを受信 W W キーダブルでTABにて複数選択したファイルを削除 TAB でファイルを選択（ディレクトリは選択出来ない） R でファイルの受信を行う。（選択しているファイルのみ） c でディレクトリを移動 i でひとつ上のディレクトリに移動 e でファイルを編集 v で画像ファイルを表示 ^A でファイルの属性変更 ^R でファイルの削除。 r でディレクトリの削除 m でディレクトリの作成 M でファイル名の変更 L でイミディエイトウインドウに移動（'q'で戻る） / でファイル検索、'n' で再検索 S でファイルの送信（ファイル名入力） j と 'k' キーでファイラーカーソルの移動 g で画面最下行へ移動 t で画面トップに移動" q で終了 ローカミニルファイラー H このヘルプを表示 v ファイルを表示 e ファイルを編集 f EUC -> SHIFT-JIS TABキーでファイルを選択 p ファイルを送信 ^P 選択ファイルを送信 m ディレクトリを作成 r ディレクトリを削除 ^R ファイルを削除 c ディレクトリを移動 ^O 移動ディレクトリ入力 F SHIFT-JIS -> EUC M ファイル移動/名前変更 ^A 属性を変更 ^B MiniFiler を起動した場所に ^H $HOME に戻る - 以前に移動した場所に移動 + 以前に移動した場所から移動 n 検索を開始。入力は '/' で i ひとつ上へ S 画面の更新 ^E vi の実行 t 画面の先頭へ g 最後尾に ! シェルモードに 2 アクセス時刻表示 9 作成年月表示 0 作成時刻表示 1 メニュー表示切替 u 半画面上に d 半画面下に j 一行下に k 一行上に G 画面最後尾に : .ファイルの非表示 \\ カレントツリー ^K ブックマークに位置を保存 ~ ブックマークメニューを開く q で終了 CMSローカルファイラー H このヘルプを表示 v ファイルを表示 e ファイルを編集 f EUC -> SHIFT-JIS TABキーでファイルを選択 p ファイルを送信 ^P 選択ファイルを送信 m ディレクトリを作成 r ディレクトリを削除 ^R ファイルを削除 c ディレクトリを移動 ^O 移動ディレクトリ入力 F SHIFT-JIS -> EUC M ファイル移動/名前変更 ^A 属性を変更 ^B MiniFiler を起動した場所に ^H $HOME に戻る - 以前に移動した場所に移動 + 以前に移動した場所から移動 n 検索を開始。入力は '/' で i ひとつ上へ S 画面の更新 ^E vi の実行 t 画面の先頭へ g 最後尾に ! シェルモードに 2 アクセス時刻表示 9 作成年月表示 0 作成時刻表示 1 メニュー表示切替 u 半画面上に d 半画面下に j 一行下に k 一行上に G 画面最後尾に : .ファイルの非表示 \\ カレントツリー ^K ブックマークに位置を保存 ~ ブックマークメニューを開く q でCMSファイラーを終了し CW へ戻る CMSコマンドの実行 CMS コマンドはダブルキー操作になります。 'S''A' get.ksh GETの実行 'S''B' put.ksh PUTの実行 'S''C' pulog.ksh PUT修正記録の編集 'S''D' vget.ksh リビジョンの呼び出し 'S''E' mredit.ksh ＭＲの編集 'S''F' mr.ksh ＭＲの登録 'S''G' unget.ksh GETの取り消し 'S''H' showget.ksh GET履歴の表示 'S''I' showput.ksh PUT履歴の表示 'S''J' make file-name MAKEコマンドの実行 'S''K' 'S''L' tredit.ksh ＴＲの編集 'S''M' tr.ksh ＴＲの登録 'S''N' newfile.ksh CMSへファイルの登録 'S''O' tabchg.ksh CMSテーブルファイルの編集 'S''P' mrreport.ksh ＭＲ記録のレポート 'S''Q' rejectmr.ksh ＭＲの削除 'S''R' reject.ksh リビジョンの削除 'S''S' submit.ksh SUBMITの実行