スキップしてメイン コンテンツに移動

GnuCobolでAJAXを最速スタート

解説:参考ページからコピペするだけ。
参考:OpenCOBOL FAQ
手順:
  1. 以前の投稿内容はマスターしておくこと。
  2. OpenCOBOL FAQから「5.1   How do I use OpenCOBOL for CGI?」の例題のソースをコピーして「cgienv.cob」を作る。保存ディレクトリはどこでもよいが、とりあえず「C:\PgmFiles\gnu-cobol-2.0」とした。後で移動する。
  3.  C:\PgmFiles\gnu-cobol-2.0 で cobc cgienv.cob -x とする。
  4. cgienv.exe ができるので、 cgienv.cgi と拡張子を変えて、 xamppのhtdocsの中のcgi-binへ移動する。どこでもよいのだが、後の都合があるので、xampp\htdocs\cgi-bin\の中。
  5. ブラウザから http://localhost/cgienv.cgi で参考ページの通り表示されるはず。
  6. 参考ページの cgienv.cgi の下の cgienvform.html を同様にコピーして、 xampp\htdocs\gnucob\ に保存する。ブラウザから http://localhost/gnucob/cgienvform.html を開き、「SEND」をクリックすると、同様に表示される。
  7. ここから、Ajaxを始める。
    参考ページの「5.1.1   AJAX」から ajax.html のソースをコピーして
    xampp\htdocs\gnucob\ に保存する。ブラウザから http://localhost/gnucob/ajax.html を開き、「GO」をクリックすると、同様に表示される。一部リンクが変なので自分の環境に合わせて直す。
  8. この cgienv.cob にはWEB開発するうえで重要な環境変数の取得方法があるので、よく見るように。
  9. ディレクトリを「とりあえず」の配置から移動する。
    • 先ず、.cgiファイルは xampp\htdocs\cgi-bin\gnucob\ へ移動する。
    • .cobソースは xampp\htdocs\cgi-bin\gnucob\src\ へ移動する。
    • 各.html,.cobを環境に合わせて一部修正して再コンパイルして配置する。  
     
終わり。 以下に各ソースを掲載する。


cgienv.cob


OCOBOL >>SOURCE FORMAT IS FIXED
      ******************************************************************
      * Author:    Brian Tiffin, Francois Hiniger
      * Date:      30-Aug-2008
      * Purpose:   Display the CGI environment space
      * Tectonics: cobc -x cgienv.cob
      *   Move cgienv to the cgi-bin directory as cgienv.cgi
      *   browse http://localhost/cgi-bin/cgienv.cgi or cgienvform.html
      ******************************************************************
       identification division.
       program-id. cgienv.

       environment division.
       input-output section.
       file-control.
           select webinput assign to KEYBOARD.

       data division.
       file section.
       fd webinput.
          01 postchunk       pic x(1024).

       working-storage section.
       78 name-count      value 34.
       01 newline         pic x   value x'0a'.
       01 name-index      pic 99 usage comp-5.
       01 value-string    pic x(256).
       01 environment-names.
          02 name-strings.
             03 filler    pic x(20) value 'AUTH_TYPE'.
             03 filler    pic x(20) value 'CONTENT_LENGTH'.
             03 filler    pic x(20) value 'CONTENT_TYPE'.
             03 filler    pic x(20) value 'DOCUMENT_ROOT'.
             03 filler    pic x(20) value 'GATEWAY_INTERFACE'.
             03 filler    pic x(20) value 'HTTP_ACCEPT'.
             03 filler    pic x(20) value 'HTTP_ACCEPT_CHARSET'.
             03 filler    pic x(20) value 'HTTP_ACCEPT_ENCODING'.
             03 filler    pic x(20) value 'HTTP_ACCEPT_LANGUAGE'.
             03 filler    pic x(20) value 'HTTP_COOKIE'.
             03 filler    pic x(20) value 'HTTP_CONNECTION'.
             03 filler    pic x(20) value 'HTTP_HOST'.
             03 filler    pic x(20) value 'HTTP_REFERER'.
             03 filler    pic x(20) value 'HTTP_USER_AGENT'.
             03 filler    pic x(20) value 'LIB_PATH'.
             03 filler    pic x(20) value 'PATH'.
             03 filler    pic x(20) value 'PATH_INFO'.
             03 filler    pic x(20) value 'PATH_TRANSLATED'.
             03 filler    pic x(20) value 'QUERY_STRING'.
             03 filler    pic x(20) value 'REMOTE_ADDR'.
             03 filler    pic x(20) value 'REMOTE_HOST'.
             03 filler    pic x(20) value 'REMOTE_IDENT'.
             03 filler    pic x(20) value 'REMOTE_PORT'.
             03 filler    pic x(20) value 'REQUEST_METHOD'.
             03 filler    pic x(20) value 'REQUEST_URI'.
             03 filler    pic x(20) value 'SCRIPT_FILENAME'.
             03 filler    pic x(20) value 'SCRIPT_NAME'.
             03 filler    pic x(20) value 'SERVER_ADDR'.
             03 filler    pic x(20) value 'SERVER_ADMIN'.
             03 filler    pic x(20) value 'SERVER_NAME'.
             03 filler    pic x(20) value 'SERVER_PORT'.
             03 filler    pic x(20) value 'SERVER_PROTOCOL'.
             03 filler    pic x(20) value 'SERVER_SIGNATURE'.
             03 filler    pic x(20) value 'SERVER_SOFTWARE'.
          02 filler redefines name-strings.
             03 name-string   pic x(20) occurs name-count times.

       procedure division.

      * Always send out the Content-type before any other IO

       display
           "Content-type: text/html"
           newline
       end-display.
       display
           "<html><body>"
       end-display.
       display
           "<h3>CGI environment with OpenCOBOL</h3>"
       end-display.
       display
           '<a href="/cgienvform.html">To cgienvform.html</a>'
           "<p><table>"
       end-display.
      * Accept and display some of the known CGI environment values
       perform varying name-index from 1 by 1
           until name-index > name-count
               accept value-string from environment
                   name-string(name-index)
               end-accept
               display
                   "<tr><td>"
                   name-string(name-index)
                   ": </td><td>"
                   function trim (value-string trailing)
                   "</td></tr>"
               end-display
               if (name-string(name-index) = "REQUEST_METHOD")
                  and (value-string = "POST")
                      open input webinput
                      read webinput
                          at end move spaces to postchunk
                      end-read
                      close webinput
                      display
                          '<tr><td align="right">'
                          "First chunk of POST:</td><td>"
                          postchunk(1:72)
                          "</td></tr>"
                      end-display
               end-if
       end-perform.
       display "</table></p></body></html>" end-display.
COOL   goback.

cgienvform.html
 
<html><head><title>OpenCOBOL sample CGI form</title></head>
<body>
<h3>OpenCOBOL sample CGI form</h3>
<form action="http://localhost/cgi-bin/cgienv.cgi" method="post">
    <p>
    Text: <input type="text" name="text"><br>
    Password: <input type="password" name="password"><br>
    Checkbox: <input type="checkbox" name="checkbox"><br>
    <input type="radio" name="radio" value="ONE"> One<br>
    <input type="radio" name="radio" value="TWO"> Two<br>
    <input type="submit" value="Send"> <input type="reset">
    </p>
</form>
</body>
</html>

ajax.html
 
<html>
<head>
<title>Simple Ajax Example</title>
<script language="Javascript">
function xmlhttpPost(strURL) {
    var xmlHttpReq = false;
    var self = this;
    // Mozilla/Safari
    if (window.XMLHttpRequest) {
        self.xmlHttpReq = new XMLHttpRequest();
    }
    // IE
    else if (window.ActiveXObject) {
        self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    self.xmlHttpReq.open('POST', strURL, true);
    self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    self.xmlHttpReq.onreadystatechange = function() {
        if (self.xmlHttpReq.readyState == 4) {
            updatepage(self.xmlHttpReq.responseText);
        }
    }
    self.xmlHttpReq.send(getquerystring());
}

function getquerystring() {
    var form     = document.forms['f1'];
    var word = form.word.value;
    qstr = 'w=' + escape(word);  // NOTE: no '?' before querystring
    return qstr;
}

function updatepage(str){
    document.getElementById("result").innerHTML = str;
}
</script>
</head>
<body>
<form name="f1">
  <p>word: <input name="word" type="text">
  <input value="Go" type="button" onclick='javascript:xmlhttpPost("/cgi-bin/cgienv.cgi")'></p>
  <div id="result"></div>
</form>
</body>
</html> 
 
終わり。 

コメント

このブログの人気の投稿

GnuCobolをWindows10で最速スタート

解説:Windows10でCOBOLをコンパイルする環境を簡単に作ります。 参考: MinGW と GunuCOBOL(OpenCOBOL)のインストールメモ 手順: GnuCobolをダウンロード  https://osdn.jp/projects/sfnet_open-cobol/releases/ ここの「その他全ファイル」の gnu-cobol の 2.0 の中の gnu-cobol-2.0_nightly_r658_win32_vc11_bin.7z   をダウンロードする。 7-zをダウンロード&インストール GnuCobolを展開 VisualStudioCommintyをインストール ソース作成>C:\PgmFiles\gnu-cobol-2.0\test1.cob コンパイル コマンドプロンプトを開く cd C:\PgmFiles\gnu-cobol-2.0 set_env_vs.bat path C:\PgmFiles\gnu-cobol-2.0\bin;%path% set COB_CONFIG_DIR=C:\PgmFiles\gnu-cobol-2.0\config cobc -x -v test1.cob

GnuCobolのscreen_sectionでWindows10で日本語を使う。

解説:Windowsのコマンドプロンプトでscreen sectionから日本語表示してみる。 参考: GnuCOBOL FAQ         Windowsでcursesを使う 手順:  先ず、日本語無しで、 GnuCOBOL FAQ の screening.cob をコピーしてコンパイルして実行してみる。…出来ない場合は前回までを参照してください。 screen section の … value "title line" . の部分を value "タイトル行". と、日本語を入れる。 ソースの文字コードはUTF-8で保存する。(エディタは使い易いのを使う) コンパイルして実行する。> cobc -x -v screening.cob 日本語は化けて表示されないはず。(ソースをSJIS保存してもダメなはず。) コマンドプロンプト環境をUTF-8に変える。>  chcp 65001 screening.exe を実行してみる。日本語は化けて表示されないはず。 GnuCobolに付属のpdcurses.dll を作り直します。 こちらのページ から pdcurses のソースのzipをダウンロードして解凍します。 set PDCURSES_SRCDIR=C:\(解凍した場所)\ "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\vcvars32.bat" cd C:\(解凍した場所)\win32 nmake -f vcwin32.mak DLL=Y /A /D UTF8=1 pdcurses.dll 出来た pdcurses.dll を gnu-cobol-2.0\bin\ に上書き貼付けする。 上記4のscreening.exe を実行する。日本語が表示されるはず。  GnuCOBOL FAQ から gnucobol-colours.cob をコピーして screen section を日本語を入れてみてコンパイルして実行する。 日本語は内部で3バイト以上の場合もあるので、COBOL固定フォーマットでは72桁を超えやすいので注意して、...

GnuCobolでPostgreSQLをWin10で最速スタート

解説:GnuCobol標準機能でDB(PostgrSQL)を使う。 参考: Windows上にPostgreSQLを導入する。      OpenCOBOL FAQ 手順: PostgreSQL の win32 版の zip をダウンロード PostgreSQL へ行き、DownloadのBinaryPackagesのWindowsを開き、 zip archive を開き、betaで無い最新の Win x86-32 をクリックして postgresql-9.5.5-1-windows-binaries.zip (今なら)をダウンロードする。 postgresql-9.5.5-1-windows-binaries.zip を解凍して、中のpgsqlを C:\PgmFiles\ に移動する。 そのC:\PgmFiles\pgsql\bin をパスに追加する。 そのbinの中のPgAdmin3をディスクトップかスタートにショートカットを貼るとよい。 pgsql 内に data と log のディレクトリを作る。 > cd C:\PgmFiles > initdb -U postgres -A password -E utf8 -W -D data を実行する。パスワードの設定を要求されるので、入れて忘れないように。つぎに、 > pg_ctl -D data -l log\logfile start を実行する。 上記4のPgAdmin3を実行して、サーバーを追加する。 名前は適当に、ホストはlocalhost パスワードは上記6のパスワードを入れる。 次にCOBOL側の設定を前回までと同様に、特にコマンドプロンプトから最初に、 C:\PgmFiles\gnu-cobol-2.0\set_env_vs.bat を忘れずに! ソースを作成。C:\PgmFiles\xampp\cgi-bin\gnucob\src などに pgcob.cob を作る。 OCOBOL*> ***************************************************************       *> Auth...