Archive for the ‘COBOL’ Category

  1. Hello, Win32 API(COBOL) World!

    Posted on 6月 29th, 2012 by cx20

    Win32 API(COBOL)

    Win32 API は、Windows の機能にアクセスする為の API(Application Programming Interface)である。
    以下は OpenCobol による Win32 API の呼び出し例となっている。
    上記 COBOL コンパイラは直接 Win32 API を呼び出すことが出来ない為、C言語(gcc)で作成したライブラリをリンクすることで呼出しを実現している。

    ソースコード(C言語)

    #include <windows.h>
     
    int msgbox( LPCSTR lpszHwnd, LPCSTR lpszText, LPCSTR lpszCaption, LPCSTR lpszType ) {
        typedef int (WINAPI *PFNMESSAGEBOX)(HWND, LPCSTR, LPCSTR, UINT);
        HWND hWnd  = (HWND)atoi(lpszHwnd);
        UINT uType = (UINT)atoi(lpszType);
        HANDLE hdll;
        PFNMESSAGEBOX MessageBox;
        hdll = LoadLibrary("user32.dll");
        MessageBox = (PFNMESSAGEBOX)GetProcAddress(hdll, "MessageBoxA");
        MessageBox( hWnd, lpszText, lpszCaption, uType );
        return;
    }

    コンパイル方法(GNU C)

    C:¥> gcc -c msgbox.c

    ソースコード(COBOL)

           IDENTIFICATION DIVISION.
           PROGRAM-ID. hello.
           DATA DIVISION.
           WORKING-STORAGE SECTION.
           01 HWND    PIC 9(1)  VALUE 0.
           01 MSG     PIC X(30) VALUE "Hello, Win32 API(COBOL) World!".
           01 CAPTION PIC X(13) VALUE "Hello, World!".
           01 STYLE   PIC 9(1)  VALUE 0.
           PROCEDURE DIVISION.
           CALL "msgbox" USING HWND MSG CAPTION STYLE.
           STOP RUN.

    コンパイル&リンク方法(OpenCobol)

    C:¥> cobc -x hello.cob msgbox.o

    実行結果

    ---------------------------
    Hello, World!
    ---------------------------
    Hello, Win32 API(COBOL) World!
    ---------------------------
    OK   
    ---------------------------
  2. Hello, COBOL World!

    Posted on 12月 11th, 2011 by cx20

    COBOL

    COBOL は事務処理用に開発されたプログラミング言語である。
    名前は「汎用の商用目的言語(Common Business Oriented Language)」に由来する。

    ソースコード

           IDENTIFICATION DIVISION.
           PROGRAM-ID. hello.
           PROCEDURE DIVISION.
           DISPLAY "Hello, COBOL World!".
           STOP RUN.

    紙テープ(穿孔テープ)には以下のように出力される。(出力例は「ミスター・パンチ」より)

    ●●●●●●● ●  ●  ●      ●●●● ●●●●   ●   ● ●●●●●●● ●● ●●   
           ●●●●●●●  ●●●●●  ●●●●● ●●●●●            ●●●● ●●● 
    ●●●●●●●       ●● ●●●●●●     ● ●●●●●●●  ●●●●●●●    ●   ●
             ●●  ●               ● ●              ●● ● ●●  
            ●  ● ●  ● ●●●●  ● ●●  ● ●   ●●●         ●    ●●
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
           ●   ●     ●●●●●  ● ●● ●● ●●  ●●         ●●   ●●●
             ●     ●    ●  ●●●●  ●●●   ●● ●       ● ●  ● ●●
            ●●  ●●   ●  ●  ●● ●  ●●   ●  ●        ● ●   ●  

    コンパイル方法(OpenCOBOL)

    $ cobc -x hello.cob

    実行結果

    Hello, COBOL World!