Department of ISDSWestern Illinois University

IS 340AMARAVADI

Review the Honor roll program and answer the questions below.

IDENTIFICATION DIVISION.

PROGRAMID.PROGRAMSCORE.

AUTHOR.TOM LEE.

INSTALLATIONORISC.

DATEWRITTEN.Sept 24, 2006.

ENVIRONMENT DIVISION.

CONFIGURATION SECTION.

SOURCECOMPUTER. IBM3780.

OBJECTCOMPUTER. IBM3780.

INPUTOUTPUT SECTION.

FILECONTROL.

SELECT RECORDSIN ASSIGN TO SCORES, USE "RT=Z".

SELECT PRINTOUT ASSIGN TO OUTPUT.

DATA DIVISION.

FILE SECTION.

FDRECORDSIN

LABEL RECORDS ARE OMITTED.

01INRECORDPIC X(72).

FDPRINTOUT

LABEL RECORDS ARE OMITTED.

01PRINTLINEPIC X(72).

WORKINGSTORAGE SECTION.

77STUDENTCOUNTPIC 9(3)VALUE ZEROES.

01FLAG.

05 ENDOFFILEFLAGPIC XVALUE "N".

05 NOMOREDATAPIC XVALUE "Y".

01STUDENTRECORD.

05NAME-INPIC X(20).

05GPA-INPIC 9V99.

05FILLERPIC X(49).

01HDG.

05FILLERPIC X(5)VALUE SPACES.

05FILLERPIC X(9)VALUE "OAKRIVER”

05FILLERPIC X(11)VALUE "UNIVERSITY”

05FILLERPIC X(17)VALUE "HONOR ROLL REPORT"

05FILLERPIC X(30)VALUE SPACES.

01HDG1.

05FILLERPIC X(10)VALUE SPACES.

05FILLERPIC X(15)VALUE "THE HONOR ROLL”

05FILLERPIC X(8)VALUE "STUDENTS".

05FILLERPIC X(39)VALUE SPACES.

01HDG2.

05FILLERPIC X(5)VALUE SPACES.

05FILLERPIC X(12)VALUE "STUDENT NAME".

05FILLERPIC X(18)VALUE SPACES.

05FILLERPIC X (3)VALUE "GPA".

05FILLERPIC X(34)VALUE SPACES.

01HDG3

05FILLERPIC X(72)VALUE SPACES.

01STUDENTLINE.

05FILLERPIC X(5)VALUE SPACES.

05NAME-OUTPIC X(20) .

05FILLERPIC X(10)VALUE SPACES.

05GPA-OUTPIC 9.99.

05FILLERPIC X(33)VALUE SPACES.

01TOTALLINE.

05 FILLERPIC X (5)VALUE SPACES.

05 FILLERPIC X(14)VALUE "THE NUMBER OF”.

05 FILLERPIC X (11)VALUE "HONOR ROLL"

05 FILLERPIC X(12)VALUE "STUDENTS IS:”

05 STUDENTNUMBERPIC ZZ9.

05 FILLERPIC X(27)VALUE SPACES.

PROCEDURE DIVISION.

MAINPROGRAM.

PERFORM STARTPROCESS.

PEFORM DECISIONFORHONORROLL

UNTIL ENDOFFILEFLAG = "Y".

PERFORM WRAPITUP.

STOP RUN.

STARTPROCESS.

OPEN INPUT RECORDSIN OUTPUT PRINTOUT.

MOVE SPACES TO STUDENTLINE.

WRITE PRINTLINE FROM HDG AFTER ADVANCING 2 LINES. WRITE PRINTLINE FROM HDG1 AFTER ADVANCING 2 LINES. WRITE PRINTLINE FROM HDG2 AFTER ADVANCING 2 LINES. WRITE PRINTLINE FROM HDG3 AFTER ADVANCING I LINE.

DECISIONFORHONORROLL.

READ RECORDSIN INTO STUDENTRECORD AT END

MOVE NOMOREDATA TO ENDOFFILEFLAG.

MOVE NAME-IN TO NAME-OUT. MOVE GPA-IN TO GPA-OUT.

IF (GPA-IN 3.49)

WRITE PRINTLINE FROM STUDENTLINE

AFTER ADVANCING 1 LINE ADD 1 TO STUDENTCOUNT.

WRAPITUP.

MOVE STUDENTCOUNT TO STUDENTNUMBER.

WRITE PRINTLINE FROM TOTALLINE AFTER ADVANCING 3 LINES.

CLOSE RECORDSIN, PRINTOUT.

OAKRIVER UNIVERSITY HONOR ROLL REPORT

THE HONOR ROLL STUDENTS

STUDENT NAME GPA

MARY SMITH3.75

TOM TOSHIBA3.95

SUSAN O'MALLEY3.50

MICHAEL RAMIREZ 3.65

THE NUMBER OF HONOR ROLL STUDENTS IS: 4

QUESTIONS:

Modify the Honor roll program so as to accomodate the following changes:

1.The heading should be "Western Illinois University Honor Roll Report."

2.Print out names and GPAs of all students? The title also has to be modified

accordingly.

3.The names and GPAs of students are double spaced.

4.The bottom line reads "Average GPA of students" and calculates their average GPA.

Prolog is a Fifth generation language often used in connection with Artificial Intelligence. A

prolog program consists of three parts: 1) Facts, 2) Clauses, and 3) Goals. The fundamental

unit in Prolog is a "Predicate" which is the name of any relationship for e.g. "approve loan,"

"credit status" etc. in the example below. Predicates can have one or more arguments. The clauses section contains the “clauses,” which can be thought of as functions. The Prolog program uses logic to prove the right hand side of a clause, using available facts (from the “facts” section). Since there can be multiple clauses in a program, the goal section needs to specify which clauses are to be tested. All these are clarified in the following example:

PROLOG EXAMPLE

Facts

bank_I balance(jeff, reasonable)

bank_balance(mark, substantial)

credit_status(jeff, poor)

credit_status(mark, reasonable)

credit_status(mary, reasonable)

Clauses

approve_loan(X) :-- bank balance(X, substantial), credit_status(X, good).

approve_loan(X) :-- bankbalance(X, reasonable), credit_status(X, good).

approveloan(X) :-- bankbalance(X, substantial), credit_status(X, reasonable).

Goal

approve_loan(mark)?approve_loan(mary)?approve_loan(jeff)?

QUESTIONS

  1. Evaluate the goals above.
  1. Write the clauses for a Prolog program that tests if an animal is a cheetah. An animal is a cheetah if it barks, it has spots and runs fast.
  1. Write facts for monkeys and tigers corresponding to the clause above.