Program Which Shows The Different Data Declarations (Data Types) in COBOL
Program Which Shows The Different Data Declarations (Data Types) in COBOL
Program which shows the different data declarations (data types) in COBOL
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM1.
AUTHOR. Indus Computer Services.
*TYPE OF DATA DECLARATION IN COBOL
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 NUM PIC 9 VALUE 1.
77 ALPHA PIC A(3) VALUE 'ICS'.
77 ALPHANUM PIC X(20) VALUE 'WELCOME TO ICS'.
77 DEC PIC 9V9 VALUE 3.5.
77 SIGNUM PIC S9 VALUE -5.
PROCEDURE DIVISION.
DISPLAY 'NUMERIC (9) : ' NUM.
DISPLAY 'ALPHAPETS (A): 'ALPHA.
DISPLAY 'ALPHA NUMERIC (X) : ' ALPHANUM.
DISPLAY 'DECIMAL (V) : ' DEC.
DISPLAY 'SIGNED VALUE (S) : ' SIGNUM.
STOP RUN.<BR/>
3. Program to move a data from one variable to the other variable in COBOL
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM3.
AUTHOR. Indus Computer Services.
*THE MOVE VERB.
*TO MOVE THE DATA FROM ONE TO OTHER
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 A PIC 9 VALUE 5.
77 B PIC 9 VALUE ZERO.
PROCEDURE DIVISION.
MOVE A TO B.
DISPLAY B.
STOP RUN.
4. Program to move the numeric data from smaller sending size to larger
receiving size
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM4.
AUTHOR. Indus Computer Services.
*WHEN THE RECIEVE SIZE IS GREATER.
*FILLED WITH ZERO IN LEFT FOR NUMERIC
*FILLED WITH ZERO IN RIGHT FOR DECIMAL
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 A PIC 999V999 VALUE 345.678.
77 B PIC 9999V9999 VALUE ZERO.
PROCEDURE DIVISION.
MOVE A TO B.
DISPLAY 'RECIEVE SIZE IS GREATER'.
DISPLAY 'FILLED WITH ZERO IN LEFT AND RIGHT : ' B.
STOP RUN.
5. Program to move the numeric data from larger sending size to smaller
receiving size
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM5.
AUTHOR. Indus Computer Services.
*WHEN THE RECIEVE SIZE IS SMALLER.
*TRUNCATION OCCURS FROM THE LEFT IN NUMERIC
*TRUNCATION OCCURS FROM THE RIGHT IN DECIMAL
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 A PIC 99V99 VALUE 34.56.
77 B PIC 9V9 VALUE ZERO.
PROCEDURE DIVISION.
MOVE A TO B.
DISPLAY 'RECIEVE SIZE IS SMALLER'.
DISPLAY 'TRUNCATION OCCURS FROM THE LEFT AND RIGHT : ' B.
STOP RUN.
6. Program to move the alphanumeric data from LARGER sending size to
SMALLER receiving size
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM6.
AUTHOR. Indus Computer Services.
*WHEN THE RECIEVE SIZE IS SMALLER.
*TRUNCATION OCCURS FROM THE RIGHT IN ALPHA.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 A PIC X(5) VALUE 'HELLO'.
77 B PIC X(4) VALUE SPACES.
PROCEDURE DIVISION.
MOVE A TO B.
DISPLAY 'RECIEVE SIZE IS SMALLER'.
DISPLAY 'TRUNCATION OCCURS FROM THE RIGHT : ' B.
STOP RUN.
7. Program to move the alphanumeric data from larger sending size to
smaller receiving size
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM7.
AUTHOR. Indus Computer Services.
*WHEN THE RECIEVE SIZE IS GREATER.
*SPACE FILLING OCCURS FROM THE RIGHT IN ALPHANUMERIC.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 A PIC X(5) VALUE 'HELLO'.
77 B PIC X(10) VALUE SPACES.
PROCEDURE DIVISION.
MOVE A TO B.
DISPLAY 'RECIEVE SIZE IS GREATER'.
DISPLAY 'SPACE FILLING OCCURS FROM THE RIGHT :' B.
STOP RUN.
Arithmetic Verbs : ADD, SUBTRACT, DIVIDE, MULTIPLY, COMPUTE
10. Program to add more than two numbers
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM10.
AUTHOR. Indus Computer Services.
*ADD MORE THAN TWO NUMBERS
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 A PIC 9(2) VALUE 12.
77 B PIC 9(2) VALUE 12.
77 C PIC 9(2) VALUE 12.
77 D PIC 9(2) VALUE 12.
PROCEDURE DIVISION.
ADD A B C TO D.
DISPLAY 'D = A + B + C +D ' D.
STOP RUN.
11. Program to add more than two numbers and to store in a new one
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM11.
AUTHOR. Indus Computer Services.
*ADD MORE THAN TWO NUMBERS STORE IN A NEW DATA NAME
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 A PIC 9(2) VALUE 12.
77 B PIC 9(2) VALUE 12.
77 C PIC 9(2) VALUE 12.
77 D PIC 9(2) VALUE 12.
77 E PIC 9(2) VALUE ZERO.
PROCEDURE DIVISION.
ADD A B C D GIVING E.
DISPLAY 'E = A + B + C +D ' E.
STOP RUN.
12. Program to add more than two numbers and to store in multiple data
name
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM12.
AUTHOR. Indus Computer Services.
*ADD MORE THAN TWO NUMBERS STORE IN MULTI DATA NAME
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 A PIC 9(2) VALUE 12.
77 B PIC 9(2) VALUE 12.
77 C PIC 9(2) VALUE 12.
77 D PIC 9(2) VALUE 12.
77 E PIC 9(2) VALUE ZERO.
77 F PIC 9(2) VALUE ZERO.
PROCEDURE DIVISION.
ADD A B C D GIVING E F.
DISPLAY 'E = A + B + C +D ' E.
DISPLAY 'F = A + B + C +D ' F.
STOP RUN.
13. Program to subtract one number from the other.
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM13.
AUTHOR. Indus Computer Services.
*SUBTRACT TWO NUMBERS
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 A PIC 9(2) VALUE 24.
77 B PIC 9(2) VALUE 12.
PROCEDURE DIVISION.
SUBTRACT B FROM A.
DISPLAY 'A = A-B ' A.
STOP RUN.
14. Program to subtract one number from the other and to store it in a
new one.
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM14.
AUTHOR. Indus Computer Services.
*SUBTRACT TWO NUMBERS AND TO STORE IT IN A NEW ONE
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 A PIC 9(2) VALUE 24.
77 B PIC 9(2) VALUE 12.
77 C PIC 9(2) VALUE ZERO.
PROCEDURE DIVISION.
SUBTRACT B FROM A GIVING C.
DISPLAY 'C = A-B ' C.
STOP RUN.
15. Program to subtract more than one number from the one and to store
it in a new one.
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM15.
AUTHOR. Indus Computer Services.
*SUBTRACT TWO NUMBERS AND TO STORE IT IN A NEW ONE
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 A PIC 9(2) VALUE 48.
77 B PIC 9(2) VALUE 12.
77 C PIC 9(2) VALUE 12.
77 D PIC 9(2) VALUE ZERO.
PROCEDURE DIVISION.
SUBTRACT B C FROM A GIVING D.
DISPLAY 'D = A-B-C ' D.
STOP RUN.
16. Program to multiply two numbers.
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM16.
AUTHOR. Indus Computer Services.
*MULTIPLY TWO NUMBERS
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 A PIC 9(2) VALUE 2.
77 B PIC 9(2) VALUE 3.
PROCEDURE DIVISION.
MULTIPLY A BY B.
DISPLAY 'B = A * B ' B.
STOP RUN.
17. Program to multiply two numbers and to store it in a new one.
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM17.
AUTHOR. Indus Computer Services.
*MULTIPLY TWO NUMBERS AND TO STORE IT IN A NEW ONE
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 A PIC 9(2) VALUE 2.
77 B PIC 9(2) VALUE 3.
77 C PIC 9(2) VALUE ZERO.
PROCEDURE DIVISION.
MULTIPLY A BY B GIVING C.
DISPLAY 'C = A * B ' C.
STOP RUN.
ACCEPT-PARA.
DISPLAY 'ENTER NUMBER'.
ACCEPT STU-NO.
DISPLAY 'ENTE NAME OF THE STUDENT '.
ACCEPT STU-NAME.
DISPLAY 'ENTER TEL MARKS'.
ACCEPT TEL.
DISPLAY 'ENTER ENG MARKS'.
ACCEPT ENG.
DISPLAY 'ENTER HIN MARKS'.
ACCEPT HIN.
DISPLAY 'ENTER MAT MARKS'.
ACCEPT MAT.
DISPLAY 'ENTER SCI MARKS'.
ACCEPT SCI.
DISPLAY 'ENTER SOC MARKS'.
ACCEPT SOC.
PROCESS-PARA.
COMPUTE TOT = TEL + ENG + HIN + MAT + SCI + SOC.
COMPUTE AVG = TOT / 6.
IF TEL >= 35 AND ENG >=35 AND HIN >=35 AND MAT >=35
AND SCI >= 35 AND SOC >= 35 THEN
MOVE 'PASS' TO RES
ELSE
MOVE 'FAIL' TO RES
END-IF.
IF AVG >= 60 AND RES = 'PASS' THEN
MOVE 'FIRST' TO GRA
ELSE
IF AVG >= 50 AND AVG < 60 AND RES = 'PASS' THEN
MOVE 'SECOND' TO GRA
ELSE
IF AVG >= 35 AND AVG < 50 AND RES = 'PASS' THEN
MOVE 'THIRD' TO GRA
ELSE
MOVE '******' TO GRA
END-IF
END-IF
END-IF.
DISPLAY-PARA.
DISPLAY 'STU-NO : ' STU-NO.
DISPLAY 'STU-NAME : ' STU-NAME.
DISPLAY 'TOTAL : ' TOT.
DISPLAY 'AVERAGE : ' AVG.
DISPLAY 'RESULT : ' RES.
DISPLAY 'GRADE : ' GRA.
28. Program using EVALUATE CONDITION with true option.
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM28.
AUTHOR. Indus Computer Services.
*PROGRAM CHECK USING EVALUATE CONDITION.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 ENAME PIC X(10) VALUE IS SPACES.
77 SEX PIC X(1) VALUE IS SPACES.
PROCEDURE DIVISION.
DISPLAY 'ENTER YOUR NAME'.
ACCEPT ENAME.
DISPLAY 'ENTER YOUR SEX(M/F)'.
ACCEPT SEX.
EVALUATE TRUE
WHEN SEX='M'
DISPLAY 'HELLO MR.' ENAME
WHEN SEX='F'
DISPLAY 'HELLO MISS.'ENAME
WHEN OTHER
DISPLAY 'PLEASE ENTER A VALID INPUT'
END-EVALUATE.
STOP RUN.
ACCEPT-PARA.
DISPLAY 'ENTER NUMBER'.
ACCEPT STU-NO.
DISPLAY 'ENTE NAME OF THE STUDENT '.
ACCEPT STU-NAME.
DISPLAY 'ENTER TEL MARKS'.
ACCEPT TEL.
DISPLAY 'ENTER ENG MARKS'.
ACCEPT ENG.
DISPLAY 'ENTER HIN MARKS'.
ACCEPT HIN.
DISPLAY 'ENTER MAT MARKS'.
ACCEPT MAT.
DISPLAY 'ENTER SCI MARKS'.
ACCEPT SCI.
DISPLAY 'ENTER SOC MARKS'.
ACCEPT SOC.
PROCESS-PARA.
COMPUTE TOT = TEL + ENG + HIN + MAT + SCI + SOC.
COMPUTE AVG = TOT / 6.
IF TEL >= 35 AND ENG >=35 AND HIN >=35 AND MAT >=35
AND SCI >= 35 AND SOC >= 35 THEN
MOVE 'PASS' TO RES
ELSE
MOVE 'FAIL' TO RES
END-IF.
EVALUATE TRUE ALSO TRUE
WHEN AVG >= 60 ALSO RES = 'PASS'
MOVE 'FIRST' TO GRA
WHEN AVG >= 50 AND AVG < 60 ALSO RES = 'PASS'
MOVE 'SECOND' TO GRA
WHEN AVG >= 35 AND AVG < 50 ALSO RES = 'PASS'
MOVE 'THIRD' TO GRA
WHEN OTHER
MOVE '******' TO GRA
END-EVALUATE.
DISPLAY-PARA.
DISPLAY 'STU-NO : ' STU-NO.
DISPLAY 'STU-NAME : ' STU-NAME.
DISPLAY 'TOTAL : ' TOT.
DISPLAY 'AVERAGE : ' AVG.
DISPLAY 'RESULT : ' RES.
DISPLAY 'GRADE : ' GRA.
31. PROGRAM TO FIND STUDENT’S GRADE USING EVALUATE ALSO AND THROUGH
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM31.
AUTHOR. Indus Computer Services.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 STU-REC.
02 INPUT-DATA.
05 STU-NO PIC 9(3).
05 STU-NAME PIC X(15).
05 TEL PIC 9(3).
05 ENG PIC 9(3).
05 HIN PIC 9(3).
05 MAT PIC 9(3).
05 SCI PIC 9(3).
05 SOC PIC 9(3).
02 OUTPUT-DATA.
05 TOT PIC 9(3).
05 AVG PIC 9(2).9(2).
05 RES PIC X(4).
05 GRA PIC X(6).
PROCEDURE DIVISION.
MAIN-PARA.
PERFORM ACCEPT-PARA.
PERFORM PROCESS-PARA.
PERFORM DISPLAY-PARA.
STOP RUN.
ACCEPT-PARA.
DISPLAY 'ENTER NUMBER'.
ACCEPT STU-NO.
DISPLAY 'ENTE NAME OF THE STUDENT '.
ACCEPT STU-NAME.
DISPLAY 'ENTER TEL MARKS'.
ACCEPT TEL.
DISPLAY 'ENTER ENG MARKS'.
ACCEPT ENG.
DISPLAY 'ENTER HIN MARKS'.
ACCEPT HIN.
DISPLAY 'ENTER MAT MARKS'.
ACCEPT MAT.
DISPLAY 'ENTER SCI MARKS'.
ACCEPT SCI.
DISPLAY 'ENTER SOC MARKS'.
ACCEPT SOC.
PROCESS-PARA.
COMPUTE TOT = TEL + ENG + HIN + MAT + SCI + SOC.
COMPUTE AVG = TOT / 6.
IF TEL >= 35 AND ENG >=35 AND HIN >=35 AND MAT >=35
AND SCI >= 35 AND SOC >= 35 THEN
MOVE 'PASS' TO RES
ELSE
MOVE 'FAIL' TO RES
END-IF.
EVALUATE AVG ALSO RES
WHEN 60 THROUGH 100 ALSO 'PASS'
MOVE 'FIRST' TO GRA
WHEN 50 THROUGH 59 ALSO 'PASS'
MOVE 'SECOND' TO GRA
WHEN 35 THROUGH 49 ALSO 'PASS'
MOVE 'THIRD' TO GRA
WHEN OTHER
MOVE '******' TO GRA
END-EVALUATE.
DISPLAY-PARA.
DISPLAY 'STU-NO : ' STU-NO.
DISPLAY 'STU-NAME : ' STU-NAME.
DISPLAY 'TOTAL : ' TOT.
DISPLAY 'AVERAGE : ' AVG.
DISPLAY 'RESULT : ' RES.
DISPLAY 'GRADE : ' GRA.
32. Program using EVALUATE CONDITION.
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM32.
AUTHOR. Indus Computer Services.
*PROGRAM CHECK USING EVALUATE CONDITION.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 NOOFDAYS PIC 9(2) VALUE IS ZEROS.
PROCEDURE DIVISION.
DISPLAY 'NO OF DAYS IN THE MONTH(29/30/31/28)'.
ACCEPT NOOFDAYS.
EVALUATE TRUE
WHEN NOOFDAYS=29 OR NOOFDAYS=28
DISPLAY 'YOU HAVE ENTERED FEBRUARY'
WHEN NOOFDAYS=31
DISPLAY 'YOU HAVE ENTERED ONE OF THE FOLLOWING'
DISPLAY 'JAN/MAR/MAY/JUL/SEP/NOV/'
WHEN NOOFDAYS=30
DISPLAY 'YOU HAVE ENTERED ONE OF THE FOLLOWING'
DISPLAY 'APR/JUN/AUG/OCT/DEC/'
WHEN OTHER
DISPLAY 'ENTER A VALID NUMBER OF DAYS(28/29/30/31)'
END-EVALUATE.
STOP RUN.
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM34.
AUTHOR. Indus Computer Services.
*COMPOUND CONDITIONS(OR)
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 NAME PIC A(10) VALUE SPACES.
77 GENDER PIC X(6) VALUE SPACES.
PROCEDURE DIVISION.
DISPLAY 'ENTER YOUR NAME'.
ACCEPT NAME.
DISPLAY 'ENTER YOUR GENDER(M(MALE)/F(FEMALE)'.
ACCEPT GENDER.
IF GENDER='M' OR GENDER='MALE'
DISPLAY 'HELLO MR.' NAME
ELSE IF GENDER='F' OR GENDER='FEMALE'
DISPLAY 'HELLO MISS.' NAME
ELSE
DISPLAY 'ENTER A VALID GENDER'
END-IF.
STOP RUN.<BR/>
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM35.
AUTHOR. Indus Computer Services.
*POSTIVE/NEGATIVE/ZERO CLAUSES
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 NUM PIC S9(2) VALUE ZERO.
PROCEDURE DIVISION.
DISPLAY 'ENTER A NUMBER(WITH + OR -)'.
ACCEPT NUM.
IF NUM IS POSITIVE
DISPLAY 'NUMBER ENTERED IS POSITIVE'
ELSE IF NUM IS NEGATIVE
DISPLAY 'NUMBER ENTERED IS NEGATIVE'
ELSE IF NUM IS ZERO
DISPLAY 'NUMBER ENTERED IS ZERO'
END-IF.
STOP RUN.<BR/>
37. Program with the condition name condition, (88 level number use)
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM37.
AUTHOR. Indus Computer Services.
*CONDITION NAME
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 MARTIAL-STATUS PIC X(1).
88 MARRIED VALUE 'M'.
88 SINGLE VALUE 'S'.
88 WIDOWED VALUE 'W'.
88 DIVORCED VALUE 'D'.
77 SALARY PIC 9(4) VALUE ZEROS.
77 NAME PIC X(10) VALUE SPACES.
PROCEDURE DIVISION.
DISPLAY 'ENTER YOUR NAME'.
ACCEPT NAME.
DISPLAY 'ENTER YOUR MARTIAL STATUS(M/S/D/W)'.
ACCEPT MARTIAL-STATUS.
IF MARRIED
MOVE 2000 TO SALARY
ELSE IF SINGLE
MOVE 1000 TO SALARY
ELSE IF WIDOWED
MOVE 1500 TO SALARY
ELSE IF DIVORCED
MOVE 1300 TO SALARY
ELSE
MOVE 0 TO SALARY
END-IF.
DISPLAY SALARY.
STOP RUN.<BR/>
38. Program with the REDEFINE CLAUSE (uses the same location for
storage)
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM38.
AUTHOR. Indus Computer Services.
*REDIFINES CLAUSES(SHARES THE SAME LOCATION FOR STORAGE)
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 EMP-DETAILS.
02 EMP-NAME.
05 NAME PIC X(5) VALUE SPACES.
02 EMP-SALARY REDEFINES EMP-NAME.
05 SALARY PIC X(5).
PROCEDURE DIVISION.
DISPLAY 'ENTER YOUR NAME'.
ACCEPT NAME.
DISPLAY 'ENTER YOUR SALARY'.
ACCEPT SALARY.
DISPLAY 'NAME AND SALARY HAVE THE SAME VALUE'.
DISPLAY 'NAME :' NAME.
DISPLAY 'SALARY :' SALARY.
DISPLAY 'ENTER YOUR NAME'.
ACCEPT NAME.
DISPLAY 'NOW NAME OVERRIDES THE SALARY'.
DISPLAY 'NAME :' NAME.
DISPLAY 'SALARY :' SALARY.
STOP RUN.<BR/>
39. Program with the RENAME CLAUSE (TO REFORM THE GROUP)
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM39.
AUTHOR. Indus Computer Services.
*RENAME CLAUSES(TO REFORM THE GROUP)
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 EMP.
02 EMP-DETAILS.
05 EMP-NO PIC 9(5) VALUE ZEROS.
05 NAME PIC X(5) VALUE SPACES.
02 EMP-SAL.
05 SALARY PIC X(5).
66 EMP-NAME-SAL RENAMES NAME THRU EMP-SAL.
PROCEDURE DIVISION.
PERFORM ACC-PARA.
PERFORM DISP-PARA.
STOP RUN.<BR/>
DISP-PARA.
DISPLAY 'EMPLOYEE DETAILS(NAME,NO)'.
DISPLAY EMP-DETAILS.
DISPLAY 'EMPLOYEE SALARY(SAL)'.
DISPLAY EMP-SAL.
DISPLAY 'EMPLOYEE DETAILS(NAME,SALARY -- REFORMED GROUP)'.
DISPLAY EMP-NAME-SAL.
ACC-PARA.
DISPLAY 'ENTER YOUR NAME'.
ACCEPT NAME.
DISPLAY 'ENTER YOUR NO'.
ACCEPT EMP-NO.
DISPLAY 'ENTER YOUR SALARY'.
ACCEPT SALARY.
40. Program to show the usage clauses.
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM40.
AUTHOR. Indus Computer Services.
*USAGE CLAUSES(DISPLAY,COMP,COMP3)
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 NUM1 PIC 9(2) USAGE IS DISPLAY.
77 NUM2 PIC 9(2) USAGE IS COMP.
77 NUM3 PIC 9(2) USAGE IS COMP-3.
PROCEDURE DIVISION.
PERFORM ACC-PARA.
PERFORM DISP-PARA.
STOP RUN.<BR/>
DISP-PARA.
DISPLAY 'ALL THE OUTPUT ARE SAME.ONLY STORAGE IS DIFFERENT'.
DISPLAY 'NUMBER IN DISPLAY(DEFAULT)'.
DISPLAY NUM1.
DISPLAY 'NUMBER IN COMP(BINARY)'.
DISPLAY NUM2.
DISPLAY 'NUMBER IN COMP3(HEXA DECIMAL)'.
DISPLAY NUM3.
ACC-PARA.
DISPLAY 'ENTER NUMBER1'.
ACCEPT NUM1.
DISPLAY 'ENTER NUMBER2'.
ACCEPT NUM2.
DISPLAY 'ENTER NUMBER2'.
ACCEPT NUM3.
41. Program to show the duplicate data names can be fetched (using
qualifier)
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM41.
AUTHOR. Indus Computer Services.
*QUALIFICATION OF DATA NAMES
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 GRP1.
02 NUM1 PIC X(5) VALUE IS 'PRABU'.
01 GRP2.
02 NUM1 PIC X(5) VALUE IS 'XXXXX' .
PROCEDURE DIVISION.
DISPLAY 'NUMBER1 OF GROUP1 ' NUM1 OF GRP1.
DISPLAY 'NUMBER1 OF GROUP2 ' NUM1 OF GRP2.
STOP RUN.<BR/>
ERROR-PARA.
DISPLAY 'SIZE EXCEEDS'.
45. Program to use simple perform statement.
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM45.
AUTHOR. Indus Computer Services.
*SIMPLE PERFORM
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.
PERFORM DISP-PARA.
STOP RUN.<BR/>
DISP-PARA.
DISPLAY 'THIS IS A SIMPLE PERFORM'.
46. Program to use perform statement with number of times.
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM46.
AUTHOR. Indus Computer Services.
*PERFORM WITH NUMBER OF TIMES
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.
PERFORM DISP-PARA 3 TIMES.
STOP RUN.<BR/>
DISP-PARA.
DISPLAY 'THIS IS PERFORM NUMBER OF TIMES'.
47. Program to use perform statement with until condition.
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM47.
AUTHOR. Indus Computer Services.
*PERFORM WITH UNTIL CONDITION
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 I PIC 9 VALUE 1.
PROCEDURE DIVISION.
PERFORM DISP-PARA UNTIL I > 3.
STOP RUN.<BR/>
DISP-PARA.
COMPUTE I = I + 1.
DISPLAY 'THIS IS PERFORM UNTIL CONDITION'.
DISP-PARA1.
DISPLAY 'THIS IS PERFORM1'.
DISP-PARA2.
DISPLAY 'THIS IS PERFORM2'.
DISP-PARA3.
DISPLAY 'THIS IS PERFORM3'.
DISP-PARA.
DISPLAY 'THIS IS PERFORM WITH VARYING CONDITION'.
50. Program to use perform statement with varying AFTER condition.
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM50.
AUTHOR. Indus Computer Services.
*PERFORM WITH VARYING AFTER CONDITION
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 I PIC 9 VALUE ZERO.
77 J PIC 9 VALUE ZERO.
PROCEDURE DIVISION.
DISPLAY 'THIS IS PERFORM WITH VARYING AFTER'.
PERFORM DISP-PARA VARYING I FROM 1 BY 1 UNTIL I > 3
AFTER J FROM 1 BY 1 UNTIL J > 2.
STOP RUN.<BR/>
DISP-PARA.
DISPLAY '(I,J) ('I','J')'.
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM51.
AUTHOR. Indus Computer Services.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 N PIC 9(3) VALUE ZERO.
77 I PIC 9(3) VALUE ZERO.
PROCEDURE DIVISION.
MAIN-PARA.
PERFORM ACCEPT-PARA.
PERFORM PROCESS-PARA.
STOP RUN.<BR/>
ACCEPT-PARA.
DISPLAY 'ENTER N VALUE'.
ACCEPT N.
PROCESS-PARA.
MOVE 1 TO I.
PERFORM UNTIL I > N
DISPLAY I
ADD 1 TO I
END-PERFORM.
ACCEPT-PARA.
DISPLAY 'ENTER N VALUE'.
ACCEPT N.
PROCESS-PARA.
MOVE 1 TO I.
PERFORM UNTIL I > N
DISPLAY I
ADD 1 TO I
END-PERFORM.
53. PROGRAM TO FIND THE FACTORIAL OF GIVEN NUMBER.
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM53.
AUTHOR. Indus Computer Services.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 N PIC 9(3) VALUE ZERO.
77 I PIC 9(3) VALUE ZERO.
77 FACT PIC 9(3) VALUE 1.
PROCEDURE DIVISION.
MAIN-PARA.
PERFORM ACCEPT-PARA.
PERFORM PROCESS-PARA.
PERFORM DISPLAY-PARA.
STOP RUN.<BR/>
ACCEPT-PARA.
DISPLAY 'ENTER N VALUE'.
ACCEPT N.
PROCESS-PARA.
MOVE 1 TO I.
PERFORM UNTIL I > N
COMPUTE FACT = FACT * I
ADD 1 TO I
END-PERFORM.
DISPLAY-PARA.
DISPLAY 'FACT = ' FACT.
54. PROGRAM TO FIND THE SUM OF DIGITS OF GIVEN NUMBER.
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM54.
AUTHOR. Indus Computer Services.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 N PIC 9(3) VALUE ZERO.
77 I PIC 9(3) VALUE ZERO.
77 REM PIC 9(3) VALUE ZERO.
77 Q PIC 9 VALUE ZERO.
77 TOT PIC 9(3) VALUE ZERO.
PROCEDURE DIVISION.
MAIN-PARA.
PERFORM ACCEPT-PARA.
PERFORM PROCESS-PARA.
PERFORM DISPLAY-PARA.
STOP RUN.<BR/>
ACCEPT-PARA.
DISPLAY 'ENTER N VALUE'.
ACCEPT N.
PROCESS-PARA.
PERFORM UNTIL N <= 0
DIVIDE N BY 10 GIVING Q REMAINDER REM
COMPUTE TOT = TOT + REM
DIVIDE N BY 10 GIVING N
END-PERFORM.
DISPLAY-PARA.
DISPLAY 'TOT = ' TOT.
55. PROGRAM TO FIND THE REVERSE OF GIVEN NUMBER.
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM55.
AUTHOR. Indus Computer Services.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 N PIC 9(3) VALUE ZERO.
77 REM PIC 9(3) VALUE ZERO.
77 Q PIC 9 VALUE ZERO.
77 REV PIC 9(3) VALUE ZERO.
PROCEDURE DIVISION.
MAIN-PARA.
PERFORM ACCEPT-PARA.
PERFORM PROCESS-PARA.
PERFORM DISPLAY-PARA.
STOP RUN.<BR/>
ACCEPT-PARA.
DISPLAY 'ENTER N VALUE'.
ACCEPT N.
PROCESS-PARA.
PERFORM UNTIL N <= 0
DIVIDE N BY 10 GIVING Q REMAINDER REM
COMPUTE REV = REV * 10 + REM
DIVIDE N BY 10 GIVING N
END-PERFORM.
DISPLAY-PARA.
DISPLAY 'REVERSE NUMBER = ' REV.
56. PROGRAM TO FIND WHETHER THE GIVEN NUMBER IS PALINDROME OR NOT.
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM56.
AUTHOR. Indus Computer Services.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 N PIC 9(3) VALUE ZERO.
77 REM PIC 9(3) VALUE ZERO.
77 Q PIC 9 VALUE ZERO.
77 REV PIC 9(3) VALUE ZERO.
77 P PIC 9(3) VALUE ZERO.
PROCEDURE DIVISION.
MAIN-PARA.
PERFORM ACCEPT-PARA.
PERFORM PROCESS-PARA.
PERFORM DISPLAY-PARA.
STOP RUN.<BR/>
ACCEPT-PARA.
DISPLAY 'ENTER N VALUE'.
ACCEPT N.
MOVE N TO P.
PROCESS-PARA.
PERFORM UNTIL N <= 0
DIVIDE N BY 10 GIVING Q REMAINDER REM
COMPUTE REV = REV * 10 + REM
DIVIDE N BY 10 GIVING N
END-PERFORM.
DISPLAY-PARA.
IF REV = P THEN
DISPLAY 'GIVEN NUMBER IS PALINDROME '
ELSE
DISPLAY 'GIVEN NUMBER IS NOT PALINDROME'
END-IF.
57. PROGRAM TO FIND THE GIVEN NUMBER IS PRIME OR NOT.
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM57.
AUTHOR. Indus Computer Services.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 N PIC 9(3) VALUE ZERO.
77 I PIC 9(3) VALUE ZERO.
77 REM PIC 9(3) VALUE ZERO.
77 Q PIC 9 VALUE ZERO.
77 OPTION PIC X(3) VALUE 'YES'.
PROCEDURE DIVISION.
MAIN-PARA.
PERFORM ACCEPT-PARA.
PERFORM PROCESS-PARA.
PERFORM DISPLAY-PARA.
STOP RUN.<BR/>
ACCEPT-PARA.
DISPLAY 'ENTER N VALUE'.
ACCEPT N.
PROCESS-PARA.
MOVE 2 TO I.
PERFORM UNTIL I >= N
DIVIDE N BY I GIVING Q REMAINDER REM
IF REM = 0 THEN
DISPLAY 'GIVEN NUMBER IS NOT PRIME'
STOP RUN
END-IF
ADD 1 TO I
END-PERFORM.
DISPLAY-PARA.
IF N = I THEN
DISPLAY 'GIVEN NUMBER IS PRIME'
END-IF.
58. PROGRAM TO PRINT PRIME NUMBERS FROM 1 TO GIVEN NUMBER.
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM58.
AUTHOR. Indus Computer Services.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 N PIC 9(3) VALUE ZERO.
77 I PIC 9(3) VALUE ZERO.
77 K PIC 9(3) VALUE ZERO.
77 REM PIC 9(3) VALUE ZERO.
77 Q PIC 9 VALUE ZERO.
77 OPTION PIC X(3) VALUE 'YES'.
PROCEDURE DIVISION.
MAIN-PARA.
PERFORM ACCEPT-PARA.
PERFORM PROCESS-PARA.
STOP RUN.<BR/>
ACCEPT-PARA.
DISPLAY 'ENTER N VALUE'.
ACCEPT N.
PROCESS-PARA.
PERFORM VARYING K FROM 1 BY 1 UNTIL K > N
MOVE 2 TO I
PERFORM UNTIL I >= K OR OPTION = 'NO'
DIVIDE K BY I GIVING Q REMAINDER REM
IF REM = 0 THEN
MOVE 'NO' TO OPTION
END-IF
ADD 1 TO I
END-PERFORM
IF K = I THEN
DISPLAY K
END-IF
MOVE 'YES' TO OPTION
END-PERFORM.
ACCEPT-PARA.
DISPLAY 'ENTER N VALUE'.
ACCEPT N.
PROCESS-PARA.
DISPLAY I.
ACC-PARA.
DISPLAY 'ENTER THE STUDENT NUMBER'.
ACCEPT STU-NO(I).
DISPLAY 'ENTER THE STUDENT NAME'.
ACCEPT STU-NAME(I).
COMPUTE I = I + 1.
DISP-PARA.
DISPLAY 'STUDENT NUMBER ' STU-NO(I).
DISPLAY 'STUDENT NAME ' STU-NAME(I).
COMPUTE I = I + 1.
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM64.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 SINGLE-DIM.
05 A PIC 9(2) OCCURS 5 TIMES.
77 I PIC 9 VALUE ZERO.
77 TOT PIC 9(3) VALUE ZERO.
77 AVG PIC 9(2)V99 VALUE ZERO.
PROCEDURE DIVISION.
MAIN-PARA.
PERFORM ACCEPT-PARA VARYING I FROM 1 BY 1 UNTIL I > 5.
PERFORM PROCESS-PARA VARYING I FROM 1 BY 1 UNTIL I > 5.
PERFORM DISPLAY-PARA.
STOP RUN.<BR/>
ACCEPT-PARA.
DISPLAY 'ENTER NUMER ' I.
ACCEPT A(I).
PROCESS-PARA.
COMPUTE TOT = TOT + A(I).
DISPLAY-PARA.
DISPLAY 'ENTERED VALUES ARE : '.
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 5
DISPLAY A(I)
END-PERFORM.
DISPLAY 'TOTAL : ' TOT.
COMPUTE AVG = TOT / 5.
DISPLAY 'AVERAGE : ' AVG.
ACCEPT-PARA.
DISPLAY 'ENTER NUMER ' I.
ACCEPT A(I).
PROCESS-PARA.
IF MAX < A(I) THEN
MOVE A(I) TO MAX
END-IF.
DISPLAY-PARA.
DISPLAY 'MAXIMUM NUMBER = ' MAX.
ACCEPT-PARA.
DISPLAY 'ENTER NUMER ' I.
ACCEPT A(I).
PROCESS-PARA.
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 4
COMPUTE K = I + 1
PERFORM VARYING J FROM K BY 1 UNTIL J > 5
IF A(I) > A(J) THEN
MOVE A(I) TO TEMP
MOVE A(J) TO A(I)
MOVE TEMP TO A(J)
END-IF
END-PERFORM
END-PERFORM.
DISPLAY-PARA.
DISPLAY A(I).
READ-MATRIX-A.
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 2
PERFORM VARYING J FROM 1 BY 1 UNTIL J > 2
DISPLAY 'ENTER VALUE FOR MATRIX A '
ACCEPT A(I, J)
END-PERFORM
END-PERFORM.
READ-MATRIX-B.
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 2
PERFORM VARYING J FROM 1 BY 1 UNTIL J > 2
DISPLAY 'ENTER VALUE FOR MATRIX B '
ACCEPT B(I, J)
END-PERFORM
END-PERFORM.
PROCESS-PARA.
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 2
PERFORM VARYING J FROM 1 BY 1 UNTIL J > 2
COMPUTE C(I, J) = A(I, J) + B(I, J)
END-PERFORM
END-PERFORM.
DISPLAY-PARA.
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 2
PERFORM VARYING J FROM 1 BY 1 UNTIL J > 2
DISPLAY C(I, J)
END-PERFORM
END-PERFORM.
READ-MATRIX-A.
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 2
PERFORM VARYING J FROM 1 BY 1 UNTIL J > 2
DISPLAY 'ENTER VALUE FOR MATRIX A '
ACCEPT A(I, J)
END-PERFORM
END-PERFORM.
READ-MATRIX-B.
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 2
PERFORM VARYING J FROM 1 BY 1 UNTIL J > 2
DISPLAY 'ENTER VALUE FOR MATRIX B '
ACCEPT B(I, J)
END-PERFORM
END-PERFORM.
PROCESS-PARA.
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 2
PERFORM VARYING J FROM 1 BY 1 UNTIL J > 2
MOVE ZERO TO C(I, J)
PERFORM VARYING K FROM 1 BY 1 UNTIL K > 2
COMPUTE C(I, J) = C(I, J) + A(I, K) * B(K, J)
END-PERFORM
END-PERFORM
END-PERFORM.
DISPLAY-PARA.
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 2
PERFORM VARYING J FROM 1 BY 1 UNTIL J > 2
DISPLAY C(I, J)
END-PERFORM
END-PERFORM.
01 STUD-TABLE.
02 STUD-REC OCCURS 2 TIMES.
03 STUD-NAME PIC X(5) VALUE SPACES.
03 STUD-NUMBER PIC X(3) VALUE SPACES.
03 MARKS OCCURS 3 TIMES.
04 MARK PIC 9(3) VALUE ZEROS.
77 I PIC 9(2) VALUE ZEROS.
77 J PIC 9(2) VALUE ZEROS.
PROCEDURE DIVISION.
PERFORM ACCEPT-DETAILS VARYING I FROM 1 BY 1 UNTIL I > 2.
PERFORM DISP-DETAILS VARYING I FROM 1 BY 1 UNTIL I > 2.
STOP RUN.<BR/>
ACCEPT-DETAILS.
DISPLAY 'ENTER THE STUDENT NAME'.
ACCEPT STUD-NAME(I).
DISPLAY 'ENTER THE STUDENT NUMBER'.
ACCEPT STUD-NUMBER(I).
DISPLAY 'ENTER THE MARKS'.
PERFORM ACCEPT-MARK VARYING J FROM 1 BY 1 UNTIL J > 3.
ACCEPT-MARK.
ACCEPT MARK(I,J).
DISP-DETAILS.
DISPLAY '***************************'.
DISPLAY STUD-NAME(I)
DISPLAY 'STUDENT NUMBER ' STUD-NUMBER(I).
PERFORM DISP-MARK VARYING J FROM 1 BY 1 UNTIL J > 3.
DISP-MARK.
DISPLAY 'MARK 'J ' ' MARK(I,J).
ACC-PARA.
DISPLAY 'ENTER THE STUDENT NUMBER'.
ACCEPT STU-NO(A1).
DISPLAY 'ENTER THE STUDENT NAME'.
ACCEPT STU-NAME(A1).
DISP-PARA.
SET A1 TO 1.
DISPLAY 'STUDENT NUMBER ' STU-NO(A1).
DISPLAY 'STUDENT NAME ' STU-NAME(A1).
71. Program that search the table for a record (sequential search) .
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM71.
AUTHOR. Indus Computer Services.
*PROGRAM TO SEARCH A RECORD FROM A TABLE
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 STU-REC.
02 STU-DETAILS OCCURS 2 TIMES INDEXED BY A1.
05 STU-NO PIC 9(5) VALUE ZEROS.
05 STU-NAME PIC X(10) VALUE SPACES.
77 IN-NO PIC 9(5) VALUE IS ZERO.
77 I PIC 9 VALUE IS 1.
PROCEDURE DIVISION.
PERFORM ACC-PARA 2 TIMES.
PERFORM SER-PARA.
ACC-PARA.
DISPLAY 'ENTER THE STUDENT NUMBER'.
ACCEPT STU-NO(I).
DISPLAY 'ENTER THE STUDENT NAME'.
ACCEPT STU-NAME(I).
COMPUTE I =I + 1.
SER-PARA.
DISPLAY 'ENTER THE NUMBER TO SEARCH'.
ACCEPT IN-NO.
SET A1 TO 1.
SEARCH STU-DETAILS
AT END GO TO PARA-NO
WHEN IN-NO = STU-NO(A1)
GO TO DISP-PARA
END-SEARCH.
DISP-PARA.
DISPLAY 'STUDENT NUMBER ' STU-NO(A1).
DISPLAY 'STUDENT NAME ' STU-NAME(A1).
PERFORM END-RTN.
PARA-NO.
DISPLAY 'NOT FOUND'.
PERFORM END-RTN.
END-RTN.
STOP RUN.<BR/>
72. Program that search the table for a record (binary search) SEARCH
ALL.
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM72.
AUTHOR. Indus Computer Services.
*PROGRAM TO SEARCH A RECORD FROM A TABLE (BINARY)
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 STU-REC.
02 STU-DETAILS OCCURS 3 TIMES
ASCENDING KEY IS STU-NO
INDEXED BY A1.
05 STU-NO PIC 9(2) VALUE ZEROS.
05 STU-NAME PIC X(10) VALUE SPACES.
77 IN-NO PIC 9(2) VALUE IS ZERO.
77 I PIC 9 VALUE IS 1.
PROCEDURE DIVISION.
DISPLAY 'ENTER THE STUDENT NUMBER IN ASCENDING ORDER'.
PERFORM ACC-PARA 3 TIMES.
PERFORM SER-PARA.
ACC-PARA.
DISPLAY 'ENTER THE STUDENT NUMBER'.
ACCEPT STU-NO(I).
DISPLAY 'ENTER THE STUDENT NAME'.
ACCEPT STU-NAME(I).
COMPUTE I =I + 1.
SER-PARA.
DISPLAY 'ENTER THE NUMBER TO SEARCH'.
ACCEPT IN-NO.
SEARCH ALL STU-DETAILS
AT END GO TO PARA-NO
WHEN STU-NO(A1) = IN-NO
GO TO DISP-PARA
END-SEARCH.
DISP-PARA.
DISPLAY 'STUDENT NUMBER ' STU-NO(A1).
DISPLAY 'STUDENT NAME ' STU-NAME(A1).
PERFORM END-RTN.
PARA-NO.
DISPLAY 'NOT FOUND'.
PERFORM END-RTN.
END-RTN.
STOP RUN.<BR/>
OPEN-FILE.
OPEN OUTPUT WRITE-FILE.
CLOSE-FILE.
CLOSE WRITE-FILE.
WRITE-TO-FILE.
PERFORM ACC-INPUT UNTIL OPTION='NO'.
ACC-INPUT.
DISPLAY 'ENTER THE EMPLOYEE NUMBER'.
ACCEPT IN-NO.
DISPLAY 'ENTER THE EMPLOYEE NAME'.
ACCEPT IN-NAME.
DISPLAY 'ENTER THE EMPLOYEE SALARY'.
ACCEPT IN-SAL.
MOVE IN-REC TO EMP-REC
WRITE EMP-REC.
DISPLAY 'DO YOU WANT TO WRITE MORE RECORDS(YES/NO)'.
ACCEPT OPTION.
OPEN-FILE.
OPEN INPUT READ-FILE.
CLOSE-FILE.
CLOSE READ-FILE.
READ-PARA.
READ READ-FILE
AT END
MOVE 'NO' TO OPTION
NOT AT END
MOVE EMP-REC TO OUT-REC
DISPLAY OUT-REC.
END-READ.
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM76.
AUTHOR. Indus Computer Services.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT EMPLOYEE-DATA ASSIGN TO EMP-DAT.
SELECT PAYROLL-LISTING ASSIGN TO PRI-DAT.
DATA DIVISION.
FILE SECTION.
FD EMPLOYEE-DATA
LABEL RECORDS ARE STANDARD.
01 EMPLOYEE-RECORD.
05 EMPLOYEE-NAME-IN PIC X(20).
05 HOURS-WORKED-IN PIC 9(2).
05 HOURLY-RATE-IN PIC 9V99.
FD PAYROLL-LISTING
LABEL RECORDS ARE OMITTED.
01 PRINT-REC.
05 PIC X(20).
05 NAME-OUT PIC X(20).
05 PIC X(10).
05 HOURS-OUT PIC 9(2).
05 PIC X(8).
05 RATE-OUT PIC 9.99.
05 PIC X(6).
05 WEEKLY-WAGES-OUT PIC 999.99.
WORKING-STORAGE SECTION.
01 ARE-THERE-MORE-RECORDS PIC X(3) VALUE 'YES'.
PROCEDURE DIVISION.
100-MAIN-MODULE.
OPEN INPUT EMPLOYEE-DATA
OUTPUT PAYROLL-LISTING.
PERFORM UNTIL ARE-THERE-MORE-RECORDS = 'NO'
READ EMPLOYEE-DATA
AT END
MOVE 'NO' TO ARE-THERE-MORE-RECORDS
NOT AT END
PERFORM 200-WAGE-ROUTINE
END-READ
END-PERFORM.
CLOSE EMPLOYEE-DATA
PAYROLL-LISTING.
STOP RUN.<BR/>
200-WAGE-ROUTINE.
MOVE SPACES TO PRINT-REC.
MOVE EMPLOYEE-NAME-IN TO NAME-OUT.
MOVE HOURS-WORKED-IN TO HOURS-OUT.
MOVE HOURLY-RATE-IN TO RATE-OUT.
MULTIPLY HOURS-WORKED-IN BY HOURLY-RATE-IN
GIVING WEEKLY-WAGES-OUT
WRITE PRINT-REC.
200-CALC-RTN.
IF IN-RANK = 'FP'
MULTIPLY IN-SALARY BY .062 GIVING NEW-SAL
ADD NEW-SAL TO WS-PROFESSOR-COST
ADD 1 TO WS-PROFESSOR-CTR
END-IF.
IF IN-RANK = 'AS'
MULTIPLY IN-SALARY BY .081 GIVING NEW-SAL
ADD NEW-SAL TO WS-ASSOCIATE-COST
ADD 1 TO WS-ASSOCIATE-CTR
END-IF.
IF IN-RANK = 'AP'
MULTIPLY IN-SALARY BY .083 GIVING NEW-SAL
ADD NEW-SAL TO WS-ASSISTANT-COST
ADD 1 TO WS-ASSISTANT-CTR
END-IF.
IF IN-RANK = 'AP'
MULTIPLY IN-SALARY BY .102 GIVING NEW-SAL
ADD NEW-SAL TO WS-INSTRUCTOR-COST
ADD 1 TO WS-INSTRUCTOR-CTR
END-IF.
300-FINAL-RTN.
WRITE OUT-REPORT-REC FROM HL-HEADER-1
AFTER ADVANCING PAGE.
WRITE OUT-REPORT-REC FROM HL-HEADER-2
AFTER ADVANCING 5 LINES.
MOVE 'FULL' TO TL-RANK.
MOVE WS-PROFESSOR-CTR TO TL-NO-OF-EMPLOYEES.
MOVE WS-PROFESSOR-COST TO TL-COST.
WRITE OUT-REPORT-REC FROM TL-TOTAL-LINE
AFTER ADVANCING 1 LINE
MOVE 'ASSOCIATE' TO TL-RANK.
MOVE WS-ASSOCIATE-CTR TO TL-NO-OF-EMPLOYEES .
MOVE WS-ASSOCIATE-COST TO TL-COST .
WRITE OUT-REPORT-REC FROM TL-TOTAL-LINE
AFTER ADVANCING 1 LINE
MOVE 'ASSISTANT' TO TL-RANK.
MOVE WS-ASSISTANT-CTR TO TL-NO-OF-EMPLOYEES .
MOVE WS-ASSISTANT-COST TO TL-COST .
WRITE OUT-REPORT-REC FROM TL-TOTAL-LINE
AFTER ADVANCING 1 LINE
MOVE 'INSTRUCTOR' TO TL-RANK.
MOVE WS-INSTRUCTOR-CTR TO TL-NO-OF-EMPLOYEES .
MOVE WS-INSTRUCTOR-COST TO TL-COST .
WRITE OUT-REPORT-REC FROM TL-TOTAL-LINE
AFTER ADVANCING 1 LINE
ADD WS-PROFESSOR-COST , WS-ASSOCIATE-COST,
WS-ASSISTANT-COST , WS-INSTRUCTOR-COST
GIVING WS-TOTAL-COST.
MOVE WS-TOTAL-COST TO TL-TOTAL-COST.
WRITE OUT-REPORT-REC FROM TL-TOTAL-LINE
AFTER ADVANCING 5 LINES.
OPEN-FILE.
OPEN I-O UPDATE-FILE.
CLOSE-FILE.
CLOSE UPDATE-FILE.
DATA-IN.
DISPLAY 'ENTER THE EMPLOYEE NUMBER TO CHANGE'.
ACCEPT EMP-NO-CHANGE.
DISPLAY 'ENTER THE EMPLOYEE NAME TO CHANGE'.
ACCEPT EMP-NEW-NAME.
UPDATE-PARA.
READ UPDATE-FILE
AT END MOVE 'NO' TO OPTION
NOT AT END
PERFORM PROCESS-PARA
END-READ.
PROCESS-PARA.
IF EMP-NO-CHANGE = EMP-NO
MOVE EMP-NEW-NAME TO EMP-NAME
REWRITE EMP-REC.
55. Program to Append a sequential file (EXTEND mode)
IDENTIFICATION DIVISION.
PROGRAM-ID. PGM55.
AUTHOR. Indus Computer Services.
*PROGRAM TO APPEND TO A SEQUENTIAL FILE
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT APPEND-FILE ASSIGN TO DD1
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD APPEND-FILE.
01 EMP-REC.
02 EMP-NO PIC 9(3).
02 EMP-NAME PIC X(10).
02 EMP-SAL PIC 9(5).
WORKING-STORAGE SECTION.
01 IN-REC.
02 IN-NO PIC 9(3).
02 IN-NAME PIC X(10).
02 IN-SAL PIC 9(5).
77 OPTION PIC X(3) VALUE IS 'YES'.
PROCEDURE DIVISION.
PERFORM OPEN-FILE.
PERFORM APPEND-TO-FILE.
PERFORM CLOSE-FILE.
STOP RUN.<BR/>
OPEN-FILE.
OPEN EXTEND APPEND-FILE.
CLOSE-FILE.
CLOSE APPEND-FILE.
APPEND-TO-FILE.
PERFORM ACC-INPUT UNTIL OPTION='NO'.
ACC-INPUT.
DISPLAY 'ENTER THE EMPLOYEE NUMBER'.
ACCEPT IN-NO.
DISPLAY 'ENTER THE EMPLOYEE NAME'.
ACCEPT IN-NAME.
DISPLAY 'ENTER THE EMPLOYEE SALARY'.
ACCEPT IN-SAL.
MOVE IN-REC TO EMP-REC
WRITE EMP-REC.
DISPLAY 'DO YOU WANT TO WRITE MORE RECORDS(YES/NO)'.
ACCEPT OPTION.
OPEN-FILE.
OPEN INPUT READ-FILE.
OPEN OUTPUT WRITE-FILE.
CLOSE-FILE.
CLOSE WRITE-FILE,READ-FILE.
READ-FROM-FILE.
READ READ-FILE
AT END MOVE 'NO' TO OPTION
NOT AT END
MOVE EMP-READ-REC TO EMP-WRITE-REC
WRITE EMP-WRITE-REC.
200-COMP-RTN.
EVALUATE TRUE
WHEN T-ACCT-NO = M-ACCT-NO
PERFORM 300-REGULAR-UPDATE
WHEN T-ACCT-NO < M-ACCT-NO
PERFORM 400-NEW-ACCOUNT
WHEN OTHER
PERFORM 500-NO-UPDATE
END-EVALUATE.
300-REGULAR-UPDATE.
MOVE OLD-MASTER-REC TO NEW-MASTER-REC
COMPUTE AMOUNT-DUE-OUT = AMT-TRANS-IN-CURRENT-PER
+ AMOUNT-DUE
WRITE NEW-MASTER-REC
PERFORM 600-READ-MASTER
PERFORM 700-READ-TRANS.
400-NEW-ACCOUNT.
MOVE SPACES TO NEW-MASTER-REC.
MOVE T-ACCT-NO TO ACCT-NO-OUT.
MOVE AMT-TRANS-IN-CURRENT-PER TO AMOUNT-DUE-OUT.
WRITE NEW-MASTER-REC.
PERFORM 700-READ-TRANS.
500-NO-UPDATE.
WRITE NEW-MASTER-REC FROM OLD-MASTER-REC.
PERFORM 600-READ-MASTER.
600-READ-MASTER.
READ OLD-MASTER
AT END
MOVE HIGH-VALUES TO M-ACCT-NO
END-READ.
700-READ-TRANS.
READ TRANS-FILE
AT END
MOVE HIGH-VALUES TO T-ACCT-NO
END-READ.
800-INITIALIZATION-RTN.
OPEN INPUT OLD-MASTER
TRANS-FILE.
OPEN OUTPUT NEW-MASTER.
900-END-OF-JOB-RTN.
CLOSE OLD-MASTER
TRANS-FILE
NEW-MASTER.
CHK-SAL SECTION.
PARA-OPEN.
OPEN INPUT UNSORT-FILE.
PARA-READ.
READ UNSORT-FILE AT END GO TO PARA-CLOSE.
IF UNSORT-EMP-SAL < 3000
RELEASE WORK-REC FROM UNSORT-REC
GO TO PARA-READ
ELSE
GO TO PARA-READ.
PARA-CLOSE.
CLOSE UNSORT-FILE.
CHK-SAL SECTION.
PARA-OPEN.
OPEN OUTPUT SORT-FILE.
PARA-READ.
RETURN WORK-FILE RECORD INTO SORT-REC
AT END GO TO PARA-CLOSE.
IF SORT-EMP-SAL < 3000
WRITE SORT-REC
GO TO PARA-READ
ELSE
GO TO PARA-READ.
PARA-CLOSE.
CLOSE SORT-FILE.
OPEN-FILE.
OPEN OUTPUT WRITE-FILE.
CLOSE-FILE.
CLOSE WRITE-FILE.
WRITE-TO-FILE.
PERFORM ACC-INPUT UNTIL OPTION='NO'.
ACC-INPUT.
COMPUTE I = I + 1.
DISPLAY 'ENTER THE EMPLOYEE NUMBER'.
ACCEPT IN-NO.
DISPLAY 'ENTER THE EMPLOYEE NAME'.
ACCEPT IN-NAME.
DISPLAY 'ENTER THE EMPLOYEE SALARY'.
ACCEPT IN-SAL.
MOVE IN-REC TO EMP-REC
WRITE EMP-REC.
DISPLAY 'DO YOU WANT TO WRITE MORE RECORDS(YES/NO)'.
ACCEPT OPTION.
OPEN-FILE.
OPEN INPUT READ-FILE.
CLOSE-FILE.
CLOSE READ-FILE.
ACC-INPUT.
DISPLAY 'ENTER THE EMPLOYEE NUMBER TO FIND'.
ACCEPT EMP-NUMBER.
READ-PARA.
MOVE EMP-NUMBER TO EMP-NO.
READ READ-FILE RECORD
KEY IS EMP-NO
INVALID KEY DISPLAY 'RECORD NOT FOUND'.
MOVE EMP-REC TO OUT-REC.
DISPLAY OUT-REC.
STOP RUN.<BR/>
OPEN-FILE.
OPEN I-O UPDATE-FILE.
CLOSE-FILE.
CLOSE UPDATE-FILE.
DATA-IN.
DISPLAY 'ENTER THE EMP NUMBER TO UPDATE'.
ACCEPT EMP-NUMBER.
DISPLAY 'ENTER THE NEW NAME'.
ACCEPT EMP-NEW-NAME.
DISPLAY 'ENTER THE NEW SALARY'.
ACCEPT EMP-NEW-SALARY.
UPDATE-PARA.
MOVE EMP-NUMBER TO EMP-NO.
MOVE EMP-NEW-NAME TO EMP-NAME.
MOVE EMP-NEW-SALARY TO EMP-SAL.
REWRITE EMP-REC
INVALID KEY DISPLAY 'RECORD NOT FOUND'.
OPEN-FILE.
OPEN I-O DELETE-FILE.
CLOSE-FILE.
CLOSE DELETE-FILE.
DATA-IN.
DISPLAY 'ENTER THE EMPLOYEE NUMBER TO DELETE'.
ACCEPT EMP-NUMBER.
DELETE-PARA.
MOVE EMP-NUMBER TO EMP-NO.
DELETE DELETE-FILE RECORD
INVALID KEY DISPLAY 'RECORD NOT FOUND'.
OPEN-FILE.
OPEN INPUT READ-FILE.
CLOSE-FILE.
CLOSE READ-FILE.
READ-PARA.
MOVE I TO REL-POSITION.
READ READ-FILE RECORD
INVALID KEY DISPLAY 'RECORD NOT FOUND'.
MOVE EMP-REC TO OUT-REC.
DISPLAY OUT-REC.
STOP RUN.<BR/>
OPEN-FILE.
OPEN OUTPUT WRITE-FILE.
CLOSE-FILE.
CLOSE WRITE-FILE.
WRITE-TO-FILE.
PERFORM ACC-INPUT UNTIL OPTION='NO'.
ACC-INPUT.
COMPUTE I = I + 1.
DISPLAY 'ENTER THE EMPLOYEE NUMBER'.
ACCEPT IN-NO.
DISPLAY 'ENTER THE EMPLOYEE NAME'.
ACCEPT IN-NAME.
DISPLAY 'ENTER THE EMPLOYEE SALARY'.
ACCEPT IN-SAL.
MOVE IN-REC TO EMP-REC
MOVE I TO REL-POSITION.
WRITE EMP-REC.
DISPLAY 'DO YOU WANT TO WRITE MORE RECORDS(YES/NO)'.
ACCEPT OPTION.
OPEN-FILE.
OPEN I-O UPDATE-FILE.
CLOSE-FILE.
CLOSE UPDATE-FILE.
DATA-IN.
DISPLAY 'ENTER THE NEW NO'.
ACCEPT EMP-NEW-NO.
DISPLAY 'ENTER THE NEW NAME'.
ACCEPT EMP-NEW-NAME.
DISPLAY 'ENTER THE NEW SALARY'.
ACCEPT EMP-NEW-SALARY.
DISPLAY 'ENTER THE RELATIVE POSITION'.
ACCEPT I.
UPDATE-PARA.
MOVE EMP-NEW-NAME TO EMP-NAME.
MOVE EMP-NEW-NO TO EMP-NO.
MOVE EMP-NEW-SALARY TO EMP-SAL.
MOVE I TO REL-POSITION.
REWRITE EMP-REC
INVALID KEY DISPLAY 'RECORD NOT FOUND'.
OPEN-FILE.
OPEN I-O DELETE-FILE.
CLOSE-FILE.
CLOSE DELETE-FILE.
DATA-IN.
DISPLAY 'ENTER THE RELATIVE POSITION TO DELETE'.
ACCEPT I.
DELETE-PARA.
MOVE I TO REL-POSITION.
DELETE DELETE-FILE RECORD
INVALID KEY DISPLAY 'RECORD NOT FOUND'.