However, if, just for fun, I put 300 01 levels in the linkage section, but only one on the procedure division using, that will work as long as there is one on the call using.
Sure.... although a bit "unusual" you can code items in the linkage section even in "main" programs. A "classical" use could be to point to an area that is supplied by an assembler program you called. But now, since the LE was introduced, you can call LE services to obtain a memory area and then assign its address to your item in linkage section. Or, since Cobol Enterprise 3.4, you can even point your items in linkage section to an address in working storage. This enables you, for instance, to define a "dummy section" (to quote assembler...) and point it wherever you want in working storage.
For instance, in a project i'm currentluy working on, somebody decided that routines MUST return data in a 20k block; the caller has to move those 20k in the routine specific area that is defined in another copybook. To avoid moving 20k blocks back and forth, in the main programs I coded I did something like this:
WORKING-STORAGE SECTION.
01 routine-area.
03 input-area pic x(10000).
03 output-area pic x(20000).
.....
LINKAGE SECTION
copy whatever.
.....
PROCEDURE DIVISION.
SET ADDRESS OF WHATEVER TO ADDRESS OF OUTPUT-AREA.
01 routine-area.
03 input-area pic x(10000).
03 output-area pic x(20000).
.....
LINKAGE SECTION
copy whatever.
.....
PROCEDURE DIVISION.
SET ADDRESS OF WHATEVER TO ADDRESS OF OUTPUT-AREA.
That will save a bit of CPU time.....
But of course there are other interesting use of this!!