MODULE broadcast4; (*--------------------------------------------------------- File name: broadcast4.pm Author: AG Date: 5/25/05 Problem: This program broadcasts a chain into an ARRAY of chains ARRAY from 1 to N Example of Execution: N: 5 L1: 7 4 8 2 5 6 1 9 3 2 4 9 1 7 0 ArrLine[1]: 7 4 8 2 5 6 1 9 3 2 4 9 1 7 0 ArrLine[2]: 7 4 8 2 5 6 1 9 3 2 4 9 1 7 0 ArrLine[3]: 7 4 8 2 5 6 1 9 3 2 4 9 1 7 0 ArrLine[4]: 7 4 8 2 5 6 1 9 3 2 4 9 1 7 0 ArrLine[5]: 7 4 8 2 5 6 1 9 3 2 4 9 1 7 0 Cycles: N assignments (where N is the number of lines in the array) *) (*---------------------------------------------------------- CONFIGURATION ----------------------------------------------------------*) CONST MAXCELLS=1024; (* MAXCELLS cells in one line *) CONST N=5; 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; i, RightLimit, MaxVal: INTEGER; ArrLine: ARRAY[1..N] OF chain OF INTEGER; (*---------------------------------------------------------- MAIN ----------------------------------------------------------*) BEGIN (*Initialize data *) RightLimit:= 16; MaxVal:= 10; (* Maximum value for the random numbers *) L1:= RandomInt(chain) MOD MaxVal; (*set L1 to random numbers *) (*prepare selection *) L0:= ID(chain); (* L0=1 2 3 4 5 6 7 8 9 10 .. *) IF L0 < RightLimit THEN (*printing*) WriteString("N: "); WriteInt(N, 2); WriteLn; WriteString("L1: "); WriteInt(L1, 2); WriteLn; FOR i:= 1 TO N DO ArrLine[i] := L1; (*only one assingment per Line!!!*) (*printing*) WriteString("ArrLine["); WriteInt(i,0); WriteString("]: "); WriteInt(ArrLine[i], 2);WriteLn; END; (* FOR *) END; (* IF *) END broadcast4.