COBOLってよく聞くが試しにUbuntuにインストールしていつものHELLO WORLDさせてみる

COBOLってよく聞くよね化石みたいな言語らしい

って、UbuntuにOpen-COBOLってインストールしてみて「HELLO WORLD」ってプリントしてみる。

【Open-COBOLをインストール】

user@user:~@ sudo apt-get install open-cobol

とUbuntuのコンソールに書いてリターン

パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
libmircommon6 linux-headers-4.8.0-28 linux-headers-4.8.0-28-generic
linux-image-4.8.0-28-generic linux-image-extra-4.8.0-28-generic
openbsd-inetd
これを削除するには 'sudo apt autoremove' を利用してください。
以下の追加パッケージがインストールされます:
autotools-dev libcob1 libcob1-dev libdb-dev libdb5.3-dev libgmp-dev
libgmp3-dev libgmpxx4ldbl libltdl-dev libncurses5-dev libtinfo-dev libtool
提案パッケージ:
db5.3-doc gmp-doc libgmp10-doc libmpfr-dev libtool-doc ncurses-doc autoconf
automaken gfortran | fortran95-compiler gcj-jdk
以下のパッケージが新たにインストールされます:
autotools-dev libcob1 libcob1-dev libdb-dev libdb5.3-dev libgmp-dev
libgmp3-dev libgmpxx4ldbl libltdl-dev libncurses5-dev libtinfo-dev libtool
open-cobol
アップグレード: 0 個、新規インストール: 13 個、削除: 0 個、保留: 4 個。
2,105 kB のアーカイブを取得する必要があります。
この操作後に追加で 8,902 kB のディスク容量が消費されます。
続行しますか? [Y/n] y

こんな感じでインストール
ちゃんとインストールされとるか確認する

user@user:~@ cobc --v

インストールされればこんな感じで表示される

cobc (OpenCOBOL) 1.1.0
Copyright (C) 2001-2009 Keisuke Nishida / Roger While
Built    Aug 04 2016 15:56:22
Packaged Feb 06 2009 10:30:55 CET

じゃ、早速HelloWorld!してみましょう。
viエディタでカレントにHW.cobってソースファイルを作ります。

user@user:~@ vi HW.cob

そしたら以下を書きます。

      *これはコメントでソースは8文字目から始めます
      *7文字目まではスキップされますよ!注意しましょう!
       IDENTIFICATION DIVISION.
       PROGRAM-ID. helloworld.
       PROCEDURE DIVISION.
       DISPLAY "Hello World!".
       STOP RUN.
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
"HW.cob" [Incomplete last line] 5 lines, 141 characters

【解説】
7文字目の*はC++、PHPでいう//でコメントです。
IDENTIFICATION DIVISION.とPROCEDURE DIVISION.は必要な呪文です。何も考えず入れましょう。
PROGRAM-ID. の後のhelloworld.は何でもいいんですがプログラムの識別子です。
DISPLAY “Hello World!”.のDISPLAYはC++、PHPでいうprintです。
STOP RUN.はここで終わりますねっていう呪文です。
,/td><<<<<<< 注意!)COBOLのソースは必ず8スペース開けてから書きます!コメントは*を7スペース目に入れて8文字目から書きますんで注意してください!この約束を守らないと「./HW.cob:1: Error: Invalid indicator ‘F’ at column 7」って怒られます!

COBOLは4つのカテゴリで分けられるようです。

構文 意味
見出し IDENTIFICATION DIVISION. 見出し呪文
環境部 ENVIRONMENT DIVISION. データファイルを記述
データ部 DATA DIVISION. 変数などのメモリ領域を記述
手続き部 PROCEDURE DIVISION. 処理ルーチンを記述

じゃ、コンパイル(ビルド)しますね。

user@user:~@ cobc -x HW.cob
user@user:~@

するとカレントに`HW`って実行ファイルができますので実行させてみます。

user@user:~@ ./HW
Hello World!

おお!Hello World!しましたね!おしまい。次は計算が得意な言語らしいので計算をさせてみます。

Download CounterをWPプラグイン、PHP:Mysql、ファイル 形式で作成する[第二回]

ダウンロードカウンターで検索してこられる人が結構いるので今回は①WPプラグイン形式、②PHPスクリプトでMysql形式で記録閲覧、③PHPスクリプトでファイルで記録閲覧という3つのダウンロードカウンターを作ってみることにする

【実装】

まず、Anonymous(匿名)でのダウンロードとアカウント(登録制)を切り替えられるようにするため、WPの認証機能を使います。

require_once('./wp-load.php');

これを書くとWPのユーザーが今誰かを見ることができるようになります。_oneceなので一回だけって意味です。

あとは

/*オブジェクトを生成*/
new DownloadCounter;

というオブジェクトを作成して

/*DownloadCounterクラスを定義*/
class DownloadCounter {
    /*コンストラクタだから一回だけ:UE4Blueprintの場合はEventBiginPlay*/
    function __construct() {
        /*wordpressから自身のMySQLへ接続するインスタンスを呼ぶ*/
        global $wpdb;
        add_action('admin_menu', array($this, 'add_admin'));//管理者メニューに追加する準備
    }
 
    /*管理メニューの設定*/
    function add_admin() {
        if(substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2)=="ja"){
            $menuname="ダウンロードカウンター";
        }else{
            $menuname="DownloadCounter;
        }
        //level_8から10が管理者
        add_menu_page($nenuname,$menuname,'level_9', __FILE__, array($this,'WPDownloadCounter'));
    }

として以降に

function WPDownloadCounter(){

}

を書きます

Download CounterをWPプラグイン、PHP:Mysql、ファイル 形式で作成する[第一回]

ダウンロードカウンターで検索してこられる人が結構いるので今回は①WPプラグイン形式、②PHPスクリプトでMysql形式で記録閲覧、③PHPスクリプトでファイルで記録閲覧という3つのダウンロードカウンターを作ってみることにする

【設計】

①WPプラグイン形式で作成する

まずはワードプレスのPluginで作成してみる事にする

  • ダウンロードリンクにプラグインを指定することでIPとタイムスタンプを記録する
  • Anonymous(匿名)でのダウンロードとアカウント(登録制)を切り替えられる
  • 申請はアカウント登録のない場合は申請可能にする
  • メール登録型で申請メールに認証URLが送られ認証するとアカウントが承認される

といったチョット商用可能な感じのものにします。
WPプラグイン、PHPスクリプトも同じ仕様にします。

【ヘッダ】

<?php
/*
Plugin Name: WSPRI Download Counter
Plugin URI: https://wspri.dip.jp
Description: ダウンロードカウンタープラグイン
Author: j.amano
Version: 1.0
Author URI:https://wspri.dip.jp
*/
//user control
require_once('./wp-load.php');

ローカルIPをDDNSのドメインに変換する

DDNSでドメインを持っていてローカルからアクセスしようとすると何かと問題が起こる場合があるのでそんな時は端末のHOSTSファイルにDDNSのローカルIPとドメインを登録しとくとよい。

例)192.168.0.2         local.lo.jp     #local.lo.jpドメインのサーバのローカルIPが192.168.0.2 の場合

Windows10ではHOSTSファイルは以下にある。

C:\Windows\System32\drivers\etc

hostsファイルを編集しようとすると上書きできないのでまず、ドキュメントフォルダなどに保存しておき、

C:\Windows\System32\drivers\etc\hosts

ファイルを削除して、ドキュメントフォルダなどに保存したhostsファイルをコピー貼り付けまたは移動させる

これでOK

Lubuntuで突然DNSが引けなくなった!

インターネットへドメイン名でアクセスできなくなった。

IPじか打ちならいける。

なので

vi /etc/resolv.conf

#nameserver 127.0.0.1
nameserver 8.8.8.8

を書いてやりなおすと戻ります。ちなみに8.8.8.8はgoogleのネームサーバ

【追記】/etc/resolv.confが勝手に初期化されて書きかえられちゃう!

あれ?なんかlubuntuに接続できてない?なんでってresolv.confを見たら…

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

あれ?書き込んだ

nameserver 8.8.8.8

が消えてる?

ググってみたら参照のような問題が…

vi /etc/network/interfaces

nameserver 8.8.8.8

でrebootしたら大丈夫でした。