Search code examples
cobol

I want to print triangle of " * " on middle of the screen using cobol?? how do i do it?


 IDENTIFICATION DIVISION.
        PROGRAM-ID. 11.
        WORKING-STORAGE SECTION.
        01 NUM1 PIC X(010) VALUE "*".
        01 NUM2 PIC S9(001) VALUE +2 COMP.
        PROCEDURE DIVISION.
        PERFORM TRI 6 TIMES
        STOP RUN.
       TRI.
        DISPLAY NUM1
        ADD +2 TO NUM2
        MOVE "*" TO NUM1(NUM2:6).

Solution

  • COBOL code to print triangle of asterisks in the middle of the screen is given below.

    IDENTIFICATION DIVISION.
    PROGRAM-ID. HELLO-WORLD.
    
    DATA DIVISION. 
    WORKING-STORAGE SECTION.
    01 WS-OUT PIC X(80) VALUE SPACES.
    01 WS-N PIC 9(2) VALUE 0. 
    01 WS-CENTER PIC 9(2) VALUE 40. 
    
    PROCEDURE DIVISION.
    
    PERFORM VARYING WS-N FROM 1 BY 2 UNTIL WS-N > 20
    MOVE ALL '*' TO WS-OUT(WS-CENTER:WS-N)
    COMPUTE WS-CENTER = WS-CENTER - 1
    DISPLAY WS-OUT
    END-PERFORM. 
    
    STOP RUN.
    

    Output:

                                   *                                        
                                  ***                                       
                                 *****                                      
                                *******                                     
                               *********                                    
                              ***********                                   
                             *************                                  
                            ***************                                 
                           *****************                                
                          *******************                               
    

    Run it here

    Thanks to Rick Smith for the suggestions.