From ab393a02816e7e76b763abd53a55cdf8a418c563 Mon Sep 17 00:00:00 2001 From: Alex Dukhan Date: Thu, 12 Feb 2026 21:06:03 +0000 Subject: [PATCH] Add COBOL syntax highlighting --- .gitmodules | 3 + assets/syntaxes/02_Extra/COBOL | 1 + tests/syntax-tests/highlighted/COBOL/test.cbl | 61 +++++++++++++++++++ tests/syntax-tests/source/COBOL/test.cbl | 61 +++++++++++++++++++ 4 files changed, 126 insertions(+) create mode 160000 assets/syntaxes/02_Extra/COBOL create mode 100644 tests/syntax-tests/highlighted/COBOL/test.cbl create mode 100644 tests/syntax-tests/source/COBOL/test.cbl diff --git a/.gitmodules b/.gitmodules index ee84fe05..b64280c6 100644 --- a/.gitmodules +++ b/.gitmodules @@ -278,3 +278,6 @@ [submodule "assets/syntaxes/02_Extra/Gomod"] path = assets/syntaxes/02_Extra/Gomod url = https://github.com/mitranim/sublime-gomod +[submodule "assets/syntaxes/02_Extra/COBOL"] + path = assets/syntaxes/02_Extra/COBOL + url = https://github.com/adukhan99/sublime_cobol.git diff --git a/assets/syntaxes/02_Extra/COBOL b/assets/syntaxes/02_Extra/COBOL new file mode 160000 index 00000000..90f88bf6 --- /dev/null +++ b/assets/syntaxes/02_Extra/COBOL @@ -0,0 +1 @@ +Subproject commit 90f88bf65f339be3b42d6c490bca0a4a85cefad0 diff --git a/tests/syntax-tests/highlighted/COBOL/test.cbl b/tests/syntax-tests/highlighted/COBOL/test.cbl new file mode 100644 index 00000000..11e19fe9 --- /dev/null +++ b/tests/syntax-tests/highlighted/COBOL/test.cbl @@ -0,0 +1,61 @@ +IDENTIFICATION DIVISION. +PROGRAM-ID. PAYROLL-CALC. + +DATA DIVISION. +WORKING-STORAGE SECTION. + 01 EMPLOYEE-DETAILS. + 05 EMPLOYEE-NAME PIC X(30). + 05 HOURS-WORKED PIC 99V9. + 05 HOURLY-RATE PIC 99V99. + 01 PAY-CALCULATIONS. + 05 GROSS-PAY PIC 9(5)V99. + 05 OVERTIME-HOURS PIC 99V9. + 05 OVERTIME-PAY PIC 9(5)V99. + 05 TAX-RATE PIC V99 VALUE 0.10. + 05 TAX-AMOUNT PIC 9(5)V99. + 05 NET-PAY PIC 9(5)V99. + +PROCEDURE DIVISION. +MAIN-LOGIC. + DISPLAY "--- COBOL Payroll Calculator ---". + + DISPLAY "Enter Employee Name: ". + ACCEPT EMPLOYEE-NAME. + + DISPLAY "Enter Hours Worked (e.g., 40.5): ". + ACCEPT HOURS-WORKED. + + DISPLAY "Enter Hourly Rate (e.g., 15.75): ". + ACCEPT HOURLY-RATE. + + PERFORM CALCULATE-GROSS-PAY. + PERFORM CALCULATE-TAX. + PERFORM CALCULATE-NET-PAY. + PERFORM DISPLAY-RESULTS. + + STOP RUN. + +CALCULATE-GROSS-PAY. + IF HOURS-WORKED > 40 THEN + COMPUTE OVERTIME-HOURS = HOURS-WORKED - 40 + COMPUTE OVERTIME-PAY = OVERTIME-HOURS * HOURLY-RATE * 1.5 + COMPUTE GROSS-PAY = (40 * HOURLY-RATE) + OVERTIME-PAY + ELSE + COMPUTE GROSS-PAY = HOURS-WORKED * HOURLY-RATE + END-IF. + +CALCULATE-TAX. + COMPUTE TAX-AMOUNT = GROSS-PAY * TAX-RATE. + +CALCULATE-NET-PAY. + COMPUTE NET-PAY = GROSS-PAY - TAX-AMOUNT. + +DISPLAY-RESULTS. + DISPLAY "----------------------------------". + DISPLAY "Employee Name: " EMPLOYEE-NAME. + DISPLAY "Hours Worked: " HOURS-WORKED. + DISPLAY "Hourly Rate: " HOURLY-RATE. + DISPLAY "Gross Pay: " GROSS-PAY. + DISPLAY "Tax (10%): " TAX-AMOUNT. + DISPLAY "Net Pay: " NET-PAY. + DISPLAY "----------------------------------". \ No newline at end of file diff --git a/tests/syntax-tests/source/COBOL/test.cbl b/tests/syntax-tests/source/COBOL/test.cbl new file mode 100644 index 00000000..ab552167 --- /dev/null +++ b/tests/syntax-tests/source/COBOL/test.cbl @@ -0,0 +1,61 @@ +IDENTIFICATION DIVISION. +PROGRAM-ID. PAYROLL-CALC. + +DATA DIVISION. +WORKING-STORAGE SECTION. + 01 EMPLOYEE-DETAILS. + 05 EMPLOYEE-NAME PIC X(30). + 05 HOURS-WORKED PIC 99V9. + 05 HOURLY-RATE PIC 99V99. + 01 PAY-CALCULATIONS. + 05 GROSS-PAY PIC 9(5)V99. + 05 OVERTIME-HOURS PIC 99V9. + 05 OVERTIME-PAY PIC 9(5)V99. + 05 TAX-RATE PIC V99 VALUE 0.10. + 05 TAX-AMOUNT PIC 9(5)V99. + 05 NET-PAY PIC 9(5)V99. + +PROCEDURE DIVISION. +MAIN-LOGIC. + DISPLAY "--- COBOL Payroll Calculator ---". + + DISPLAY "Enter Employee Name: ". + ACCEPT EMPLOYEE-NAME. + + DISPLAY "Enter Hours Worked (e.g., 40.5): ". + ACCEPT HOURS-WORKED. + + DISPLAY "Enter Hourly Rate (e.g., 15.75): ". + ACCEPT HOURLY-RATE. + + PERFORM CALCULATE-GROSS-PAY. + PERFORM CALCULATE-TAX. + PERFORM CALCULATE-NET-PAY. + PERFORM DISPLAY-RESULTS. + + STOP RUN. + +CALCULATE-GROSS-PAY. + IF HOURS-WORKED > 40 THEN + COMPUTE OVERTIME-HOURS = HOURS-WORKED - 40 + COMPUTE OVERTIME-PAY = OVERTIME-HOURS * HOURLY-RATE * 1.5 + COMPUTE GROSS-PAY = (40 * HOURLY-RATE) + OVERTIME-PAY + ELSE + COMPUTE GROSS-PAY = HOURS-WORKED * HOURLY-RATE + END-IF. + +CALCULATE-TAX. + COMPUTE TAX-AMOUNT = GROSS-PAY * TAX-RATE. + +CALCULATE-NET-PAY. + COMPUTE NET-PAY = GROSS-PAY - TAX-AMOUNT. + +DISPLAY-RESULTS. + DISPLAY "----------------------------------". + DISPLAY "Employee Name: " EMPLOYEE-NAME. + DISPLAY "Hours Worked: " HOURS-WORKED. + DISPLAY "Hourly Rate: " HOURLY-RATE. + DISPLAY "Gross Pay: " GROSS-PAY. + DISPLAY "Tax (10%): " TAX-AMOUNT. + DISPLAY "Net Pay: " NET-PAY. + DISPLAY "----------------------------------". \ No newline at end of file