HelloWorld!Modula-2版

 今回紹介するプログラムは,所謂HelloWorldで,画面にHelloWorldと表示するだけの極々簡単なプログラムです。今回は,実際にHelloWorldプログラムを見ながら,プログラムの大枠を紹介して,次回以降にそれらの詳しい説明を進めて行くことにします。

ソース

 解説に先立ち,サンプルコード全体を以下に示します。
HelloWorld.mod
MODULE HelloWorld;

FROM
	GraphicWindows
IMPORT
	Window,
	OpenGraphicWindow,
	CloseGraphicWindow,
	SetPen,
	WriteString;

FROM
	EventBase
IMPORT
	mouseDown,
	Point,
	EventRecord,
	PushTask,
	PopTask,
	PollEventTasks;

VAR
	wndHello	:Window;
	blnDone		:BOOLEAN;
	tskMouse	:INTEGER;

PROCEDURE TrackMouse(VAR recEvent :EventRecord)	:BOOLEAN;
BEGIN
	IF recEvent.what = mouseDown THEN
		blnDone := TRUE;
		RETURN TRUE
	ELSE
		RETURN FALSE
	END
END TrackMouse;

PROCEDURE WriteHello(wndArg :Window);
BEGIN
	SetPen(wndArg,10,10);
	WriteString(wndArg,"hello,world!")
END WriteHello;

BEGIN
	OpenGraphicWindow(wndHello,50,50,100,50,"hello,world!",WriteHello);
	tskMouse := PushTask(TrackMouse);
	REPEAT
		PollEventTasks
	UNTIL blnDone;
	PopTask(tskMouse);
	CloseGraphicWindow(wndHello)
END HelloWorld.

解説

MODULE HelloWorld;
 ここでは,モジュールの開始を宣言しています。今回は,HelloWorldプログラムのモジュールがここから始まることを宣言しています。(後で説明するモジュールの終了の宣言と対になっています。)
FROM
	GraphicWindows
IMPORT
	Window,
	OpenGraphicWindow,
	CloseGraphicWindow,
	SetPen,
	WriteString;

FROM
	EventBase
IMPORT
	mouseDown,
	Point,
	EventRecord,
	PushTask,
	PopTask,
	PollEventTasks;
 ここでは,「Hello,World!」と画面に表示する処理を実現しているGraphicWindowsモジュールと,イベント処理を実現しているEventbaseをHelloWorldプログラムに取り込んでいます。
VAR
	wndHello	:Window;
	blnDone		:BOOLEAN;
	tskMouse	:INTEGER;
 ここでは変数を宣言しています。wndHelloが「Hello,World!」と表示するWindowのデータを保持する変数,blnDoneは,終了するかどうかを保持する変数,tskMouseはEvent処理に用いる変数,です。
PROCEDURE TrackMouse(VAR recEvent :EventRecord)	:BOOLEAN;
BEGIN
	IF recEvent.what = mouseDown THEN
		blnDone := TRUE;
		RETURN TRUE
	ELSE
		RETURN FALSE
	END
END TrackMouse;
 Mouse関係のEventを処理する関数です。
PROCEDURE WriteHello(wndArg :Window);
BEGIN
	SetPen(wndArg,10,10);
	WriteString(wndArg,"hello,world!")
END WriteHello;
 Windowに「Hello,World!」と表示する関数です。
BEGIN
	OpenGraphicWindow(wndHello,50,50,100,50,"hello,world!",WriteHello);
	tskMouse := PushTask(TrackMouse);
	REPEAT
		PollEventTasks
	UNTIL blnDone;
	PopTask(tskMouse);
	CloseGraphicWindow(wndHello)
END HelloWorld.
 HelloWorldプログラムのメインの部分です。
 BEGINは,モジュールのメイン部分が始まることを示し,対して対になるENDはメイン部分の終了を示すとともに,モジュール自体がここで終わることをも示します。
 この部分では,Windowを作成し,マウスイベント処理を組込み,イベントを待ち,最後にイベント処理及び作成されたWindowを削除する,という一連の処理を行っています。(詳しくは次回以降に説明します。)

お試し

 さて,プログラムを入力して,コンパイル・リンクしてみましょう。どうでしょうか?以下のキャプチャの様に,うまいことHelloWorldプログラムが実行されてましたでしょうか?(クリックすると終了します。)

 えらくさらっと流してしまいましたが,次回以降,今回流した各部分に関して次回以降説明して行きます。