COBOL_To_Java_and_CSharp_Converter
PROGRAM-ID. LOAN. DATA DIVISION. FILE SECTION. WORKING-STORAGE SECTION. 01 WS-VARS. 05 PRINCIPAL PIC 9(9) VALUE 0. 05 INTEREST-RATE PIC 99V99 VALUE 0. 05 LOAN-LENGTH PIC 99 VALUE 0. 05 NEXT-INTEREST PIC 99V99. 05 NEXT-YEAR PIC 99. 01 CLIENT-RECORD. 05 NAME PIC X(20). 05 ADDRESS PIC X(20) OCCURS 3 TIMES. 05 ID PIC 9(4) COMP. ... |
/// Sample COBOL to C# translated code namespace Softwaremining.Cobol2CSharp.Example { public sealed class Loan : BaseService { // Note: 01 level WS-VARS name is simplified (Optional) // and converted to a DAO // The DAO handles REDEFINES, COMP, OCCURS-DEPENDING, ... private Vars ; // Client-RECORD has been translated to ClientRecord DAO, // but since the program does not reference ClientRecord, // it will automatically be commented out. // private ClientRecord clientRecord; ... /// constructor public Loan(BaseService parent) : base(parent) { vars = new Vars(this); // clientRecord = new ClientRecord(this); ... |
* Main entry point to program LOAN-MAIN-001. * - * CLEAR SCREEN AND READ DATA * - IF LOAN-LENGTH > 4 THEN COMPUTE START-YEAR = LOAN-LENGTH - 4 ELSE COMPUTE START-YEAR = 0. IF INTEREST-RATE > 0.4 THEN COMPUTE START-INTEREST = INTEREST-RATE - 0.4 ELSE COMPUTE START-INTEREST = 0 END-IF MOVE 1 TO YEAR-ROW. * - * GO THRU THE NUMBER OF YEARS * - MOVE "% Rate->" TO DSP-NO-YRS(1). MOVE START-YEAR TO NEXT-YEAR PERFORM VARYING YEAR-ROW FROM 2 BY 1 UNTIL YEAR-ROW = 11 PERFORM DO-NEXT-ROW ADD 1 TO NEXT-YEAR END-PERFORM. * - * AND EXIT * - STOP RUN. |
/// <summary> /// Main Entrance to program /// </summary> protected void LoanMain () { // - // CLEAR SCREEN AND READ DATA // - if (vars.LoanLength > 4) { vars.StartYear = vars.LoanLength - 4; } else { vars.StartYear = 0; } if (vars.InterestRate > 0.4) { vars.StartInterest = vars.InterestRate - 0.4; } else { vars.StartInterest = 0; } vars.YearRow = 1; vars.setYearRow(1); // - // GO THRU THE NUMBER OF YEARS // - displayResult.SetNoYrs(0, "% Rate->"); vars.NextYear = vars.StartYear; vars.YearRow = 2; while (vars.YearRow != 11) { DoNextRow (); vars.NextYear = vars.NextYear + 1; vars.YearRow = vars.YearRow + 1; } // - // AND EXIT // - Stop(); } |
* * Calculates values for individual rows * DO-NEXT-ROW. MOVE START-INTEREST TO NEXT-INTEREST PERFORM VARYING INTEREST-COL FROM 1 BY 1 UNTIL INTEREST-COL = 10 MOVE NEXT-INTEREST TO DSP-RESULT(1, INTEREST-COL) PERFORM CALCULATE MOVE NEXT-RESULT TO DSP-RESULT(YEAR-ROW, INTEREST-COL) ADD 0.1 TO NEXT-INTEREST END-PERFORM. |
/// <summary> /// Calculates values for individual rows </summary> protected void DoNextRow () { vars.NextInterest = vars.StartInterest; vars.InterestCol = 1; while (vars.InterestCol != 10) { displayResult.SetResult(0, vars.InterestCol - 1 , vars.NextInterest); Calculate(); displayResult.SetResult(vars.YearRow - 1, vars.InterestCol - 1 , vars.NextResult); vars.NextInterest = vars.NextInterest + 0.1; vars.InterestCol = vars.InterestCol + 1; } } |
* * The next paragraph calculates CELL values * CALCULATE. COMPUTE INTDEC = NEXT-INTEREST / (12.0 * 100.0) COMPUTE NUMMONTHS = NEXT-YEAR * 12.0 ... |
/// <summary> /// The next paragraph calculates CELL values </summary> protected void Calculate () { vars.Intdec = vars.NextInterest / (12.0 * 100.0); vars.Nummonths = (int)((double)vars.NextYear * 12.0); ... } |