IDENTIFICATION DIVISION. PROGRAM-ID. LOAN-MGMT. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT LOAN-FILE ASSIGN TO "data/loans.csv" ORGANIZATION IS LINE SEQUENTIAL. DATA DIVISION. FILE SECTION. FD LOAN-FILE RECORDING MODE F LABEL RECORDS ARE STANDARD. 01 LOAN-RECORD PIC X(1024). WORKING-STORAGE SECTION. 01 EOF PIC X VALUE 'N'. 01 WS-LOAN-ID PIC X(10). 01 WS-ACCOUNT-ID PIC 9(4). 01 WS-AMOUNT PIC 9(7)V99. 01 WS-RATE PIC 9V99. 01 WS-STATUS PIC X(20). LINKAGE SECTION. 01 LS-ACTION PIC X(10). 01 LS-DATA PIC X(1024). PROCEDURE DIVISION USING LS-ACTION LS-DATA. MAIN-LOGIC. EVALUATE LS-ACTION WHEN "READ" PERFORM READ-LOANS WHEN "CREATE" PERFORM CREATE-LOAN END-EVALUATE GOBACK. READ-LOANS. OPEN INPUT LOAN-FILE PERFORM UNTIL EOF = 'Y' READ LOAN-FILE INTO LOAN-RECORD AT END MOVE 'Y' TO EOF NOT AT END DISPLAY LOAN-RECORD END-READ END-PERFORM CLOSE LOAN-FILE. CREATE-LOAN. OPEN EXTEND LOAN-FILE WRITE LOAN-RECORD FROM LS-DATA CLOSE LOAN-FILE UNSTRING LS-DATA DELIMITED BY "," INTO WS-LOAN-ID, WS-ACCOUNT-ID, WS-AMOUNT, WS-RATE, WS-STATUS END-UNSTRING CALL "LOG-TRANSACTION" USING FUNCTION TRIM("Loan created: " & WS-LOAN-ID & " for account " & WS-ACCOUNT-ID)