Skip to main content

Explaining legacy code

Copilot Chat can help with explaining unfamiliar code.

One of the biggest challenges with legacy code is helping developers understand it who aren't familiar with the languages or frameworks. With Copilot Chat, you can explain the background you have and ask for an explanation.

Example scenario

Consider the following COBOL code. If you're a Python developer (as an example), you might not be familiar with COBOL, so you could ask Copilot Chat to explain the code to you.

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 . 

Example prompt

You can ask for an explanation of the COBOL code from the point of view of a Python developer.

I'm a Python developer. Help me better understand this code. Please provide analogies.

Example response

Note

The following response is an example. Copilot Chat responses are non-deterministic, so you may get a different response from the one shown here.

Copilot provides a high-level overview of the code, before walking through the various operations and explaining them in a way that Python developers can understand. It uses analogies to make the explanation more accessible. The response might start with the following:

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 namedefinsert_record(): pass# DATA DIVISION would be like declaring these variables:classWorkingStorage: db_status = ""# WS-DB-STATUS sqlcode = 0# WS-SQLCODE error_msg = ""# WS-ERROR-MSG# LINKAGE SECTION is like function parametersclassPersonRecord: 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

Further reading

close