MODULE sign1; (*--------------------------------------------------------- File name: sign.pm Author: AG, MM Date: 5/27/05 Problem: This program calls a procedure that checks the sign of all elements of chain. sign1(x) = 1, if x > 0 -1, if x < 0 0, if x = 0 Example of Execution: L1: 4 -1 3 -2 3 -1 -2 4 3 0 -1 0 -2 4 -1 L2: 1 -1 1 -1 1 -1 -1 1 1 0 -1 0 -1 1 -1 Cycles: 2 assignments *) (*---------------------------------------------------------- CONFIGURATION ----------------------------------------------------------*) CONST MAXCELLS=1024; (* MAXCELLS cells in one line *) CONFIGURATION chain[0..(MAXCELLS - 1)]; CONNECTION left: chain [i] -> chain[(i-1) MOD MAXCELLS]; right: chain[i] -> chain[(i+1) MOD MAXCELLS]; (*---------------------------------------------------------- VARIABLES ----------------------------------------------------------*) VAR L1, LRes: chain OF INTEGER; (* Line always "L#" *) (*---------------------------------------------------------- PROCEDURES ----------------------------------------------------------*) PROCEDURE Sign(); (*---------------------------------------------------------- PROCEDURE MAIN ----------------------------------------------------------*) BEGIN LRes := 0; IF L1 > 0 THEN LRes := 1; END; (*IF *) IF L1 < 0 THEN LRes := -1; END; (* IF *) END Sign; (* Result is in Global variable F *) (*----------------------------------------------------------- MAIN ------------------------------------------------------------*) BEGIN (* initialize data *) L1 := RandomInt(chain) MOD 5; IF L1 < 3 THEN L1 := L1 * (-1); END; (* IF *) Sign(); (* display data *) IF ID(chain) < 16 THEN WriteString(" L1: "); WriteInt(L1, 2); WriteLn; WriteString(" LRes: "); WriteInt(LRes, 2); WriteLn; END; (* IF *) END sign1.