| **Navigation:**  [[introduction.htm|Language Reference]] > 2 - Program Source Code Format > Program Format >====== PROGRAM (declare a program) ====== | [[program format.htm|{{btn_prev_n.gif|Previous page}}]][[introduction.htm|{{btn_home_n.gif|Return to chapter overview}}]][[member identify member source file .htm|{{btn_next_n.gif|Next page}}]] | | || | **PROGRAM** | | **MAP** | | //Prototypes// | | . [**MODULE( )** | | //Prototypes// | | **END **] | | **END** | | //global data// | | **CODE** | | //Statements// | | [**RETURN**] | | //Procedures// | {{newcnet.jpg|NewCNet.jpg}} In Clarion#, you can add a default access modifier to the PROGRAM statement: **PROGRAM[, PUBLIC|,INTERNAL]** All declarations without explicit access modifier will have the default access modifier. The default for PROGRAM is PUBLIC. {{blk2blue.jpg|blk2blue.jpg}} | **PROGRAM** | The first declaration in a Clarion program source module. Required. | | **MAP** | Global procedure declarations. Required. | | **MODULE** | Declare member source modules. | | //prototypes// | PROCEDURE declarations. | | //global data// | Declare Global data which may be referenced by all procedures. | | **CODE** | Terminate the data declaration section and begin the executable code section of the PROGRAM. | | //statements// | Executable program instructions. | | **RETURN** | Terminate program execution. Return to operating system **control.** | | //procedures// | Source code for the procedures in the PROGRAM module. | The **PROGRAM** statement is required to be the first declaration in a Clarion program source module. It may only be preceded by source code comments. The PROGRAM source file name is used as the object (.OBJ) and executable (.EXE) file name, when compiled. The PROGRAM statement may have a label, but the label is ignored by the compiler. A PROGRAM with PROCEDUREs must have a MAP structure. The MAP declares the PROCEDURE prototypes. Any PROCEDURE contained in a separate source file must be declared in a MODULE structure within the MAP. Data declared in the PROGRAM module, between the keywords PROGRAM and CODE, is Global data that may be accessed by any PROCEDURE in the PROGRAM. Its memory allocation is Static. **Example:** ** ****PROGRAM****                !Sample program declaration** **  INCLUDE('EQUATES.CLW') !Include standard equates** **  MAP** **CalcTemp    PROCEDURE    !Procedure Prototype** **  END** ** CODE** ** CalcTemp                !Call procedure** **CalcTemp   PROCEDURE** **Fahrenheit  REAL(0)      !Global data declarations** **Centigrade  REAL(0)** **Window WINDOW('Temperature Conversion'),CENTER,SYSTEM** **     STRING('Enter Fahrenheit Temperature: '),AT(34,50,101,10)** **     ENTRY(@N-04),AT(138,49,60,12),USE(Fahrenheit)** **     STRING('Centigrade Temperature:'),AT(34,71,80,10),LEFT** **     ENTRY(@N-04),AT(138,70,60,12),USE(Centigrade),SKIP** **     BUTTON('Another'),AT(34,92,32,16),USE(?Another)** **     BUTTON('Exit'),AT(138,92,32,16),USE(?Exit)** **       END** ** CODE                         !Begin executable code section** ** OPEN(Window)** ** ACCEPT** **  CASE ACCEPTED()** **  OF ?Fahrenheit** **   Centigrade = (Fahrenheit - 32) / 1.8** **   DISPLAY(?Centigrade)** **  OF ?Another** **   Fahrenheit = 0** **   Centigrade = 0** **    DISPLAY** **   SELECT(?Fahrenheit)** **  OF ?Exit** **   BREAK** **  END** ** END** ** CLOSE(Window)** ** RETURN** **See Also:** [[map declare procedure prototypes .htm|MAP]] [[module specify member source file .htm|MODULE]] [[procedure define a procedure .htm|PROCEDURE]] [[public set variable public to all class modules .htm|PUBLIC]] [[internal class member assembly accessible .htm|INTERNAL]] [[data declarations and memory allocation.htm|Data Declarations and Memory Allocation]]