It is obvious that you did not bother to even read the manual before posting. From the Enterprise COBOL Language Reference
manual on the INTEGER-OF-DATE function:
The returned value is an integer that is the number of days that the date represented by argument-1 succeeds December 31, 1600 in the Gregorian calendar.
And from the same manual on the DATE-OF-INTEGER function:
argument-1 A positive integer that represents a number of days succeeding December 31, 1600, in the Gregorian calendar. The valid range is 1 to 3,067,671, which corresponds to dates ranging from January 1, 1601 thru December 31, 9999.
So the first function will convert your date to a number of days since December 31, 1600. You can add or subtract a number of days (as long as you don't exceed the limits of 0 to 3,067,671) and you still have a number of days since December 31, 1600. Since the DATE-OF-INTEGER function converts the number of days since December 31, 1600 to a date value, WHY would you think there would be any problem with months (or even years) since you're dealing with an integer value, NOT date values?
The next time you post a problem and then start complaining that the response doesn't solve your problem, you would be wise to at least READ THE MANUAL before you post your erroneous guesses. Better yet, TEST THE SOLUTION and if it doesn't provide you what you want, then you can at least provide your test data, the actual result, and what you expected the result to be.