//
proc main;
/*
//	option 8 2;
//	x = abs mod;
	xx = aaa;
//	print aaa abs;
//	x = new xx(1,2);
	x = new aaa;
	print x;
*/
	x = new aaa(1,2);
//	x = aaa new 1;

//	print x /d x;
	print x.fun(10,20,30);
/*
	y = new(aaa,3,4);
//	y = new(aaa);
	print y /d y;
	print *y y.a y.b;
	print y.fun(11,22,33);

	$1 = 'aaa';
	z = new($1,10,20);
	print z /d z;
	print *z z.a z.b;
	print z.fun(100,200,300);

	xx = new(abs,10,20);
*/
//	private	char(3) a = 'ABC';
	return ERROR;
end proc;

class aaa;
//	int a;
//	char b;
	local a;
	local b;
	func aaa(x);
		print 'aaa' x;
		a = x;
		return 0;
	end func;
	func aaa(x,y);
		print 'aaa' x y;
		a = x;
		b = y;
		return 0;
	end func;
	func fun(x,y,z);
		print 'fun' x y z;
		print 'fun' a b;
	//	private	char(3) a = 'ABC';
		return a*b;
	end func;
end class;
