このブログを検索

2013/05/26

opencobol

ちょっとcobolをやってみようと思う。
かつて仕事で使っていた。
opencobolをインストールしてみる。

wget http://sourceforge.net/projects/open-cobol/files/open-cobol/1.1/open-cobol-1.1.tar.gz/download

解凍して、configure, make, make install...
と思ったらmakeができない。
よく見るとconfigureの最後にエラーが出ている。

configure: error: gmp.h is required

gmpとは、The GNU Multiple Precision Arithmetic Library のことのようだ。http://gmplib.org/ からダウンロードしてくる。

wget ftp://ftp.gmplib.org/pub/gmp-5.1.2/gmp-5.1.2.tar.lz

拡張子がlz.... LHAで圧縮されているのか?なんで?
linuxでlzhのファイルを扱うのは初めてだ。
tarに --lzip というオプションがあることがわかったので指定するが失敗する。lhaをインストールしないといけないのか。

# tar xf gmp-5.1.2.tar.lz --lzip
tar (child): lzip: exec 不能: そのようなファイルやディレクトリはありません
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now

lzipを持ってくる。

http://sourceforge.jp/projects/freshmeat_lzip/releases/

windowsで落としてftpでさくらのVPSのcentosに送った。
解凍してconfigure, make, make install
tarの--lzipオプションが使えるようになった。
無事解凍。

gmpをconfigure, make, make install

opencobol再度configure... できた。make, make install

サンプルソースをコンパイルしてみる。

cobc -x hello.cob

実行してみると、

./hello: error while loading shared libraries: libcob.so.1: cannot open shared object file: No such file or directory

/usr/local/libにちゃんと libcob.so.1はある。
調べると、ldconfigをすればよいことがわかる。

参考 http://d.hatena.ne.jp/GARAPON/20100406/1270567339

動いた!

# ./hello
Hello World
0
Hello World
0
Hello World
2

ちなみにソースは http://codezine.jp/article/detail/2291?p=4
にあったもの。

123456*890123456789012345678901234567890123456789012345678901234567890
IDENTIFICATION DIVISION.
PROGRAM-ID.    SAMPLE1.
AUTHOR. Eiichi Fuse.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 CMD PIC 9.
PROCEDURE DIVISION.
PG-TOP.
DISPLAY "Hello World".
ACCEPT CMD.
IF CMD = 0 THEN GO TO PG-TOP.
STOP RUN.

ファイルを読んで集計する。

123456*890123456789012345678901234567890123456789012345678901234567890123456789
IDENTIFICATION   DIVISION.
PROGRAM-ID.      MYPROG01.
ENVIRONMENT      DIVISION.
INPUT-OUTPUT     SECTION.
FILE-CONTROL.
SELECT  MEIBO   ASSIGN  TO "meibo.txt"
ORGANIZATION    LINE    SEQUENTIAL
FILE STATUS IS MEIBO-STS.
DATA             DIVISION.
FILE             SECTION.
FD       MEIBO.
01       MEIBO-RECORD.
05      BANGOU          PIC X(8).
05      NAMAE           PIC X(20).
05      TELEPHONE       PIC X(15).
05      JUSHO           PIC X(20).
05      SALARY          PIC 9(8).
WORKING-STORAGE  SECTION.
01 MEIBO-STS     PIC XX.
01 GOUKEI        PIC 9(10)       VALUE ZERO.
01 JUDGE         PIC X.
88      ZOKKO           VALUE "1".
88      SHURYO          VALUE "2".
PROCEDURE        DIVISION.
MAIN             SECTION.
HAJIME.
OPEN    INPUT           MEIBO.
SET     ZOKKO           TO      TRUE.
YOMIKOMI.
PERFORM UNTIL           SHURYO
READ    MEIBO
AT END
SET     SHURYO  TO      TRUE;
NOT AT END
DISPLAY BANGOU NAMAE SALARY
ADD SALARY      TO      GOUKEI
END-READ
END-PERFORM.
DISPLAY         GOUKEI.
OWARI.
CLOSE                   MEIBO.
STOP                    RUN.


DISPLAY文で見出しをつけようと "number:" などというのを挟むと正しく表示されなかったりコンパイルエラーになったりする・・・

なぜだろう・・・

ファイルの項目を日本語にしてみたがうまくいかない・・・日本語対応が不十分という情報もみかけた・・・