IDENTIFICATION DIVISION.                                         
       PROGRAM-ID. TRAVEL.                                              
       AUTHOR. MARTIN O SULLIVAN                                        
       INSTALLATION. MOYLISH.                                           
       DATE-WRITTEN. APRIL 1997.                                     
                                                                        
       ENVIRONMENT DIVISION.                                            
       CONFIGURATION SECTION.                                           
       SOURCE-COMPUTER. IBMAS400.                                       
       OBJECT-COMPUTER. IBMAS400.                                       
       INPUT-OUTPUT SECTION.                                            
                                                                        
       FILE-CONTROL.                                                    
           SELECT UNSORTED-FILE                                         
           ASSIGN TO DISK-TRAVEL                                        
           ORGANIZATION IS SEQUENTIAL                                   
           ACCESS MODE IS SEQUENTIAL                                    
           FILE STATUS IS I-O-STATUS.                                   
                                                                        
           SELECT WORK-FILE                                             
            ASSIGN TO DISK-WORKF.                                        
                                                                         
            SELECT SORTED-FILE                                           
            ASSIGN TO DISK-SORTTRAVEL                                    
            ORGANIZATION IS SEQUENTIAL                                   
            ACCESS MODE IS SEQUENTIAL                                    
            FILE STATUS IS I-O-STATUS.                                   
                                                                         
            SELECT REPORT-FILE                                           
            ASSIGN TO PRINTER-QSYSPRT                                    
            ORGANIZATION IS SEQUENTIAL                                   
            FILE STATUS IS I-O-STATUS.                                   
                                                                         
        DATA DIVISION.                                                   
        FILE SECTION.                                                    
        FD UNSORTED-FILE                                                 
            LABEL RECORDS ARE STANDARD                                   
            DATA RECORD IS FA-UNSORTED-REC.                              
        01  FA-UNSORTED-REC.                                             
            03 FA-REP-CODE PIC 9.                                        
            03 FA-DESTINATION PIC X(14).                                 
           03 FA-DEPARTURE-DATE.                                        
             05 FA-DEPARTURE-YEAR PIC 9(2).                             
             05 FA-DEPARTURE-MONTH PIC 9(2).                            
             05 FA-DEPARTURE-DAY PIC 9(2).                              
           03 FA-RETURN-DATE.                                           
             05 FA-RETURN-YEAR PIC 9(2).                                
             05 FA-RETURN-MONTH PIC 9(2).                               
             05 FA-RETURN-DAY PIC 9(2).                                 
           03 FA-HOURS PIC 9(2).                                        
           03 FA-DISTANCE PIC 9(3).                                     
                                                                        
       SD WORK-FILE                                                     
           DATA RECORD IS SA-WORK-REC.                                  
       01  SA-WORK-REC.                                                 
           03 SA-REP-CODE PIC 9.                                        
           03 SA-DESTINATION PIC X(14).                                 
           03 SA-DEPARTURE-DATE.                                        
             05 SA-DEPARTURE-YEAR PIC 9(2).                             
             05 SA-DEPARTURE-MONTH PIC 9(2).                            
             05 SA-DEPARTURE-DAY PIC 9(2).                              
           03 SA-RETURN-DATE.                                           
             05 SA-RETURN-YEAR PIC 9(2).                                
             05 SA-RETURN-MONTH PIC 9(2).                               
             05 SA-RETURN-DAY PIC 9(2).                                 
           03 SA-HOURS PIC 9(2).                                        
           03 SA-DISTANCE PIC 9(3).                                     
                                                                        
       FD SORTED-FILE                                                   
           LABEL RECORDS ARE STANDARD                                   
           DATA RECORD IS FB-SORTED-REC.                                
       01  FB-SORTED-REC.                                               
           03 FB-REP-CODE PIC 9.                                        
           03 FB-DESTINATION PIC X(14).                                 
           03 FB-DEPARTURE-DATE.                                        
             05 FB-DEPARTURE-YEAR PIC 9(2).                             
             05 FB-DEPARTURE-MONTH PIC 9(2).                            
             05 FB-DEPARTURE-DAY PIC 9(2).                              
           03 FB-RETURN-DATE.                                           
             05 FB-RETURN-YEAR PIC 9(2).                                
             05 FB-RETURN-MONTH PIC 9(2).                               
             05 FB-RETURN-DAY PIC 9(2).                                 
           03 FB-HOURS PIC 9(2).                                        
           03 FB-DISTANCE PIC 9(3).                                     
                                                                        
       FD REPORT-FILE                                                   
           LABEL RECORD IS OMITTED                                      
           DATA RECORD IS FB-REP-REC.                                   
       01  FB-REP-REC PIC X(132).                                       
                                                                        
                                                                        
       WORKING-STORAGE SECTION.                                         
                                                                        
       01 SALES-REP-NAMES.                                              
          03 REP-NAMES.                                                 
          05 FILLER PIC X(12) VALUE "M O'CONNOR".                       
          05 FILLER PIC X(12) VALUE "S FITZGERALD".                     
          05 FILLER PIC X(12) VALUE "M O'SULLIVAN".                     
          05 FILLER PIC X(12) VALUE " P RYAN".                          
          05 FILLER PIC X(12) VALUE "R BARRY".                          
          03 SALES-REP-TABLE REDEFINES REP-NAMES                        
             OCCURS 5 TIMES PIC X(12).                                  
                                                                        
       01  STATUS-CODE-ETC.                                             
           03  I-O-STATUS            PIC XX.                            
           03  INPUT-ERR-MSG         PIC X(13) VALUE "ERROR IN READ".   
           03  OUTPUT-ERR-MSG        PIC X(14) VALUE "ERROR IN WRITE".  
                                                                        
       01 SALESPERSON-COST PIC 9(6)V99.                                 
       01 FINAL-TOTAL PIC 9(6)V99.                                      
       01 OVERALL-TOTAL PIC 9(6)V99.                                    
       01 LAST-USED-REP-CODE PIC 9.                                     
       01 WA-FILE-STAT PIC X(2).                                        
       01 WB-REP-STAT PIC X(2).                                         
       01 END-OF-FILE-FLAG PIC X.                                       
           88 END-OF-FILE VALUE "Y".                                    
           88 NOT-END-OF-FILE VALUE "N".                                
       01 THE-DATE.                                                     
           03 THE-YEAR PIC 9(2).                                        
           03 THE-MONTH PIC 9(2).                                       
           03 THE-DAY PIC 9(2).                                         
                                                                        
       01 REPORT-HEADING.                                               
           03 FILLER PIC X(5) VALUE SPACES.                             
           03 FILLER PIC X(7) VALUE "DATE : ".                          
           03 THE-DAY-OUT PIC 9(2).                                     
           03 FILLER PIC X VALUE "/".                                   
           03 THE-MONTH-OUT PIC 9(2).                                   
           03 FILLER PIC X VALUE "/".                                   
           03 THE-YEAR-OUT PIC 9(2).                                    
           03 FILLER PIC X(21) VALUE SPACES.                            
           03 FILLER PIC X(34) VALUE                                    
               "FOXHALL  DISTRIBUTION ".                                
                                                                        
       01 SALESPERSON-HEADING.                                          
           03 FILLER PIC X(10) VALUE SPACES.                            
           03 FILLER PIC X(19) VALUE                                    
           "SALESPERSON NAME : ".                                       
           03 SALESPERSON-NAME-OUT PIC X(12).                           
                                                                        
       01 DETAIL-HEADING.                                               
           03 FILLER PIC X(20) VALUE SPACES.                            
           03 FILLER PIC X(19) VALUE "DESTINATION".                     
           03 FILLER PIC X(17) VALUE "DEPARTURE DATE".                  
           03 FILLER PIC X(14) VALUE "RETURN DATE".                     
           03 FILLER PIC X(15) VALUE "NO. OF HOURS".                    
           03 FILLER PIC X(11) VALUE "DISTANCE".                        
           03 FILLER PIC X(10) VALUE "TOTAL COST".                      
                                                                        
       01 DETAIL-LINE.                                                  
           03 FILLER PIC X(20) VALUE SPACES.                            
           03 DESTINATION-OUT PIC X(14).                                
           03 FILLER PIC X(8) VALUE SPACES.                             
           03 DEPARTURE-DAY-OUT PIC 9(2).                               
           03 FILLER PIC X VALUE "/".                                   
           03 DEPARTURE-MONTH-OUT PIC 9(2).                             
           03 FILLER PIC X VALUE "/".                                   
           03 DEPARTURE-YEAR-OUT PIC 9(2).                              
           03 FILLER PIC X(8) VALUE SPACES.                             
           03 RETURN-DAY-OUT PIC 9(2).                                  
           03 FILLER PIC X VALUE "/".                                   
           03 RETURN-MONTH-OUT PIC 9(2).                                
           03 FILLER PIC X VALUE "/".                                   
           03 RETURN-YEAR-OUT PIC 9(2).                                 
           03 FILLER PIC X(8) VALUE SPACES.                             
           03 HOURS-OUT PIC 99.                                         
           03 FILLER PIC X(10) VALUE SPACES.                            
           03 DISTANCE-OUT PIC 999.                                     
           03 FILLER PIC X(7) VALUE SPACES.                             
           03 SALESPERSON-COST-OUT PIC œœœ,œœœ,œœœ.99.                  
                                                                        
                                                                        
       01 SALESPERSON-TOTAL-LINE.                                       
           03 FILLER PIC X(56) VALUE SPACES.                            
           03 FILLER PIC X(32) VALUE                                    
           "TOTAL EXPENSES FOR SALESPERSON  ".                          
           03 SALESPERSON-CODE2-OUT  PIC 9.                             
           03 FILLER PIC X(8) VALUE " IS ".                             
           03 SALESPERSON-TOTAL-OUT PIC 9(6).                           
                                                                        
       01 OVERALL-TOTAL-LINE.                                           
           03 FILLER PIC X(45) VALUE SPACES.                            
           03 FILLER PIC X(32) VALUE                                    
           "TOTAL EXPENSES FOR SALESPERSON IS".                         
           03 OVERALL-TOTAL-OUT PIC œœœ,œœœ.99.                         
                                                                        
       01 FINAL-TOTAL-LINE.                                             
          03 FILLER PIC X(45) VALUE SPACES.                             
          03 FILLER PIC X(24) VALUE "TOTAL EXPENSES FOR MONTH".         
          03 FILLER PIC X(24) VALUE SPACES.                             
          03 FINAL-TOTAL-OUT PIC œœœ,œœœ.99.                            
                                                                        
       01 FOOTING-LINE.                                                 
          03 FILLER PIC X(40) VALUE SPACES.                             
          03 FILLER PIC X(25) VALUE "***  END  OF  REPORT  ***".        
                                                                        
                                                                        
       PROCEDURE DIVISION.                                              
                                                                        
       DECLARATIVES.                                                    
       INPUT-FAIL SECTION.                                              
           USE AFTER STANDARD EXCEPTION PROCEDURE ON INPUT.             
       INPUT-PARA.                                                      
           DISPLAY INPUT-ERR-MSG, I-O-STATUS.                           
       OUTPUT-FAIL SECTION.                                             
           USE AFTER STANDARD EXCEPTION PROCEDURE ON OUTPUT.            
       OUTPUT-PARA.                                                     
           DISPLAY OUTPUT-ERR-MSG, I-O-STATUS.                          
       END DECLARATIVES.                                                
       MAIN-PROCESSING SECTION.                                         
       TOP-LEVEL-PARA.                                                  
           PERFORM GET-DATE.                                            
           PERFORM SORT-PARA.                                           
           PERFORM START-UP.                                            
           PERFORM GET-RECORD.                                          
           PERFORM DO-SALES-REP UNTIL END-OF-FILE.                      
           PERFORM FINAL-TOTAL-PARA.                                    
           PERFORM CLOSE-DOWN.                                          
           STOP RUN.                                                    
                                                                        
       DO-SALES-REP.                                                    
           PERFORM WRITE-SALESPERSON-HEADINGS.                          
           PERFORM EACH-SALES-REP                                       
           UNTIL LAST-USED-REP-CODE                                     
           NOT EQUAL FB-REP-CODE OR END-OF-FILE.                        
           PERFORM TOTAL-LINE-PARA.                                     
           PERFORM LAST-USED-SALES-REP-PARA.                            
           PERFORM RESET-PARA.                                          
                                                                        
       SORT-PARA.                                                       
           SORT WORK-FILE                                               
           ON ASCENDING KEY SA-REP-CODE                                 
           USING UNSORTED-FILE                                          
           GIVING SORTED-FILE.                                          
                                                                        
       GET-DATE.                                                        
           ACCEPT THE-DATE FROM DATE.                                   
           MOVE THE-YEAR TO THE-YEAR-OUT.                               
           MOVE THE-MONTH TO THE-MONTH-OUT.                             
           MOVE THE-DAY TO THE-DAY-OUT.                                 
                                                                        
       START-UP.                                                        
           PERFORM OPEN-FILES.                                          
           PERFORM INIT-VARS.                                           
           PERFORM WRITE-HEADINGS-PARA.                                 
                                                                        
       INIT-VARS.                                                       
           MOVE ZEROS TO SALESPERSON-COST.                              
           MOVE ZEROS TO OVERALL-TOTAL.                                 
           SET NOT-END-OF-FILE TO TRUE.                                 
                                                                        
       OPEN-FILES.                                                      
           OPEN INPUT SORTED-FILE.                                      
           OPEN OUTPUT REPORT-FILE.                                     
                                                                        
       WRITE-HEADINGS-PARA.                                             
           WRITE FB-REP-REC FROM REPORT-HEADING AFTER                   
           ADVANCING 1 LINE.                                            
                                                                        
       LOW-TRAVEL.                                                      
           MULTIPLY FB-DISTANCE BY 0.30 GIVING SALESPERSON-COST.        
                                                                        
       HIGH-TRAVEL.                                                     
           COMPUTE SALESPERSON-COST = 3 + (FB-DISTANCE - 10) * 0.20.    
                                                                        
       WRITE-SALESPERSON-HEADINGS.                                      
           MOVE SALES-REP-TABLE(FB-REP-CODE) TO SALESPERSON-NAME-OUT.   
           WRITE FB-REP-REC FROM SALESPERSON-HEADING AFTER              
           ADVANCING 3 LINES.                                           
           WRITE FB-REP-REC FROM DETAIL-HEADING AFTER                   
           ADVANCING 3 LINES.                                           
           PERFORM LAST-USED-SALES-REP-PARA.                            
           PERFORM RESET-PARA.                                          
                                                                        
       DETAIL-LINE-PARA.                                                
           MOVE FB-DESTINATION TO DESTINATION-OUT.                      
           MOVE FB-DEPARTURE-DAY TO DEPARTURE-DAY-OUT.                  
           MOVE FB-DEPARTURE-MONTH TO DEPARTURE-MONTH-OUT.              
           MOVE FB-DEPARTURE-YEAR TO DEPARTURE-YEAR-OUT.                
           MOVE FB-RETURN-DAY TO RETURN-DAY-OUT.                        
           MOVE FB-RETURN-MONTH TO RETURN-MONTH-OUT.                    
           MOVE FB-RETURN-YEAR TO RETURN-YEAR-OUT.                      
           MOVE FB-HOURS TO HOURS-OUT.                                  
           MOVE FB-DISTANCE TO DISTANCE-OUT.                            
           MOVE SALESPERSON-COST TO SALESPERSON-COST-OUT.               
           WRITE FB-REP-REC FROM DETAIL-LINE AFTER ADVANCING            
           2 LINES.                                                     
           PERFORM GET-RECORD.                                          
                                                                        
       TOTAL-LINE-PARA.                                                 
           MOVE OVERALL-TOTAL TO OVERALL-TOTAL-OUT.                     
           WRITE FB-REP-REC FROM OVERALL-TOTAL-LINE AFTER ADVANCING     
           1 LINES.                                                     
       FINAL-TOTAL-PARA.                                                
           MOVE FINAL-TOTAL TO FINAL-TOTAL-OUT.                         
           WRITE FB-REP-REC FROM FINAL-TOTAL-LINE AFTER ADVANCING       
           1 LINES.                                                     
                                                                        
       LAST-USED-SALES-REP-PARA.                                        
           MOVE FB-REP-CODE TO LAST-USED-REP-CODE.                      
                                                                        
       GET-RECORD.                                                      
           READ SORTED-FILE  AT END SET END-OF-FILE TO TRUE.            
                                                                        
                                                                        
       EACH-SALES-REP.                                                  
           PERFORM EXPENCES-PARA.                                       
           PERFORM CALCULATE-TOTALS.                                    
           PERFORM DETAIL-LINE-PARA.                                    
                                                                        
       CALCULATE-TOTALS.                                                
           ADD SALESPERSON-COST TO OVERALL-TOTAL GIVING OVERALL-TOTAL.  
                                                                        
       EXPENCES-PARA.                                                   
           IF FB-DISTANCE < 10 THEN PERFORM LOW-TRAVEL                  
           ELSE PERFORM HIGH-TRAVEL.                                    
           IF FB-DEPARTURE-DAY IS NOT EQUAL TO FB-RETURN-DAY            
           THEN                                                         
           ADD 43 TO SALESPERSON-COST                                   
           ELSE IF FB-HOURS < 5 THEN ADD 6 TO SALESPERSON-COST          
           ELSE IF FB-HOURS < 10 THEN ADD 15 TO                         
           SALESPERSON-COST                                             
           ELSE ADD 20 TO SALESPERSON-COST.                             
                                                                        
       RESET-PARA.                                                      
           MOVE ZERO TO SALESPERSON-COST.                               
           ADD OVERALL-TOTAL TO FINAL-TOTAL.                            
           MOVE ZERO TO OVERALL-TOTAL.                                  
                                                                        
       CLOSE-DOWN.                                                      
           WRITE FB-REP-REC FROM FOOTING-LINE AFTER ADVANCING 3 LINE.   
           CLOSE SORTED-FILE.                                           
           CLOSE REPORT-FILE.                                           
           DISPLAY "END OF PROGRAM - GOOD BY".                          


   Link back to cobol page