ISSN: 1139-8736 Depósito Legal: B-25223-99 |
Anexo II
Programa de obtención de
estructuras o frases de diagnóstico
BEGIN {FS = "|"}
#CREAR ORACIONES DE DIAGNaSTICO
#Función de leer campos
function CambiaTipo(TipoEnt, Subdir)
{
TipoSal = "";
for (k = 1; k <= 2; k++)
{
ARRAY[k] = substr(TipoEnt, k, 1);
if (k == 1)
{
if (Subdir ~ "r")
{
TipoSal = "h";
}
else
{
if (Subdir ~ "a")
{
TipoSal = "m";
}
}
}
else
{
if (k == 2)
{
TipoSal = TipoSal "?";
}
}
}
return(TipoSal)
} #Final de función
function LeeCampos(CampoCod, CampoText)
{
TempTipo = GetTipo(CampoCod);
if (TempTipo ~ "[0123456absenti]") # && TempTipo >= 7)
{
TARGETSTRING = CampoText;
if (length(TARGETSTRING) >= 2)
{
PRIMERO = 1;
for (w = 1; w <= length(TARGETSTRING); w++)
{
ARRAY[w] = substr(TARGETSTRING, w, 1);
if (ARRAY[w] ~ "[-\@\#\>\<]" || ARRAY[w] ~ "[0-9]" ||
length(TARGETSTRING) == w)
{
if (length(TARGETSTRING) == w)
{
if (ARRAY[w] !~ "[-\@\#\>\<]" && ARRAY[w] !~ "[0-9]")
{
TEMP_ENTRY = TEMP_ENTRY ARRAY[w];
}
if (FLAG_REVER == 0 && FLAG_ANVER == 0)
{
TERMX = TEMP_ENTRY;
TERMY = TEMPY;
Imprime(TempTipo, TERMX, TERMY)
TEMP_ENTRY = "";
TERMX = "";
}
else
{
if (FLAG_REVER == 1)
{
FLAG_REVER = 0;
TERMY = OLD_TEMP_ENTRY;
TERMX = TEMP_ENTRY;
Subtip = "r";
TempTipo = CambiaTipo(TempTipo, Subtip);
Imprime(TempTipo, TERMX, TERMY)
}
else
{
if (FLAG_ANVER == 1)
{
FLAG_ANVER = 0;
TERMY = TEMP_ENTRY;
TERMX = OLD_TEMP_ENTRY;
#test printf "y = %s\n", TERMY > "4";
#test printf "x = %s\n", TERMX > "4";
Subtip = "a";
TempTipo = CambiaTipo(TempTipo, Subtip);
Imprime(TempTipo, TERMX, TERMY)
}
}
}
}
if (FLAG_REVER == 1 && ARRAY[w] ~ "[\@\<\>]")
{
if (ARRAY[w] ~ "[\<]")
{
FLAG_REVER = 1;
FLAG_ANVER = 0;
TERMY = OLD_TEMP_ENTRY;
TERMX = TEMP_ENTRY;
OLD_TEMP_ENTRY = TEMP_ENTRY;
#TEMP_ENTRY = "";
Subtip = "r";
TempTipo = CambiaTipo(TempTipo, Subtip);
Imprime(TempTipo, TERMX, TERMY)
}
else
{
if (ARRAY[w] ~ "[\>]")
{
FLAG_REVER = 0;
FLAG_ANVER = 1;
TERMY = OLD_TEMP_ENTRY;
TERMX = TEMP_ENTRY;
OLD_TEMP_ENTRY = TEMP_ENTRY;
Subtip = "a";
TempTipo = CambiaTipo(TempTipo, Subtip);
Imprime(TempTipo, TERMX, TERMY)
}
else
{
if (ARRAY[w] ~ "[\@]")
{
FLAG_REVER = 0;
TERMY = OLD_TEMP_ENTRY;
TERMX = TEMP_ENTRY;
Imprime(TempTipo, TERMX, TERMY)
}
}
}
}
if (FLAG_ANVER == 1 && ARRAY[w] ~ "[\@\<\>]")
{
if (ARRAY[w] ~ "[\<]")
{
FLAG_REVER = 1;
FLAG_ANVER = 0;
TERMX = OLD_TEMP_ENTRY;
TERMY = TEMP_ENTRY;
OLD_TEMP_ENTRY = TEMP_ENTRY;
Subtip = "r";
TempTipo = CambiaTipo(TempTipo, Subtip);
Imprime(TempTipo, TERMX, TERMY);
}
else
{
if (ARRAY[w] ~ "[\>]")
{
FLAG_REVER = 0;
FLAG_ANVER = 1;
TERMX = OLD_TEMP_ENTRY;
TERMY = TEMP_ENTRY;
OLD_TEMP_ENTRY = TEMP_ENTRY;
Subtip = "a";
TempTipo = CambiaTipo(TempTipo, Subtip);
Imprime(TempTipo, TERMX, TERMY);
}
else
{
if (ARRAY[w] ~ "[\@]")
{
FLAG_REVER = 0;
TERMX = OLD_TEMP_ENTRY;
TERMY = TEMP_ENTRY;
TEMP_ENTRY = "";
Imprime(TempTipo, TERMX, TERMY)
}
}
}
}
if (ARRAY[w] ~ "\@")
{
TERMX = TEMP_ENTRY;
TERMY = TEMPY;
Imprime(TempTipo, TERMX, TERMY)
TEMP_ENTRY = "";
}
if (ARRAY[w] ~ "\<")
{
if (PRIMERO == 1)
{
TERMX = TEMP_ENTRY;
TERMY = TEMPY;
Imprime(TempTipo, TERMX, TERMY)
PRIMERO = 0;
}
OLD_TEMP_ENTRY = TEMP_ENTRY;
FLAG_REVER = 1;
TEMP_ENTRY = "";
}
if (ARRAY[w] ~ "\>")
{
if (PRIMERO == 1)
{
TERMX = TEMP_ENTRY;
TERMY = TEMPY;
Imprime(TempTipo, TERMX, TERMY)
PRIMERO = 0;
}
OLD_TEMP_ENTRY = TEMP_ENTRY;
FLAG_ANVER = 1;
TEMP_ENTRY = "";
}
}
else
{
TEMP_ENTRY = TEMP_ENTRY ARRAY[w];
}
ARRAY[w] = "";
}
}
}
TEMP_ENTRY = "";
OLD_TEMP_ENTRY = "";
} # Final de funcion
#Función de imprimir
function Imprime(FunTipo, X, Y)
{
# linea de prueba:
printf "%s, %s, %s\n",FunTipo, X, Y > "3";
FLAG_CAMBIO_DIREC = 0;
Dire = "";
for (k = 1; k <= 2; k++)
{
ARRAY[k] = substr(FunTipo, k, 1);
if (k == 1)
{
Dire = ARRAY[k];
}
else
{
if (k == 2)
{
Tipo = ARRAY[k];
}
}
ARRAY[k] = "";
}
if (Dire ~ "h")
{
FLAG_CAMBIO_DIREC = 1;
EFIMY = Y;
EFIMX = X;
Y = EFIMX;
X = EFIMY;
EFIMY = "";
EFIMX = "";
}
if (Tipo ~ "0")
{
printf "%s, %s, %s: ",FunTipo, X, Y;
printf "un/el [%s] es parte de un/el [%s]\n", X, Y;
printf "%s, %s, %s: ",FunTipo, X, Y;
printf "un/el [%s] tiene (un/el) [%s]\n", Y, X;
}
if (Tipo ~ "1")
{
printf "%s, %s, %s: ",FunTipo, X, Y;
printf "el/un [%s] es una parte/componente de
todo/sistema/complejo/red/agrupación/constructo [%s]\n", X, Y;
printf "%s, %s, %s: ",FunTipo, X, Y;
printf "el/un [%s] es un todo/sistema/complejo/red/agrupación/constructo de
partes/componentes, entre las que existe el/un [%s]\n", Y, X;
}
if (Tipo ~ "2")
{
printf "%s, %s, %s: ",FunTipo, X, Y;
printf "(un) [%s] es (miembro/un) elemento de (un) [%s]\n", X, Y;
printf "%s, %s, %s: ",FunTipo, X, Y;
printf "(un) [%s] es un conjunto de [%s] (s)\n", Y, X;
}
if (Tipo ~ "3")
{
printf "%s, %s, %s: ",FunTipo, X, Y;
printf "un [%s] es un trozo de (un) [%s]\n", X, Y;
printf "%s, %s, %s: ",FunTipo, X, Y;
printf "[%s] puede dividirse en [%s] (s)\n", Y, X;
}
if (Tipo ~ "4")
{
printf "%s, %s, %s: ",FunTipo, X, Y;
printf "[%s] es un material/ingrediente de [%s]\n", X, Y;
printf "%s, %s, %s: ",FunTipo, X, Y;
printf "el/un [%s] está hecho de/con [%s]\n", Y, X;
}
if (Tipo ~ "5")
{
printf "%s, %s, %s: ",FunTipo, X, Y;
printf "un/el [%s] sucede/ocurre durante un/el [%s]\n", X, Y;
printf "%s, %s, %s: ",FunTipo, X, Y;
printf "un/el [%s] es una acción durante la que transcurre un/el [%s]\n", Y, X;
}
if (Tipo ~ "6")
{
printf "%s, %s, %s: ",FunTipo, X, Y;
printf "un/el [%s] es un/el lugar situado en un/el [%s]\n", X, Y;
printf "%s, %s, %s: ",FunTipo, X, Y;
printf "[%s] es un lugar/objeto en el que se sitúa un/el [%s]\n", Y, X;
}
if (Tipo ~ "[absenti]")
{
printf "%s, %s, %s: ",FunTipo, X, Y;
printf "un/el [%s] NO es una parte/miembro/trozo/está hecho de [%s]\n", X, Y;
printf "%s, %s, %s: ",FunTipo, X, Y;
printf "un/el [%s] NO tiene un/el [%s]\n", Y, X;
}
if (Tipo ~ "\?")
{
printf "%s, %s, %s: ",FunTipo, X, Y;
printf "un/el [%s] es un holónimo de tipo indeterminado de [%s]\n", X, Y;
printf "%s, %s, %s: ",FunTipo, X, Y;
printf "un/el [%s] es un merónimo de tipo indeterminado de un/el [%s]\n", Y, X;
}
}
#Función de obtener tipo
function GetTipo(TIPOSTRING)
{
if (TIPOSTRING ~ "holo")
{
for (w = 1; w <= length(TIPOSTRING); w++)
{
ARRAY[w] = substr(TIPOSTRING, w, 1);
if (length(TIPOSTRING) == w)
{
FuncionTipo = ARRAY[w];
FuncionTipo = "h" FuncionTipo;
}
ARRAY[w] = "";
}
}
else
{
if (TIPOSTRING ~ "mero")
{
for (w = 1; w <= length(TIPOSTRING); w++)
{
ARRAY[w] = substr(TIPOSTRING, w, 1);
if (length(TIPOSTRING) == w)
{
FuncionTipo = ARRAY[w];
FuncionTipo = "m" FuncionTipo;
}
ARRAY[w] = "";
}
}
else
{
FuncionTipo = "";
}
}
return(FuncionTipo)
} # Final de funcion
{
#Obtener entrada
TEMPY = "";
for (j = 1; j <= length($1); j++)
{
ARRAY[w] = substr($1, j, 1);
if (ARRAY[w] ~ "[-\@\#\§\ª]"
|| ARRAY[w] ~ "[0-9]")
{
}
else
{
TEMPY = TEMPY ARRAY[w];
}
ARRAY[w] = "";
}
#Obtener tipo
TempTipo = 0;
# 1
LeeCampos($7, $8);
LeeCampos($9, $10);
LeeCampos($11, $12);
}
ISSN: 1139-8736 Depósito Legal: B-25223-99 |