MODULE unionsel; (*--------------------------------------------------------- File name: unionsel.pm Author: Alejandro Giacometti Date: 6/10/05 Problem: This program performs an union operation on the selections of two different lines. Result is selected from both. Example of Execution: (selected is 3) L2 : 3 1 4 1 4 2 0 0 3 4 2 0 4 2 3 L3 : 0 3 1 4 1 1 0 1 4 0 2 3 0 3 4 L1bool: 1 1 0 0 0 0 0 0 1 0 0 1 0 1 1 Cycles: 2 test + 3 assign Cycles in Connex: 1 *) (*---------------------------------------------------------- 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 L1bool, L2, L3: chain OF INTEGER; (*-------------------------------------------------------- MAIN -----------------------------------------------------------*) BEGIN (* initializing data *) L2 := RandomInt(chain) MOD 5; L3 := RandomInt(chain) MOD 5; L1bool := 0; IF ID(chain) < 16 THEN IF L2 = 3 THEN L1bool := 1; END; (* IF *) IF L3 = 3 THEN; L1bool := 1; END; (* IF *) (* printing *) WriteString( " L2 : ");WriteInt( L2 , 2); WriteLn; WriteString( " L3 : ");WriteInt( L3 , 2); WriteLn; WriteString( " L1bool: ");WriteInt( L1bool , 2); WriteLn; END; (* IF *) END unionsel.