//

//define array char(10) a hash;// 10;
define const array b 10 = (1,,3,4.0D,5.0,'A','B',{'C',,'E'},8);
//define const array c 10 = (1,2,11..13,4,5.0D,6,7,8,b,*b);
define const array c 10 = (11..13);
//define array d 10 = *(2..5);
define array d 10 = 2..5;
define type struct a_t
	a,
	b;
define var ta,tb as a_t;

proc main;

	ta.a = 1;
	ta.b = 'A';
	print ta *ta;
	print "*ta + *tb";
/*
	for each z in ta;
		print z *z;
	next;

	print "(2..5) + (-1.5..2.5)";
	f = *(2..5);
	g = *(-1.5..2.5);
	print "f + g";
*/
	z = ('2'..'5') &+ ('A'..'C');
	print z;
//	e = *{1,2,3};
//	print e *e;
/*
	print c *c;
	for each z in c;
		print z *z;
		print z.index *z.value;
	next;
	print d *d;
	for each z in d;
		print z *z;
		print z.index z.value;
	next;

	e = {1,2,3};
	print e *e;

	print '----------';
	print b *b;
	print '----------';
	for each z in b;
		print *z;
	next;
	print '----------';
	for each z in *b;
		print *z;
	next;
	print '----------';
	print c *c;
	x = *b;
	print '----------';
	print x *x;
	y = *c;
	print y *y;

	f = *(2..5);
	print f *f countv(f);
	gg = ('2.1'..5.9);
	g = gg;
	print g *g countv(g) countv(*g);
	h = 'AX'..'ZY';
	print h *h countv(h) countv(*h);
	for each z in h;
		print *z;
	next;
*/
	print '----------';
	i = 2..5;
	print i countv(i) countv(*i);
	for each z in i;
		print *z;
	next;
	print '----------';
	for each z in '2.1'..5.9;
	//	print *z;
		echo *z;
	next;
	print 2..5 *(2..5) *('AB'..'DE');
	echo 2..5 *(2..5) *('AB'..'DE');

	return ERROR;
end proc;
