if (c=='\021' && flag== -1 && rgh) {
/*
if (c=='\021' && ph[j][3]<50 && flag== -1 && rgh) {
*/
rintc= -1;
lseek(fi,0L,0);
read(fi,m3,12);
m3[12]=0;
sscanf(m3,"%ld%ld",&rgh1,&rgd);
sprintf(deb,"QUERY:rgh =%ld|",rgh1);
dbgr(1,deb);
for(count=rgh;count<rgh1;count++)
{
	fseek(fh,count*lh,0);
	fgets(ptr[0][count],ph[0][2]+1,fh);
}
rgh=rgh1;
strcpy(head[j],m1);
strcpy(m1,head[0]);
sf=0;
for (z=0;z<nh;z++)
{
	hed[z][0]=0;
	if(((head[z][0] && ph[z][3]!=8) || (ph[z][3]==8 && z==j))&& ph[z][3]!=6 && (ph[z][3]<29 || ph[z][3]>49))
	{
		if (z) sf=1;
		strcpy(hed[z],head[z]);
		sprintf(deb,"SQUERY : z=%d| hed=%s|",z,hed[z]);
dbgr(1,deb);
	}
}
sprintf(deb,"QUERY : sf=%d|",sf);
dbgr(1,deb);
cc= -1;
strcpy(m3,m1);
bus=0;
shf=rgh;
if (m3[0])
{
	bus=1;
	strcpy(zm2,m1);
	if (m3[0]=='^')
	{
		sprintf(zm2,"%s",m3+1);
		bus=2;
	}
	if (m3[strlen(m3)-1]=='$')
	{
		zm2[strlen(zm2)-1]=0;
		bus=3;
	}
	shf=rgh;
}
	sprintf(deb,"sf=%d| bus=%d| m2=%s|",sf,bus,m2);
dbgr(1,deb);
zl1=strlen(zm2);
c=10;
fn=0;
do
{
	if (!sf)
	{
		if (bus==2)
		{
			if (c==10)
			{
				if(shf==0&&fn) shf=rgh;
				while (--shf >=0 && strncmp(ptr[0][shf],zm2,zl1)) if(shf==0 && fn) shf=rgh;
			}
			if (c==26)
			{
				if(shf==rgh-1&&fn) shf= -1;
				while (++shf <rgh && strncmp(ptr[0][shf],zm2,zl1)) if(shf==rgh-1 && fn) shf= -1;
			}
		}
		if (bus==3)
		{
			if (c==10)
			{
				if(shf==0&&fn) shf=rgh;
				while (--shf >=0 && strncmp(ptr[0][shf]+ph[0][2]-zl1,zm2,zl1)) if(shf==0 && fn) shf=rgh;
			}
			if (c==26)
			{
				if(shf==rgh-1&&fn) shf= -1;
				while (++shf <rgh && strncmp(ptr[0][shf]+ph[0][2]-zl1,zm2,zl1)) if(shf==rgh-1 && fn) shf= -1;
			}
		}
		if (bus==1)
		{
			if (c==10)
			{
				if(shf==0&&fn) shf=rgh;
				while (--shf >=0)
				{
					for(m=0;m<=ph[0][2]-zl1;m++)
					{
							sprintf("ptr=%s| m2=%s| shf=%d",ptr[0][shf]+m,zm2,shf);
						if(!strncmp(ptr[0][shf]+m,zm2,zl1))
						{
								sprintf(deb,"FIND I H0 ARRDOWN ptr=%s| m2=%s| shf=%d",ptr[0][shf]+m,zm2,shf);
dbgr(1,deb);
							break;
						}
					}
					if(m<=ph[0][2]-zl1) break;
					if(shf==0 && fn) shf= rgh;
				}
			}
			if (c==26)
			{
				if(shf==rgh-1&&fn) shf= -1;
				while (++shf <rgh)
				{
					for(m=0;m<=ph[0][2]-zl1;m++)
					{
							sprintf(deb,"ptr=%s| m2=%s| shf=%d",ptr[0][shf]+m,zm2,shf);
dbgr(1,deb);
						if(!strncmp(ptr[0][shf]+m,zm2,zl1))
						{
								sprintf(deb,"FIND I H0 ARRUP   ptr=%s| m2=%s| shf=%d",ptr[0][shf]+m,zm2,shf);
dbgr(1,deb);
							break;
						}
					}
					if(m<=ph[0][2]-zl1) break;
					if(shf==rgh-1 && fn) shf= -1;
				}
			}
		}
		if(bus==0)
		{
			if (c==10) shf--;
			if (c==26) shf++;
			if (shf<0) shf=rgh-1;
			if (shf==rgh) shf=0;
		}
	}
	else
	{
		if(cc<0)
		{
			sprintf(mes,"SEARCHING RECORDS");
			coment(mes);
			cc=0;
			for (count=0;count<rgh;count++)
			{
				fseek(fh,count*lh,0);
				for (ms=0;ms<nh;ms++) if(ph[ms][3]<30||ph[ms][3]>49)
				{
					fgets(head[ms],1+ph[ms][2],fh);
					if (hed[ms][0])
					{
						stat[ms]=0;
						zl=strlen(hed[ms]);
						for(m=0;m<=ph[ms][2]-zl;m++) if(!strncmp(head[ms]+m,hed[ms],zl)) stat[ms]=1;
							sprintf(deb," __SQRY : ms=%d| hed=%s| head=%s| stat=%d",ms,hed[ms],head[ms],stat[ms]);
dbgr(1,deb);
					}
				}
				for(ms=0;ms<nh;ms++) if (hed[ms][0] && !stat[ms]) break;
				if (ms==nh) poi[cc++]=count;
			}
			sprintf(mes,"FIND %d RECORD(S)",cc);
			coment(mes);
			if (cc==0) shf=rgh;
			else 
			{
				sprintf(deb,"/tmp/IHD%d",getpid());
				fp=fopen(deb,"w+");
				for(ms=0;ms<cc;ms++) fprintf(fp,"%.6ld\n",poi[ms]);
				fclose(fp);
			}
			
		}
		sprintf(deb,"m1=%s| bus=%d| shf=%ld| m2=%s|",m1,bus,shf,zm2);
		dbgr(1,deb);
		if (cc)
		{
			if (c==10) if(ms-- ==0) ms=cc-1;
			if (c==26) if(++ms ==cc) ms= 0;
			shf=poi[ms];
		}
	}
	rintc=shf;
	if (shf >=0 && shf <rgh)
	{
		fn=1;
		fseek(fh,shf*lh,0);
		for (j=0;j<nh;j++)
		{
			if (ph[j][3] <30 || ph[j][3]>49)
			{
				fgets(head[j],1+ph[j][2],fh);
				while (head[j][0] && head[j][strlen(head[j])-1]==32) head[j][strlen(head[j])-1]=0;
				pos(ph[j][0],ph[j][1]);
				if((ph[j][3]>0&&ph[j][3]<6) || ph[j][3]==26) sprintf(m1,"%%%ds",ph[j][2]);
				else sprintf(m1,"%%-%ds",ph[j][2]);
				if(head[j][0])
				{
					if(ph[j][3]==9 ||ph[j][3]==8)
					printf("%2.2s/%2.2s/%s",head[j],head[j]+2,head[j]+4);
					if(ph[j][3]==6) printf("%2.2s%s:%s%2.2s%s:%s%2.2s",head[j],tc[19],tc[20],head[j]+2,tc[19],tc[20],head[j]+4);
				}
				else
				{
					if(ph[j][3]==9 ||ph[j][3]==8 ||ph[j][3]==6)
					printf("%10s","");
				}
				if(ph[j][3]!=9 &&ph[j][3]!=8 &&ph[j][3]!=6)
				if((ph[j][3]>0 && ph[j][3]<6) ||ph[j][3]==26)
				{
						m2[0]=0;
						if(ph[j][3]<6) punto(head[j],m2,ph[j][3]-1);
						else punto(head[j],m2,1);
						printf(m1,m2);
				}
				else printf(m1,head[j]);
				if (ph[j][3]>49)
				{
					m=ph[j][3]-49;
					if (!recover (m,head[j],ph[j][2]))
					{
						sprintf (dbr[m][1],"");
						z='k';
					}
					else z=0;
					pos(ph[j][0]+1,ph[j][1]);
					sprintf(m1,"%s%%-%d.%ds%s",tc[2],dbd[m][2],dbd[m][2],tc[3]);
					printf(m1,dbr[m][1]);
					for (k=0;k<nh;k++) if (ph[k][3]>39 && ph[k][3]<50 && ph[k][4]==j)
					{
						m=ph[k][3]-39;
						if (z!='k') recov (m,head[ph[k][4]],ph[ph[k][4]][2],ph[k][5],ph[k][6]);
						else sprintf (dbr[m][1],"");
						pos(ph[k][0],ph[k][1]);
						sprintf(m1,"%%-%d.%ds",ph[k][6],ph[k][6]);
						sprintf (head[k],m1,dbr[m][1]);
						if (isdigit(head[k][0])) while(head[k][0] && head[k][strlen(head[k])-1]==32) head[k][strlen(head[k])-1]=0;
						sprintf(m1,"%s%%%d.%ds%s",tc[2],ph[k][2],ph[k][2],tc[3]);
						if (isdigit(head[k][0]))
						{
							m2[0]=0;
							punto(head[k],m2,1);
							printf(m1,m2);
						}
						else printf (m1,head[k]);
					}
				}
			}
		}
		for (j=0;j<nh;j++)
		{
			if (ph[j][3]==30)
			{
				for (m=0;m<cl1;m++) if (clc[m][0]=='h' && clc[m][1]==j)
				{
					k=1;
					for (z=0;z<512;z++)
					m1[z]=0;
					while (clc[m][++k])
					if (clc[m][k]!='h' && clc[m][k]!='d') strncat(m1,clc[m]+k,1);
					else
					{
						k++;
						sscanf(clc[m]+k,"%2d",&mm);
						k++;
						if (head[mm][0]=='-')
						{
							strcat(m1," 0 ");
							strcat(m1,head[mm]);
							strcat(m1," - ");
						}
						else if(head[mm][0]==32 || !head[mm][0]) strcat(m1," 0 ");
						else strcat(m1,head[mm]);
					}
				}
				pol(m1,head[j]);
				pos(ph[j][0],ph[j][1]);
				sprintf(m1,"%s%%%d.%ds%s",tc[2],ph[j][2],ph[j][2],tc[3]);
				m2[0]=0;
				punto(head[j],m2,1);
				printf(m1,m2);
			}
		}
	}
	pos(ph[0][0],ph[0][1]+ph[0][2]);
	if(fn) while((c=getin1())!=13 && c!=27 && c!=10 && c!=26 && c!=17);
}
while(fn&&c!=13 && c!=27 && c!=17);
if(c==27  || c==17|| !fn)
{
	printf("%s%s",tc[0],hd);
	if (rgh)
	{
		pos(ph[0][0]-2,59 - ph[0][2]*2);
		printf ("%s R:%.4d %s %s F:%s %s %s L:%s %s",tc[2],rgh,tc[3],tc[2],ptr[0][0],tc[3],tc[2],ptr[0][rgh-1],tc[3]);
	}
	else
	{
		pos(ph[0][0]-2,44);
		printf ("%s NO EXISTEN INGRESOS EN EL FORM %s",tc[2],tc[3]);
	}
	for (j=0;j<nh;j++)
	{
		for (mm=0;mm<79;mm++) head[j][mm]=hed[j][mm];
		if (ph[j][3]==8) if(!(ph[j-1][3]>49 &&ph[j+1][3]==6))
		strcpy(head[j],date);
		pos(ph[j][0],ph[j][1]);
		if(head[j][0])
		{
			if(ph[j][3]==9) printf("%2.2s/%2.2s/%s",head[j],head[j]+2,head[j]+4);
			if(ph[j][3]==8) if(!(ph[j-1][3]>49 &&ph[j+1][3]==6))
			printf("%2.2s/%2.2s/%s",head[j],head[j]+2,head[j]+4);
			if(ph[j][3]==6) printf("%2.2s%s:%s%2.2s%s:%s%2.2s",head[j],tc[19],tc[20],head[j]+2,tc[19],tc[20],head[j]+4);
		}
		if (ph[j][3]==26 ||(ph[j][3]>0 && ph[j][3]<6))  sprintf(m1,"%%%d.%ds",ph[j][2],ph[j][2]);
		else sprintf(m1,"%%-%d.%ds",ph[j][2],ph[j][2]);
		if(ph[j][3]!=9 &&ph[j][3]!=8 &&ph[j][3]!=6)
		if((ph[j][3]>0 && ph[j][3]<6) ||ph[j][3]==26)
		{
				m2[0]=0;
				if(ph[j][3]<6) punto(head[j],m2,ph[j][3]-1);
				else punto(head[j],m2,1);
				printf(m1,m2);
		}
		else printf(m1,head[j]);
	}
}
else if(c!=17) c=27;
strcpy(m1,head[0]);
rintc=shf;
j=0;
if(!fn)
{
	sprintf(mes,"NO HAY ASOCIACIONES A SU CONSULTA");
	coment(mes);
	getin1();
	head[0][0]=0;
	coment("INGRESE DATOS IDENTIFICACION Y PRESIONE LA TECLA  - ESC -");
	j= -1;
}
}
