In this section:
Begin by opening a "Command Prompt" Window (DOS box).
Now use your text editor to list factor1.for.
Here is the text of factor1.for. Line numbers have been added so that each line can be referenced in the explanation below.
1 WINAPP 'CWP_ICO.RC'
3 PROGRAM factor1
4 IMPLICIT NONE
5 INCLUDE <windows.ins>
6 INTEGER ans
7 ans=winio@('%ca[Number Factoriser]')
You can compile and link this program with a command line of the form:
FTN95 FACTOR1 /LINK
This produces a Windows executable factor1.exe that can be run by typing
from the DOS box command line.
Alternatively you can run the executable from the Program Manager.
factor1.for simply opens a format window with a caption like this:
The window may differ slightly in its appearance from one version of Windows to another.
The quickest way to terminate the application is to press Alt-F4.
Now that you have seen the application running, have a look at the code. Before looking at line 7, which is the key line in this program, let's get some preliminaries out of the way first.
Line 1 provides information for the linker that is called when you use /LINK on the compiler command line. It causes the linker to produce a Windows executable. For a Win32 application, the zero values on this line are redundant. (Some later compilers allow you to omit these values.)
cwp_ico.rc is the name of what is called a resource script that can be found in the same directory as factor1.for. This particular resource script provides information about an icon that is embedded in the application. In the program this "Window" icon is not used in the application itself but is simply available as a icon that identifies the application when it is installed in the Program Manager or its equivalent.
WINAPP must be the first compiler directive in the file and must appear before the main program.
Line 4 is recommended as a standard line for all programs and routines that use the file windows.ins. This line is a compiler directive that ensures that all variables are given an explicit type. It is included because the names of many of the Windows parameters are very long and consequently they are easy to misspell. Without this directive, such bugs are very hard to find. The file factor.for is too short for this to matter, but never-the-less we adopt the practice here as a matter of routine.
Line 5 is a call to include the file windows.ins. The diamond brackets indicate that the file is located within the Silverfrost compiler directory. This file contains type declarations for many of the ClearWin+ and Windows API routines and parameters. The only information of relevance to this particular main program is that winio@ returns an INTEGER result (in this guide, all integers are 32 bits long unless otherwise stated). Note that, if you are only using winio@ from the ClearWin+ library, then you will reduce the compilation time by replacing the INCLUDE line by
This brings us to line 7 and the heart of this and most ClearWin+ applications. winio@ is a ClearWin+ function that allows you to create a format window that displays all manner of graphical user interface (GUI) objects such as menus, buttons, pictures, formatted text, list boxes and icons. It also allows you to specify what action is to be taken in response to the options that you present to the user. This means that this one function can be used to avoid the complexities of writing a GUI application based on calls to the standard API library combined with a detailed resource script and complex call-back functions.
The first (and in this case only) argument of winio@ is called a format string. In the present case the format string starts with %ca (Caption) and this is an example of what is called a format code. The format code %ca stands for 'caption' and it supplies a title for the format window. The title itself appears in square brackets after the format code.
There are many format codes available and all of them are represented by a % sign and a two letter format code. Additional information is often supplied (as here) by adding text enclosed in square brackets. This text is called a standard character string. We shall see later that sometimes extra information is placed between the % sign and the two letters. In other cases the format code is allowed to collect information from additional arguments that are presented after the initial format string argument of winio@.
This brings us to the end of step 1 in our development process.