 
 
 

 The Program-ID paragraph specifies the name by which a program prototype is identified.
  The Program-ID paragraph specifies the name by which a program prototype is identified. 
	 
 The Program-ID paragraph specifies the name by which a call prototype is identified.
  The Program-ID paragraph specifies the name by which a call prototype is identified. 
	 


 Program-name-1 can be a nonnumeric literal specified with or without enclosing quotation marks. The content of the literal must follow the rules for formation of program-names, but may also contain the characters @, #, and $.
 Program-name-1 can be a nonnumeric literal specified with or without enclosing quotation marks. The content of the literal must follow the rules for formation of program-names, but may also contain the characters @, #, and $. 
	 
 Program-name-1 can be the same as another user-defined word.
 Program-name-1 can be the same as another user-defined word. 
		

 The first 8 characters of program-name-1 of a program that is not contained in another program should be unique in the system. The first character must be alphabetic; otherwise it is converted as follows:
  The first 8 characters of program-name-1 of a program that is not contained in another program should be unique in the system. The first character must be alphabetic; otherwise it is converted as follows: 
		
 
		If a hyphen is used in characters 2 through 8 of program-name-1 in a program that is not contained in another program, it is changed to zero (0).
The MAPNAME Compiler directive controls this behavior.
 For programs that are contained in another program, program-name-1 can be any valid user-defined COBOL word, up to 30 characters long. The first eight characters need not be unique, and they will not be converted as described above. Lower-case letters are valid, but such program-names will be handled in a case-insensitive manner.
 For programs that are contained in another program, program-name-1 can be any valid user-defined COBOL word, up to 30 characters long. The first eight characters need not be unique, and they will not be converted as described above. Lower-case letters are valid, but such program-names will be handled in a case-insensitive manner. 
		
 A program contained within another program must not be assigned the same name as that of any other program contained within the compilation unit that contains this program.
 A program contained within another program must not be assigned the same name as that of any other program contained within the compilation unit that contains this program. 
	  The optional COMMON clause can be used only if the program is contained within another program.
 The optional COMMON clause can be used only if the program is contained within another program. 
	  If the IS PROGRAM phrase is present, at least one of COMMON or INITIAL
 If the IS PROGRAM phrase is present, at least one of COMMON or INITIAL 
		 
		  

 or RECURSIVE
 or RECURSIVE 
		
must be specified.
 Literal-1 must be an alphanumeric literal and must not be a figurative constant.
 Literal-1 must be an alphanumeric literal and must not be a figurative constant. 
	  Literal-1 must not be specified in a program that is contained within another program.
 Literal-1 must not be specified in a program that is contained within another program. 
	 
 The RECURSIVE clause must not be specified if any program that directly or indirectly contains this program is an initial program.
 The RECURSIVE clause must not be specified if any program that directly or indirectly contains this program is an initial program. 
	  The RECURSIVE clause must not be specified in a program that is contained within another program.
 The RECURSIVE clause must not be specified in a program that is contained within another program. 
	  The RECURSIVE clause must not be specified in a program that contains another program.
 The RECURSIVE clause must not be specified in a program that contains another program. 
	  The COMMON clause specifies that the program is common. A common program is contained within another program but can be called from programs other than that containing it.
  The COMMON clause specifies that the program is common. A common program is contained within another program but can be called from programs other than that containing it. 
	  The INITIAL clause specifies that the program is initial. When an initial program is called, it and any programs contained within it are placed in their initial state. See the topic 
		Initial State in the chapter 
		Language Fundamentals.
  The INITIAL clause specifies that the program is initial. When an initial program is called, it and any programs contained within it are placed in their initial state. See the topic 
		Initial State in the chapter 
		Language Fundamentals. 
	 

 The RECURSIVE clause specifies that the program is recursive.
 The RECURSIVE clause specifies that the program is recursive. 
		 
		
 Any programs contained within a recursive program are recursive.
 Any programs contained within a recursive program are recursive. 
		


 A program in which the Local-Storage Section is specified is recursive.
 A program in which the Local-Storage Section is specified is recursive. 
		
A recursive program may be called while it is active and may call itself.


 If the RECURSIVE clause is not specified in a program or implied for a program, the program must not be called while it is active.
 If the RECURSIVE clause is not specified in a program or implied for a program, the program must not be called while it is active. 
	 

 Additional rules concerning common, initial and recursive programs are given in the topic 
		Common, Initial and Recursive Attributes in the chapter 
		Language Fundamentals
 Additional rules concerning common, initial and recursive programs are given in the topic 
		Common, Initial and Recursive Attributes in the chapter 
		Language Fundamentals 
	  
 
