# Объяснение устаревшего кода

Копилот Чат может помочь объяснить незнакомый код.

Одна из самых больших проблем с устаревшим кодом помогает разработчикам понять, кто не знаком с языками или платформами. С помощью Копилот Чатможно объяснить фон, который у вас есть, и попросить объяснения.

## Пример сценария

Рассмотрим следующий код COBOL. Если вы являетесь разработчиком Python (например), возможно, вы не знакомы с COBOL, поэтому вы можете попросить Копилот Чат объяснить код.

```text id=cobol-insert-record
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.

```copilot copy prompt ref=cobol-insert-record
I'm a Python developer. Help me better understand this code. Please provide analogies.
```

## Пример отклика

> \[!NOTE] Следующий ответ является примером. Ответы Копилот Чат являются недетерминированными, поэтому вы можете получить другой ответ, показанный здесь.

Copilot предоставляет общие сведения о коде, прежде чем пройти различные операции и объяснить их таким образом, чтобы разработчики Python могли понять их. Он использует аналогии, чтобы сделать объяснение более доступным. Ответ может начинаться со следующего:

```text
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.
```

```python
# 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
```

## Дополнительные материалы

* [Инженерия подсказок для GitHub Copilot Chat](/ru/copilot/using-github-copilot/prompt-engineering-for-github-copilot)
* [Лучшие практики использования GitHub Copilot](/ru/copilot/using-github-copilot/best-practices-for-using-github-copilot)