| FETCH | 
 | 
 | 
 | 
 | operand1  [operand2
                              																 [(parameter)]]   | 
This document covers the following topics:
For explanations of the symbols used in the syntax diagram, see Syntax Symbols.
Related Statements: CALL | CALL FILE |
                  								CALL LOOP |
                  								CALLNAT |
                  								DEFINE SUBROUTINE |
                  								ESCAPE |
                  								FETCH |
                  								PERFORM 
               
Belongs to Function Group: Invoking Programs and Routines
The FETCH statement is used to execute a Natural object
                  										program written as a main program. The program to be loaded must have been
                  										previously stored in the Natural system file with a
                  										CATALOG or
                  										STOW command.
                  										Execution of the FETCH statement does not overwrite any source
                  										program in the Natural source work area.
               
For Natural RPC: See Notes on Natural Statements on the Server (in the Natural RPC (Remote Procedure Call) documentation).
In addition to the parameters passed explicitly with
                  												FETCH, the fetched program also has access to the established
                  												global data area.
               
The FETCH statement may cause the internal execution
                  												of an END TRANSACTION
                  												statement based on the setting of the Natural profile parameter
                  												OPRB
                  												(Database Open/Close Processing) as set by the Natural administrator. If a
                  												logical transaction is to span multiple Natural programs, the Natural
                  												administrator should be consulted to ensure that the
                  												OPRB parameter is set correctly.
               
Operand Definition Table:
| Operand | Possible Structure | Possible Formats | Referencing Permitted | Dynamic Definition | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| operand1 | C | S | A | yes | no | |||||||||||||||
| operand2 | C | S | A | G | A | U | N | P | I | F | B | D | T | L | G | yes | yes | |||
Syntax Element Description:
| Syntax Element | Description | 
|---|---|
| REPEAT |  REPEAT Option:  The  | 
| RETURN | RETURN Option: Without the specification of  If a program is invoked with  | 
| operand1 |  Program Name: The name of the program module (maximum 8 characters) can be specified as an alphanumeric constant or the content of an alphanumeric variable of length 1 to 8. Natural will attempt to locate the program in the library
                              																				currently active at the time the  The program name may contain an ampersand (&); at
                              																				execution time, this character will be replaced by the one-character code
                              																				corresponding to the current value of the system variable
                              																				 | 
| operand2 |  Passing Parameter Fields: The  The parameter fields can be read by the
                              																				 If more parameters are passed than are read by the next
                              																				 Note: | 
| parameter |  Date Format:  If  | 
** Example 'FETEX1': FETCH  (with parameter)                            
************************************************************************
DEFINE DATA LOCAL                                                       
1 #PNUM (N8)                                                            
1 #FNC  (A1)                                                            
END-DEFINE                                                              
*                                                                       
INPUT 10X 'SELECTION MENU FOR EMPLOYEES SYSTEM' /                       
      10X '-' (35) //                                                   
      10X 'ADD      (A)' /                                              
      10X 'UPDATE   (U)' /                                              
      10X 'DELETE   (D)' /                                              
      10X 'STOP     (.)' //                                             
      10X 'PLEASE ENTER FUNCTION: ' #FNC ///                            
      10X 'PERSONNEL NUMBER:' #PNUM                                     
*                                                                       
DECIDE ON EVERY VALUE OF #FNC                                           
  VALUE 'A', 'U', 'D'                                                   
    IF #PNUM = 0                                                        
      REINPUT 'PLEASE ENTER A VALID NUMBER' MARK *#PNUM
    END-IF                                             
  VALUE 'A'                                            
    FETCH 'FETEXAD' #PNUM                              
  VALUE 'U'                                            
    FETCH 'FETEXUP' #PNUM                              
  VALUE 'D'                                            
    FETCH 'FETEXDE' #PNUM                              
  VALUE '.'                                            
    STOP                                               
  NONE                                                 
    REINPUT 'PLEASE ENTER A VALID FUNCTION' MARK *#FNC 
END-DECIDE                                             
*                                                      
END 
               								
               ** Example 'FETEXAD': FETCH (called by FETEX1) ************************************************************************ DEFINE DATA LOCAL 1 #PERS-NR (N8) END-DEFINE * INPUT #PERS-NR * WRITE *PROGRAM 'Record added with personnel number:' #PERS-NR * END
** Example 'FETEXUP': FETCH (called by FETEX1) ************************************************************************ DEFINE DATA LOCAL 1 #PERS-NR (N8) END-DEFINE * INPUT #PERS-NR * WRITE *PROGRAM 'Record updated with personnel number:' #PERS-NR * END
** Example 'FETEXDE': FETCH (called by FETEX1) ************************************************************************ DEFINE DATA LOCAL 1 #PERS-NR (N8) END-DEFINE * INPUT #PERS-NR * WRITE *PROGRAM 'Record deleted with personnel number:' #PERS-NR * END
SELECTION MENU FOR EMPLOYEES SYSTEM
-----------------------------------
                                   
ADD      (A)                       
UPDATE   (U)                       
DELETE   (D)                       
STOP     (.)                       
                                   
PLEASE ENTER FUNCTION: D            
                                   
                                   
PERSONNEL NUMBER: 1150304 
               								Page      1                                                  05-01-13  11:58:46
                                                                               
FETEXDE  Record deleted with personnel number:   1150304