resource backsubstitution () int n; getarg (1,n) string[20] namea; getarg(2,namea) string[20] nameb; getarg(3,nameb) file filea = open(namea, READ) file fileb = open(nameb, READ) real a [n,n]; real b [n]; real x [n] op pipechan [n+1] (real data) # Einlesen der Matrix und des Vektors for [i=1 to n] { for [j = 1 to n] { read(filea,a[i,j]) } } for [i= 1 to n] { read(fileb,b[i]) } process pipe [i=1 to n] { real sum, xvalue sum = 0 for [j = 1 to i-1] { receive pipechan[i](xvalue) send pipechan[i+1](xvalue) sum += a[i,j] * xvalue } x[i] = (b[i] - sum)/a[i,i] send pipechan[i+1](x[i]) } process writer { real x for [i=1 to n] { receive pipechan[n+1](x); writes(x," ")} write() } end