Одна из самых больших проблем с устаревшим кодом помогает разработчикам понять, кто не знаком с языками или платформами. С помощью 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
.
Пример запроса
Вы можете запросить объяснение кода COBOL с точки зрения разработчика Python.
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