i declare a Table as OCCURS 2000 TIMES.If the input file
has more than 2000 records will the COBOL program fail?
Answers were Sorted based on User's Feedback
Answer / vidhya
If you compile the Program using SSRANGE = Y then the,
program will fail, if not the program will not fail.
| Is This Answer Correct ? | 14 Yes | 0 No |
Answer / giri
Veena, as far as I knw, An OCCURS clause is used to
indicate the repeated occurrences of items of the same
format in a structure. It is nothing to do with the number
of records in the file. As per your question the filed
which you declare in the table occurs 2000 times. And this
is not the number of record. So your program will read all
the records in the input file. You can display any
occurance of the field like FIELD-NAME(1998) will result in
the value stored in that position, i mean to say 1998th
occurance. When you try to read beyond 2000,the program
will abend with SOC4. I hope I have cleared your doubt!
| Is This Answer Correct ? | 11 Yes | 0 No |
Answer / cobol will never die
I don't know how one can answer given the lack of
specificity of the question but.... Are we assuming all
records are loaded into the table and no check is made if
the index or subscript is > 2000? In other words are we
loading more than 2000 records data into the program? Can
we also assume this record has numeric definitions?
Given this scenario, and also given the executable code has
no knowledge of a symbolic copybook layout a S0C7 will not
occur as long as the data in the records being loaded is
wholesome. A S0C7 will occur, however, if any of any
numeric data item is corrupted by the overflow, then
referenced by any one of a dozen instructions.
| Is This Answer Correct ? | 7 Yes | 0 No |
Answer / prem
Occur clause is a kind of an array which holds the data of
simalar type in a particular record.
Ex: If we define an occur clause which hold the marks of a
particular student scored in 3 subjects. The code for this
would be as mentioned below
01 Student.
02 Name PIC X(20).
02 MARK OCCURS 3 times PIC 9(03).
So, For a Student "A" marks would be stored in MARK[1], MARK
[2], MARK[3], for "B" MARK[2], MARK[2], MARK[2] likes wise.
In a record format it would be displayed as below
A___________________052060080
B___________________060068070
Total length of the record is 20 + (3*3) = 29
This code will process n number of records no matter what
is the size of occur clause but if the length of the
records is beyond 29 then only the job will abend.
I hope this answers your query.
| Is This Answer Correct ? | 5 Yes | 0 No |
Answer / veena
Thanks for the reply ..then will all input file records get
processed or only first 2000 records be processed?
| Is This Answer Correct ? | 3 Yes | 0 No |
Answer / sivakumar sekharannair
Yeah vidhya's answer is correct. If the complier option is
set with SSRANGE=Y then the program will fail. Other wise
it will not... the default option is NOSSRANGE...
| Is This Answer Correct ? | 2 Yes | 0 No |
Answer / veena
But when i tested with more than 2000 records it not
abending.all input records are process and written to
output file.Thats why i am confused.
| Is This Answer Correct ? | 0 Yes | 0 No |
Answer / sadaf rehan
Table OCCURS Clause has nothing to do with the number of
records in the input file..
if you are reading sequentially all the records will get
processed..
| Is This Answer Correct ? | 0 Yes | 0 No |
Answer / kingmanish
Its in our hands whether we want the program to abend in
case of data overflow or not.
If we specify SSRANGE = Y the program will abend when the
number to records go beyond 2000.
Otherwise for NO SSRANGE the program will not abend.
Though that data will be lost as we cannot reference it.
| Is This Answer Correct ? | 0 Yes | 0 No |
I have a sequential file of 100 records. How do I load the records into a two dimensional array ?
what is qualification on occurs clause?
suppose a cobol programme A calling programme B,C and D. If C undergoes some change what if A,B,C,D need to be recompiled or only C nee to be recompliled.
Define REDEFINE clause and Is it possible to have the redefine clause anywhere in the working storage section for a data name?
consider the following progrm statements MOVE 0 TO SW.NO.OF.REC PERFORM PRI-OUT UNTIL SW=1 DISPALY NO.OF.REC STOP RUN PRE-OUT READ IN-FILE AT END MOVE 1 TO SW WRITE OUO-REC FROM IN-REC ADD 1 TO NO.OF REC if the IN-FILE contains 1000 records what value will be displayedafter the PERFORM is over?assume that N0.OF.REC has PIC 9(4) a.1000 b.1001 c.1 d.none of the above since there is a syntex error
how we can reverse the string in the cobol for example satheesh can be reveresed as hseehtas
What will happen if a variable is declared as below.. Explain with an example? Working storage section:- 01 WS-VARX PIC X(10) VALUE 'ABCDEFGHIJ'. 01 WS-VARN REDEFINES WS-VARX PIC 9(5) VALUE '12345'. What will happen I am going to Display the WS-VARX and WS- VARN?
How to fetch 1000 error records from VSAM file(Eg: 1000000 records present) while getting SOC7 abend ?
without performing any operations on a file how can i know whether it contains data or not
i WANT ALL ERROR codes IN CICS and DB2
How can we find that module can be called – whether DYNAMICALLY or STATICALLY?
How can we increase the size of an existing PDS to include more no. of modules.