IDENTIFICATION DIVISION.

       PROGRAM-ID. IF-STRUCTURES-AND-CONDITIONS.

 

       DATA DIVISION.

       WORKING-STORAGE SECTION.

       01  STUDENT-AVERAGE  PIC 999V9 VALUE 89.4.

       01  LETTER-GRADE     PIC X.

       01  I                PIC 9.

      

       PROCEDURE DIVISION.

       100-start-program.

       200-CHECK-IF-STMT.

      

      *  IF STATEMENT

      *  the word THEN after the condition is optional

      *  execution - if condition is true execute statement(s),

      *        go to end of structure and continue.

      *  question - where is the end of the structure?!

     

           IF STUDENT-AVERAGE >= 90 MOVE "A" TO LETTER-GRADE.

           IF STUDENT-AVERAGE >=80 AND < 90 MOVE "B" TO LETTER-GRADE.

           IF STUDENT-AVERAGE >=70 AND <80 MOVE "C" TO LETTER-GRADE.

           IF STUDENT-AVERAGE >=60 AND < 70 MOVE "D" TO LETTER-GRADE.

           IF STUDENT-AVERAGE < 60 MOVE "E" TO LETTER-GRADE.

           DISPLAY "LETTER-GRADE = " LETTER-GRADE.

           ACCEPT OMITTED.

           

      *  period on just stop run - does not work without periods!

      *  period on display, accept omitted, and stop run only (delete
      *        periods on IF stmts - no output, but does top for

      *        accept omitted

      *  period after every statement - works perfect!

      *  end-if after every IF, no periods - works perfect

      *  what would output if no AND portion on conditions?

 

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

 


       300-CHECK-IF-ELSE-STMT.

     

      *  IF-ELSE STATEMENT

      *  execution - if condition is true execute statement(s) between

      *        condition and else; if condition is false, execute

      *        statements in the else portion; only one set of statements

      *        is executed; once executed, go to end of structure and

      *        continue.

      *  match ELSE to closest IF above it

      *  match end of structure from inside out!

     

           IF STUDENT-AVERAGE >= 90

               MOVE "A" TO LETTER-GRADE

           else

               IF STUDENT-AVERAGE >=80 AND < 90

                   MOVE "B" TO LETTER-GRADE

               else

                   IF STUDENT-AVERAGE >=70 AND <80

                       MOVE "C" TO LETTER-GRADE

                   else

                       IF STUDENT-AVERAGE >=60 AND < 70

                           MOVE "D" TO LETTER-GRADE

                       else

                           IF STUDENT-AVERAGE < 60

                               MOVE "E" TO LETTER-GRADE

                           end-if

                       end-if

                   end-if

               end-if

           end-if

 

           DISPLAY "LETTER-GRADE = " LETTER-GRADE

           ACCEPT OMITTED.

          

      *  if put one end-if - no output

      *  if put one end-if and a period - will work

      *  delete AND portion and will still work

      *  indentation does NOT matter, but makes more readable!

 

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

 

      


      400-CHECK-IF-INSIDE-PERFORM.

 

           PERFORM 3 TIMES

          

               IF STUDENT-AVERAGE >= 90

                   MOVE "A" TO LETTER-GRADE

               END-IF

 

               IF STUDENT-AVERAGE >=80 AND < 90

                   MOVE "B" TO LETTER-GRADE

               END-IF

          

               IF STUDENT-AVERAGE >=70 AND <80

                   MOVE "C" TO LETTER-GRADE

               END-IF

          

               IF STUDENT-AVERAGE >=60 AND < 70

                   MOVE "D" TO LETTER-GRADE

               END-IF

          

               IF STUDENT-AVERAGE < 60

                   MOVE "E" TO LETTER-GRADE

               END-IF

 

               DISPLAY "LETTER-GRADE = " LETTER-GRADE

              

           END-PERFORM.

 

           ACCEPT OMITTED.

 

      *  what if put one period after first end-if?

      *  syntax error!  end-perform required, unmatched end-perform

      *  what if put a period after display and no end-perform?

      *  syntax error!  end-perform required

 

       500-ONE-MORE-TIME.

 

           MOVE 1 TO I.

           PERFORM 600-DO-IF-STRUCTURE UNTIL I > 3.

 

           ACCEPT OMITTED.

           STOP RUN.

          

       600-DO-IF-STRUCTURE.

 

           IF STUDENT-AVERAGE >= 90 MOVE "A" TO LETTER-GRADE.

 

           IF STUDENT-AVERAGE >=80 AND < 90 MOVE "B" TO LETTER-GRADE.

          

           IF STUDENT-AVERAGE >=70 AND <80 MOVE "C" TO LETTER-GRADE.

          

           IF STUDENT-AVERAGE >=60 AND < 70 MOVE "D" TO LETTER-GRADE.

          

           IF STUDENT-AVERAGE < 60 MOVE "E" TO LETTER-GRADE.

 

           DISPLAY "LETTER-GRADE = " LETTER-GRADE.

 

           ADD 1 TO I.

      

      *  what if forget above statement?! infinite loop

      *  what if no period after perform/until? works fine

      *  what forgot ACCEPT OMITTED and STOP RUN at bottom of 500 para?