My contribution (not sure if it works)
SCAR Code:
Function TradeScreen: Variant;
Begin
Result := (GetColor(90, 61) = 2070783)
If Result = 0 Then Result := 2;
End;
Edit, on your first proc
.
SCAR Code:
procedure AreaInfo(area: string; var startx, starty, rowsize, colsize,
colnumber, rownumber: Integer);
var a: array [0..4] of tintegerarray;
s: TStringArray;
e, i: integer;
begin
a[0] := [560,212,36,42,4,7];
a[1] := [63,97,55,39,21,4];
a[2] := [35,91,44,44,10,5];
a[3] := [310,75,32,49,4,7];
a[4] := [24,75,32,49,4,7];
s := ['inv', 'inventory', 'shop', 'bank', 'trade', 'your trade'];
For I := 0 to High(S) Do
case LowerCase(area) of
s[I] : e := StrToint(S[I]);
else writeln('AreaInfo');
end;
startx := a[e][0];
starty := a[e][1];
rowsize := a[e][2];
colsize := a[e][3];
colnumber := a[e][4];
rownumber := a[e][5];
end;
You should also store rownumber and those categorical variables to an Integer Array then use a loop to call them 
Edit, just did that:
SCAR Code:
procedure AreaInfo(area: string; var startx, starty, rowsize, colsize,
colnumber, rownumber: Integer);
var a: array [0..4] of tintegerarray;
s: TStringArray;
e, i: integer;
Opt : TIntegerArray;
begin
a[0] := [560,212,36,42,4,7];
a[1] := [63,97,55,39,21,4];
a[2] := [35,91,44,44,10,5];
a[3] := [310,75,32,49,4,7];
a[4] := [24,75,32,49,4,7];
Opt := [startx, starty, rowsize, colsize, colnumber, rownumber];
s := ['inv', 'inventory', 'shop', 'bank', 'trade', 'your trade'];
For I := 0 to High(S) Do
case LowerCase(area) of
s[I] : e := StrToint(S[I]);
else writeln('AreaInfo');
end;
For I := 0 To High(Opt) Do
Opt[I] := a[e][I];
end;