レガシ コードの取り扱いは、コードが複雑な場合や十分に文書化されていない場合は特に、開発者にとって困難になることがあります。 このような場合は、Copilot Chat を使うと、よくわからないコードや複雑なコードを他の開発者に説明したり、将来の参照のために文書化したりするのに役立ちます。
サンプル シナリオ
次に示す COBOL のブロックは、データベースに接続してレコードを挿入します。 このコードにはドキュメントがないため、それが何をどのように行うのかを理解するのが難しくなります。
IDENTIFICATION DIVISION.
PROGRAM-ID. INSERT-RECORD.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-STATUS-FLAGS.
05 WS-DB-STATUS PIC X(2).
88 WS-SUCCESS VALUE "00".
05 WS-SQLCODE PIC S9(9) COMP.
05 WS-ERROR-MSG PIC X(50).
LINKAGE SECTION.
01 LS-PARAMETERS.
05 LS-PERSON-RECORD.
10 PERSON-ID PIC 9(6).
10 PERSON-NAME PIC X(50).
10 PERSON-AGE PIC 9(3).
05 LS-RESULT PIC X.
88 SUCCESS VALUE 'T'.
88 FAILED VALUE 'F'.
PROCEDURE DIVISION USING LS-PARAMETERS.
PERFORM INSERT-AND-VALIDATE
GOBACK
.
INSERT-AND-VALIDATE.
EXEC SQL
INSERT INTO persons (id, name, age)
VALUES (:PERSON-ID, :PERSON-NAME, :PERSON-AGE)
END-EXEC
IF SQLCODE = 0
EXEC SQL COMMIT END-EXEC
SET SUCCESS TO TRUE
ELSE
EXEC SQL ROLLBACK END-EXEC
SET FAILED TO TRUE
STRING "DB Error: " SQLCODE
DELIMITED BY SIZE
INTO WS-ERROR-MSG
DISPLAY WS-ERROR-MSG
END-IF
.
プロンプトの例
簡単なプロンプトを使って、Copilot Chat にコードの文書化を依頼できます。
Document this code
Note
Markdown のような別の形式でドキュメントを生成したい場合は、プロンプトで目的の出力形式を指定できます。 (例: Document this code in Markdown
)。
応答の例
Note
次の応答は例です。 Copilot Chat の応答は非決定的であるため、ここで示したものとは異なる応答が返される可能性があります。
Copilot では、コード ブロックのテキストでの概要と、各セクションのロジックと目的を説明するコメントを含む更新バージョンが提供されます。
次に例を示します。
*****************************************************************
* Program: INSERT-RECORD
* Purpose: Inserts a person record into the database with
* transaction management and error handling
*****************************************************************
IDENTIFICATION DIVISION.
PROGRAM-ID. INSERT-RECORD.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
* Status flags and error handling variables
01 WS-STATUS-FLAGS.
05 WS-DB-STATUS PIC X(2). *> Database status
88 WS-SUCCESS VALUE "00". *> Success flag
05 WS-SQLCODE PIC S9(9) COMP. *> SQL return code
05 WS-ERROR-MSG PIC X(50). *> Error message
LINKAGE SECTION.
* Input/Output parameters
01 LS-PARAMETERS.
05 LS-PERSON-RECORD.
10 PERSON-ID PIC 9(6). *> Person ID
10 PERSON-NAME PIC X(50). *> Person name
10 PERSON-AGE PIC 9(3). *> Person age
05 LS-RESULT PIC X. *> Operation result
88 SUCCESS VALUE 'T'. *> Success flag
88 FAILED VALUE 'F'. *> Failure flag
PROCEDURE DIVISION USING LS-PARAMETERS.
PERFORM INSERT-AND-VALIDATE
GOBACK
.
*****************************************************************
* Handles database insertion with transaction management
*****************************************************************
INSERT-AND-VALIDATE.
EXEC SQL
INSERT INTO persons (id, name, age)
VALUES (:PERSON-ID, :PERSON-NAME, :PERSON-AGE)
END-EXEC
IF SQLCODE = 0
EXEC SQL COMMIT END-EXEC *> Commit if successful
SET SUCCESS TO TRUE
ELSE
EXEC SQL ROLLBACK END-EXEC *> Rollback if failed
SET FAILED TO TRUE
STRING "DB Error: " SQLCODE
DELIMITED BY SIZE
INTO WS-ERROR-MSG
DISPLAY WS-ERROR-MSG
END-IF
.