レガシ コードの最大の課題の 1 つは、言語やフレームワークに慣れていない開発者がそれを理解するのを支援することです。 Copilot Chat を使うと、ユーザーは自分が持っている背景を説明して、説明を求めることができます。
サンプル シナリオ
次の COBOL コードについて考えます。 (たとえば) Python 開発者の場合、COBOL に慣れていない可能性があるので、Copilot Chat にコードの説明を依頼できます。
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
.
プロンプトの例
Python 開発者の観点からの COBOL コードの説明を求めることができます。
I'm a Python developer. Help me better understand this code. Please provide analogies.
応答の例
Note
次の応答は例です。 Copilot Chat の応答は非決定的であるため、ここで示したものとは異なる応答が返される可能性があります。
Copilot は、さまざまな操作を調べて Python 開発者が理解できる���法で説明する前に、コードの概要を提供します。 例えを使って、説明をよりわかりやすくします。 応答の始まりは、たとえば次のようなものです。
Let me explain this COBOL code using Python analogies:
High-Level Overview
This is similar to a Python function that inserts a person's record into a database with error handling.
# In Python, the COBOL divisions would be like:
# IDENTIFICATION DIVISION = module/file name
# PROGRAM-ID = function name
def insert_record():
pass
# DATA DIVISION would be like declaring these variables:
class WorkingStorage:
db_status = "" # WS-DB-STATUS
sqlcode = 0 # WS-SQLCODE
error_msg = "" # WS-ERROR-MSG
# LINKAGE SECTION is like function parameters
class PersonRecord:
def __init__(self, person_id: int, person_name: str, person_age: int):
self.person_id = person_id # PERSON-ID
self.person_name = person_name # PERSON-NAME
self.person_age = person_age # PERSON-AGE
self.success = False # LS-RESULT