くんすとの備忘録

IT系技術メモ

移転しました。

15秒後に自動的にリダイレクトします。

WindowsにMSYS2を使ってCOBOL環境を構築する

前回(【COBOL】WindowsにOpenCOBOL環境を構築 - くんすとの備忘録)から約2年が経ち、パッケージやらなにやらのバージョンが上がったりしているので、最近のやり方でもう一度セットアップしてみます。


※前回はMinGWを使いましたが、今回はMSYS2を使用します。

MSYS2のセットアップ

インストーラの実行

MSYS2のインストーラを以下のサイトからダウンロードし、インストールします
MSYS2 installer

  • x86_64 … 64bit版
  • i686 … 32bit版

※管理者権限は不要のようです

環境のアップデート

スタートメニューより「MinGW-w64 Win32 Shell」を起動します。

※以降は全てこのコンソール上で作業します。

システムパッケージの更新

pacman --needed -Sy bash pacman pacman-mirrors msys2-runtime

MSYS2のコンソールを閉じて、開き直します。

組み込みパッケージの更新

pacman -Su

コンパイルに必要なパッケージのインストール

pacman -S gcc make gmp-devel libdb-devel
pacman -S wget
mkdir /usr/local

nkfのセットアップ

ソースコードのダウンロード~インストール
cd /tmp
wget -O nkf-2.1.3.tar.gz "http://sourceforge.jp/frs/redir.php?m=jaist&f=%2Fnkf%2F59912%2Fnkf-2.1.3.tar.gz"
bsdtar zxvf nkf-2.1.3.tar.gz
cd nkf-2.1.3
make
make install

opensource COBOLのセットアップ

ソースコードのダウンロード~インストール

http://www.osscons.jp/osscobol/download/ から「opensource COBOL v1.4.0J [SJIS, Source Package, include vbisam (extend OSSCons patch)]」をダウンロードしてインストールします

cd /tmp
wget -O opensource-cobol-1.4.0J.tar.gz "http://www.osscons.jp/osscobol/files/?action=cabinet_action_main_download&block_id=414&room_id=21&cabinet_id=11&file_id=308&upload_id=589"
bsdtar zxvf opensource-cobol-1.4.0J.tar.gz
cd opensource-cobol-1.4.0J
./configure
make
make install
cd

動作確認、コンパイルなど

検証用ソース

  • cobtest.cob
       IDENTIFICATION DIVISION.
       PROGRAM-ID. test1.
       ENVIRONMENT DIVISION.
      *
       DATA DIVISION.
      *
       WORKING-STORAGE SECTION.
       01  FILLER.
            03 TEST-X.
             10 VAR         PIC X(14).
             10 END-POINT   PIC X(01) VALUES '/'.
            03 TEST-9.
             10 VAR         PIC 9(08).
             10 END-POINT   PIC X(01) VALUES '/'.
            03 TEST-S.
             10 VAR         PIC S9(07).
             10 END-POINT   PIC X(01) VALUES '/'.
            03 TEST-COMP3.
             10 VAR         PIC S9(09)V9(2) COMP-3.
             10 END-POINT   PIC X(01) VALUES '/'.
            03 TEST-N.
             10 VAR         PIC N(09).
             10 END-POINT   PIC X(01) VALUES '/'.
            03 TEST-B.
             10 VAR         PIC S9(4) COMP.
             10 END-POINT   PIC X(01) VALUES '/'.
      *
       PROCEDURE DIVISION.
       MAIN-RTN.
           PERFORM EDIT-RTN.
           PERFORM OUTPUT-RTN.
           MOVE 9 TO RETURN-CODE.
       EXIT.
       STOP RUN.
      *
       EDIT-RTN SECTION.
           MOVE 'This is X Type'        TO VAR OF TEST-X.
           MOVE 12345678                TO VAR OF TEST-9.
           MOVE -12345                  TO VAR OF TEST-S.
           MOVE 123456789.12            TO VAR OF TEST-COMP3.
           MOVE 'こんにちは、世界!'    TO VAR OF TEST-N.
           MOVE 38533                   TO VAR OF TEST-B. *> 38533 = 0x9685 = '妹'
       EXIT.
      *
       OUTPUT-RTN SECTION.
           DISPLAY 'TEST-X    :'    TEST-X.
           DISPLAY 'TEST-9    :'    TEST-9.
           DISPLAY 'TEST-S9   :'    TEST-S.
           DISPLAY 'TEST-COMP3:'    TEST-COMP3.
           DISPLAY 'TEST-N    :'    TEST-N.
           DISPLAY 'TEST-BYTE :'    TEST-B.
       EXIT.
      *

コンパイル

cobc -x cobtest.cob

実行

./cobtest.exe | nkf -xS

実行結果

TEST-X    :This is X Type/
TEST-9    :12345678/
TEST-S9   :001234u/
TEST-COMP3:4Vx/
TEST-N    :こんにちは、世界!/
TEST-BYTE :妹/

以上。