23137
vagrantを使用したcentos6.5  
opencobol1.0  
という仕様でcobolの勉強をしています。  
CALL文を使用した際のサブルーチンのコンパイル方法がわかりません。

今までのコンパイルは「cobc -x --free ファイル名」  
という形でできたのですが、サブルーチン側のコンパイルをしようとするとエラーが出てしまいます。何かコンパイル方法に違いがあるのでしょうか？

ソースはこちら  
<http://www.tutorialspoint.com/cobol/cobol_subroutines.htm>  
を参考にし、MAIN.cob、SUB.cobという名前で作成した後

```

    $ cobc -x --free MAIN.cob
    $ cobc -x --free SUB.cob
    
```

とすると、

> SUB.cob:10: Error: Executable program requested but PROCEDURE/ENTRY has
> USING clause

というエラーが発生します。

SUB.cobの中は

```

    IDENTIFICATION DIVISION.
    PROGRAM-ID. UTIL.
    
    DATA DIVISION.
       LINKAGE SECTION.
       01 LS-STUDENT-ID PIC 9(4).
       01 LS-STUDENT-NAME PIC A(15).
    
    PROCEDURE DIVISION USING LS-STUDENT-ID, LS-STUDENT-NAME.
       DISPLAY 'In Called Program'.
       MOVE 1111 TO LS-STUDENT-ID.
    EXIT PROGRAM.
    
```

このようになってます。お分かりになる方よろしくおねがいいたします。
CC BY-SA 3.0
2016-03-14T11:58:59.903
23127
2016-03-15T05:18:06.547
2016-03-14T12:09:51.847
8000
8823
question
cobol
COBOLのCALL文のコンパイル方法
[依存性がある](http://www.tutorialspoint.com/cobol/cobol_subroutines.htm)ようですので、すべての関連したファイルを
**一緒に**
コンパイルする必要があると思います。`OpenCOBOL`の場合は、別々でコンパイルしたら、`SUB`から`MAIN`までのリンクが作られないようですね。あと、コンパイルする前に、コマンドのファイルの順序にご注意ください。

この場合は、`OpenCOBOL`で[下記](https://stackoverflow.com/a/29109331/1167750)のコマンドはどうでしょうか。

```

    cobc -x --free MAIN.cob SUB.cob
    
```

出力は：

```

    $ ./MAIN 
    In Called Program
    Student Id : 1111
    Student Name : Tim
    
```
CC BY-SA 3.0
2016-03-14T22:04:08.350
23137
2016-03-15T05:18:06.547
2017-05-23T12:38:55.250
-1
4129
23127
answer