2014-03-03 61 views
0

我正在嘗試與Java和Cobol進行通信。我需要從Cobol調用Java程序(帶參數)。從Cobol調用Java程序

,我讀了微聚焦一些文檔: http://supportline.microfocus.com/documentation/books/nx40/dijafc.htm http://supportline.microfocus.com/documentation/books/nx40/dijaco.htm

但我沒有找到真正的解決辦法,因爲我需要調用整個程序,而不是Java類。

在此先感謝。

+0

以與執行任何子過程相同的方式進行調用。在這個問題中沒有Java。 –

+0

整個程序可以被包含在一個Java類中... – Brendan

+0

我同意Brendan,但是還有像庫(Hibernate等)的其他依賴關係 – gcotis

回答

1

您發佈的鏈接很好地解釋了我們如何能夠實現Java課程。如果您關心參數,那麼使用參數構造函數編寫Java類並在從Cobol實例化類時傳遞參數。

如果您對Java類和Java程序感到困惑,那麼您需要知道,Java程序最多會編譯爲.class文件,而您的可執行文件包含.class文件。但沒有像java的.exe文件。

+0

Java的知識不是問題。我知道如何從Cobol實例化類。但我需要在Java和Cobol之間共享一個Java對象,並從Cobol的Java方法中進行調用。 – gcotis

+0

對不起,我沒有太多關於Java的意思,我編輯了我的答案。你的意思是說有一個Cobol程序正在運行,一個Java程序正在運行,並且你希望從正在運行的Java程序中將Java對象引用到Cobol程序中。 – Smitt

+1

@gcotis;看看SWIG(簡化包裝和接口生成器),JNI(Java本地接口)和JNA(Java本地訪問)。但我想說,Micro Focus頁面有你需要的所有細節。特別是關於com.microfocus.cobol的blurb。CobolBean和陣列示例中可能的很好的提示。 –

1

下面是一個示例程序,它將從COBOL97應用程序中啓動EXE。

檢查CallEXE演示在http://www.netcobol.com/support/code-samples/


當談到Microfocus ...

不能稱從微焦點INT或GNT一個EXE,但你可以叫一個非大型機程序(MFE中的Micro Focus方言)並向DOS發出一個shell,然後從那裏執行執行EXE的命令行或執行直接在Micro Focus CALL上傳遞的EXE文件(x'91'函數離子碼= 35)。

此外,您不會收回任何傳遞的參數,因爲一旦DOS外殼關閉,就不會返回參數。所以最好的方法是將它們寫入文件。

我包含一個示例程序,顯示此x'91'FC = 35調用。如您所見,您可以直接執行批處理文件或命令或EXE。

Working-Storage Section. 

1 Cmd-Line-Str. 

2    Pic X(45) 

    *  value 'RUN $IMSDIR\PCIMS RUNIMS BMP,DBUTIL,DEMO001T'. 

    *  value 'run lorince'. 

    value 'dir c:\ /o > d.d'. 

2 N-1   Pic X Value Low-Value. 

    1 Call-Func Pic X Comp-X Value 35. 

    1 Result  Pic X Comp-X. 

    1 Cmd-Line-Len Pic X Comp-X Value 0. 

    Procedure Division. 

    P1. 

    Display Cmd-Line-Str upon Command-Line 

    Call x'91' using Result, Call-Func, Cmd-Line-Len 

    If Result = Zeroes 

     Display 'Call worked' 

    End-If 

    Goback. 

我希望後給你一些更多的信息,我只有大型主機知識,還沒有嘗試過任何這上面。