From my OS/390 Collection March 1999 Version 2 Release 7.0 (CD 1 of 9) 7.3.30 REUS: Reusability Options The REUS option allows you to specify how a program may be reused. (Reusability means that the same copy of a program module can be used by more than one task either concurrently or one after another.) Note that the value of the REUS option always overrides the reusability of any included load modules or program objects. The syntax of the REUS option is as follows: ┌────────────────────────────────────────────────────────────────────────┐ │ │ │ REUS={NONE|SERIAL|RENT|REFR} │ │ │ └────────────────────────────────────────────────────────────────────────┘ The reusability values are: NONE The module cannot be reused. A new copy must be brought into virtual storage for each use. NONE is the default value. SERIAL The module is serially reusable. It can only be executed by one task at a time; when one task has finished executing it another task may begin. A serially reusable module may modify its own code, but when it is re-executed it must initialize itself or restore any instructions or data that have been altered. RENT The module is reenterable. It can be executed by more than one task at a time. A task may begin executing it before a previous task has completed execution. A reenterable module cannot modify its own code. (MVS *protects your module's virtual storage so that your module cannot be modified*.) Reenterable modules are also serially reusable. REFR The module is refreshable. *It can be replaced by a new copy during execution without changing the sequence or results of processing. A refreshable module cannot be modified during execution*. A module can only be refreshable if all the control sections within it are refreshable. The refreshable attribute is negated if any input modules are not refreshable. *Refreshable modules are also reenterable and serially reusable*. The refreshable attribute can be specified for any non-modifiable module. Alternatively, you can code a REUS option as a single keyword without a value (REUS, NOREUS, RENT, NORENT, REFR, NOREFR). For example: ────────────────────────────────────────────────────────────────────────── //LKED EXEC PGM=IEWBLINK,PARM='RENT,...' ────────────────────────────────────────────────────────────────────────── This alternative form is supported only for backward compatibility. The most restrictive positive specification is used to set the reusability attribute. For example, specifying REFR has the same effect as specifying REUS (REFR) and the module is marked as refreshable, reenterable, and (serially) reusable. If the PARM string contains both formats, the REUS(value) instance will override any reusability options specified without values. The binder only stores the attribute in the directory entry. It does not check whether the module is actually reenterable or serially reusable. If the module is incorrectly marked as reenterable or reusable, execution results are unpredictable; for example, a protection exception might occur or the program might use another task's data. ਍਍ⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭⴭ਍潆⁲䉉ⵍ䅍义猠扵捳楲敢⼠猠杩潮晦⼠愠捲楨敶愠捣獥⁳湩瑳畲瑣潩獮ബ猊湥⁤浥楡潴氠獩獴牥䁶楬瑳敳癲甮⹡摥⁵楷桴琠敨洠獥慳敧›义但䤠䵂䴭䥁ൎ�