Data update
This commit is contained in:
parent
5150844a7d
commit
4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions
|
|
@ -1,10 +0,0 @@
|
|||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. PROCRUSTES-PROGRAM.
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
01 WS-EXAMPLE.
|
||||
05 X PIC 999.
|
||||
PROCEDURE DIVISION.
|
||||
MOVE 1002 TO X.
|
||||
DISPLAY X UPON CONSOLE.
|
||||
STOP RUN.
|
||||
|
|
@ -1,78 +0,0 @@
|
|||
identification division.
|
||||
program-id. overflowing.
|
||||
|
||||
data division.
|
||||
working-storage section.
|
||||
01 bit8-sized usage binary-char. *> standard
|
||||
01 bit16-sized usage binary-short. *> standard
|
||||
01 bit32-sized usage binary-long. *> standard
|
||||
01 bit64-sized usage binary-double. *> standard
|
||||
01 bit8-unsigned usage binary-char unsigned. *> standard
|
||||
|
||||
01 nebulous-size usage binary-c-long. *> extension
|
||||
|
||||
01 picture-size picture s999. *> standard
|
||||
|
||||
*> ***************************************************************
|
||||
procedure division.
|
||||
|
||||
*> 32 bit signed integer
|
||||
subtract 2147483647 from zero giving bit32-sized
|
||||
display bit32-sized
|
||||
|
||||
subtract 1 from bit32-sized giving bit32-sized
|
||||
ON SIZE ERROR display "32bit signed SIZE ERROR"
|
||||
end-subtract
|
||||
*> value was unchanged due to size error trap and trigger
|
||||
display bit32-sized
|
||||
display space
|
||||
|
||||
*> 8 bit unsigned, size tested, invalid results discarded
|
||||
add -257 to zero giving bit8-unsigned
|
||||
ON SIZE ERROR display "bit8-unsigned SIZE ERROR"
|
||||
end-add
|
||||
display bit8-unsigned
|
||||
|
||||
*> programmers can ignore the safety features
|
||||
compute bit8-unsigned = -257
|
||||
display "you asked for it: " bit8-unsigned
|
||||
display space
|
||||
|
||||
*> fixed size
|
||||
move 999 to picture-size
|
||||
add 1 to picture-size
|
||||
ON SIZE ERROR display "picture-sized SIZE ERROR"
|
||||
end-add
|
||||
display picture-size
|
||||
|
||||
*> programmers doing the following, inadvertently,
|
||||
*> do not stay employed at banks for long
|
||||
move 999 to picture-size
|
||||
add 1 to picture-size
|
||||
*> intermediate goes to 1000, left end truncated on storage
|
||||
display "you asked for it: " picture-size
|
||||
|
||||
add 1 to picture-size
|
||||
display "really? you want to keep doing this?: " picture-size
|
||||
display space
|
||||
|
||||
*> C values are undefined by spec, only minimums givens
|
||||
display "How many bytes in a C long? "
|
||||
length of nebulous-size
|
||||
", varies by platform"
|
||||
display "Regardless, ON SIZE ERROR will catch any invalid result"
|
||||
|
||||
*> on a 64bit machine, C long of 8 bytes
|
||||
add 1 to h'ffffffffffffffff' giving nebulous-size
|
||||
ON SIZE ERROR display "binary-c-long SIZE ERROR"
|
||||
end-add
|
||||
display nebulous-size
|
||||
*> value will still be in initial state, GnuCOBOL initializes to 0
|
||||
*> value now goes to 1, no size error, that ship has sailed
|
||||
add 1 to nebulous-size
|
||||
ON SIZE ERROR display "binary-c-long size error"
|
||||
end-add
|
||||
display "error state is not persistent: ", nebulous-size
|
||||
|
||||
goback.
|
||||
end program overflowing.
|
||||
Loading…
Add table
Add a link
Reference in a new issue