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  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 OVERALL-TOTAL PIC 9(6)V99.                                   
        01 LAST-USED-REP-CODE PIC 9.                                    
        01 FINAL-TOTAL PIC 9(6)V99.                                     
        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 LINE-COUNT PIC 99.                                           
        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 CODE : ".                           
           03 SALESPERSON-CODE-OUT PIC 9.                   
                                                            
       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 OVERALL-TOTAL-LINE.                                      
           03 FILLER PIC X(45) VALUE SPACES.                       
           03 FILLER PIC X(31) 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 LAST-USED-SALES-REP-PARA.                     
           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.                  
           MOVE ZEROS TO LINE-COUNT.                     
           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.                                         
            ADD 2 TO LINE-COUNT.                                      
                                                                      
        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 FB-REP-CODE TO  SALESPERSON-CODE-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.                                                  
                                                                      
        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.                                
                                                                       
        FINAL-TOTAL-PARA.                                              
            MOVE FINAL-TOTAL TO FINAL-TOTAL-OUT.                       
            WRITE FB-REP-REC FROM FINAL-TOTAL-LINE AFTER ADVANCING     
            1 LINES.                                                   
                                                                       
        POSS-NEW-PAGE.                                                 
            IF LINE-COUNT >= 64                                        
            MOVE ZEROS TO LINE-COUNT                                   
            PERFORM WRITE-HEADINGS-PARA.                               
                                                                       
        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