MODULE broadcast1; (*--------------------------------------------------------- File name: broadcast1.pm Author: AG Date: 5/23/05 Problem: This program broadcasts two single variables into a chain continuously. Example of Execution: L1: 5 6 5 6 5 6 5 6 5 6 5 6 5 6 5 6 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 L0, L1: chain OF INTEGER; N, X1, X2, RightLimit: INTEGER; (*---------------------------------------------------------- MAIN ----------------------------------------------------------*) BEGIN (*Initialize data *) RightLimit:= 16; N:= 2; X1:= 5; X2:= 6; (*Prepare Selection *) L0:= ID(chain); IF L0 MOD N = 1 THEN (*select odd positions *) L1:= X1; ELSE (* L0 MOD N = 0 *) (* select even positions *) L1:= X2; END; (* IF *) (* L1= 5 6 5 6 5 6 5 6 5 6 5 6 5 6 5 6 5 6... *) (*printing*) IF L0 <= RightLimit THEN WriteString("L1: "); WriteInt(L1, 2);WriteLn; END; (*IF *) END broadcast1.