1. Header

Procedure division의 Header는 다음 그림과 같이 USING paragraph, RETURNING paragraph로 구성된다.

figure pd program procedure division header
Program Procedure division Header Format

다음은 각 설정 항목에 대한 설명이다.

  • USING paragraph

    • USING paragraph는 프로그램이 호출되었을 때 호출한 프로그램으로부터 파라미터를 전달받기 위해 지정한다.

    • USING을 통해 데이터를 전달받기 위해서는 프로그램의 linkage section에 전달받을 데이터 항목에 대해 01 혹은 77level 아이템으로 기술해야 한다. 반면 CALL을 사용해서 서브 프로그램에 데이터를 전달하기 위해서는 호출한 프로그램의 Data division에 전달할 파라미터의 데이터 항목을 기술해야 한다.

      linkage section에 지정된 항목은 다음의 조건을 만족해야만 참조가 가능하다.

      • USAGE paragraph에 지정된 오퍼랜드

      • SET ADDRESS OF, CALL ... BY REFERENCE ADDRESS OF의 오퍼랜드

      • 위의 조건을 만족하면서 REDEFINES 또는 RENAMES가 정의된 오퍼랜드

      • 위의 조건을 만족하는 서브 항목

      • 위의 조건을 만족하는 condition-name이나 index-name

    • USING을 통해 Non-COBOL 프로그램에서 COBOL 프로그램으로 데이터를 전달받을 수 있으며, 반대로 COBOL 프로그램에서 Non-COBOL로 데이터를 전달할 수 있다.

    • 호출하는 프로그램에서 전달하는 파라미터와 호출되는 프로그램에서 전달 받는 파라미터 간의 대응 관계는 지정한 파라미터의 이름에 의해 결정되는 것이 아니라 위치에 의해 결정된다. 호출하는 프로그램과 호출되는 프로그램에서 대응되는 identifier는 Data description은 동일할 필요는 없지만 바이트 수는 동일해야 한다.

    • 파라미터의 전달 방식에는 BY REFERENCE(참조에 의한) 방식과 BY VALUE(값에 의한)방식이 있다. 파라미터 전달 방식에 대한 자세한 내용은 chapter-procedure-division.adoc#sect_statement_CALL을 참조한다.

  • RETURNING paragraph

    • RETURNING paragraph는 호출한 프로그램에게 값을 전달하기 위해 지정한다.

    • data-name2는 프로그램의 linkage section에 01/77level로 기술되어 있어야 한다.

    • RETURNING 데이터 항목은 출력 전용 데이터 항목이다. 프로그램 초기상태에서 이 데이터 항목의 값은 예상할 수 없다. 따라서 이 데이터 항목을 참조하기 전에 반드시 초기화를 해야 한다. RETURNING paragraph에 대한 자세한 내용은 chapter-procedure-division.adoc#sect_statement_CALL을 참조한다.