Herramientas de usuario

Herramientas del sitio


mxf0.pft

mxf0.pft

Formato para visualizar en HTML el resultado del comando mxf0 para el análisis de una base de datos CDS/ISIS.

Ejemplo de uso

mxf0 mibase create=mibase_mxf0
mx mibase_mxf0 "pft=@mxf0.pft" now > mibase_mxf0.html

Ejemplo de salida

Código

lw(1000)

'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd">'/
'<html>
<head>
<title>MXF0 - Análisis de la base</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">'/

'<style type="text/css">
	table {
		border-bottom: 1px solid #999;
		border-right: 1px solid #999;
		margin-bottom: 1em;
	}
	td,th {
		border-left: 1px solid #999;
		border-top: 1px solid #999;
		padding: 0.2em 0.4em;
	}
	td {
		background: #f0f0f0;
		text-align: right;
	}
	th {
		background: #666;
		color: #eee;
	}
	td.tag {
		background: #999;
		border-top: 1px solid #666;
		color: #eee;
		font-weight: bold;
	}
	#tabla1 th {
		text-align: right;
	}
	#tabla1 td {
		text-align: left;
	}
	tr.control td {
		background: #FFC;
	}
	td.char {
		font-weight: bold;
	}
</style>'/
'</head>

<body>'/

'<h1>Análisis de la base de datos</h1>'/

/* ------------------------ ESTADO DE LA BASE ------------------------ */
'<table id="tabla1" cellspacing="0">
	<tr>
		<th>base</th> <td>',v1001,'</td>
	</tr>
	<tr>
		<th>fecha y hora</th> <td>',v1003,'</td>
	</tr>
	<tr>
		<th>registros procesados</th> <td>',v1009,'</td>
	</tr>
	<tr>
		<th>registros activos</th> <td>',v1010,'</td>
	</tr>
	<tr>
		<th>registros borrados lógicamente</th> <td>',v1011,'</td>
	</tr>
	<tr>
		<th>registros borrados físicamente</th> <td>',v1012,'</td>
	</tr>
	<tr>
		<th>siguiente MFN</th> <td>',v1013,'</td>
	</tr>
</table>'/


/* ------------------------ CAMPOS PRESENTES ------------------------ */
'<table cellspacing="0">
	<tr>
	<th>tag</th>
	<th>registros</th>
	<th>occ</th>
	<th>mín</th>
	<th>máx</th>
	<th>bytes</th>
	<!-- Para bases en MARC, podemos agregar una columna con el nombre del campo -->
	</tr>'/

proc('d3a3|',f(nocc(v1020),1,0),'|'),
	
/* loop sobre v1020 */
(
	'<tr>'
	'<td class="tag">',v1020^t,'</td>',
	'<td>',v1020^d,'</td>',
	'<td>',v1020^o,'</td>',
	'<td>',v1020^l,'</td>',
	'<td>',v1020^u,'</td>',
	'<td>',v1020^n,'</td>',
	'</tr>'/
)
'</table>'/


/* ------------------------ CARACTERES PRESENTES ------------------------ */
'<table cellspacing="0" style="float: left;">
	<tr>
	<th>hex</th>
	<th>dec</th>
	<th>char</th>
	<th>descripción</th>
	<th>#</th>
	</tr>'/

/* loop sobre v1030 */
(
	/* 1,2,3: campos auxiliares para obtener el código en decimal */
	proc('d1a1|',
		select v1030^x.1
			case 'a' : '10',
			case 'b' : '11',
			case 'c' : '12',
			case 'd' : '13',
			case 'e' : '14',
			case 'f' : '15',
			elsecase v1030^x.1,
		endsel
	'|')
	proc('d2a2|',
		select v1030^x*1.1
			case 'a' : '10',
			case 'b' : '11',
			case 'c' : '12',
			case 'd' : '13',
			case 'e' : '14',
			case 'f' : '15',
			elsecase v1030^x*1.1,
		endsel
	'|')
	proc('d3a3|',f(16*val(v1[1]) + val(v2[1]),1,0),'|'),
	
	/* a partir del código 128 usamos una nueva tabla */
	if val(v3[1]) > 127 and v11[1] = '' then
		proc('d11a11|*|'),
		'</table>'/
		'<table cellspacing="0" style="float: left; margin-left: 1em;">
			<tr>
			<th>hex</th>
			<th>dec</th>
			<th>char</th>
			<th>descripción</th>
			<th>#</th>
			</tr>'/
	fi,
	
	'<tr class="',if v11[1] = '' then 'ascii' fi, if val(v3[1]) < 32 or val(v3[1])=127 then ' control' fi,'">'
	'<td>',mpu,v1030^x,mpl'</td>',
	'<td>',v3[1]'</td>',
	'<td class="char">&#',v3[1],';</td>',  /* sólo sirve para ISO-8859-1 */
	'<td>',
		select v1030^x
			case '08' : 'BACKSPACE',
			case '20' : 'espacio',
			case '27' : 'apóstrofe', /* comilla simple */
			case '5f' : 'guión bajo',
			case '60' : 'acento grave',
			case '7e' : 'tilde',
			case '7f' : 'DELETE',
			/* =========================================== */
			case '80' : 'euro',
			case '85' : 'elipsis',
			case '88' : 'circunflejo',
			/* ------------------------- */
			case '99' : 'trademark',
			/* ------------------------- */
			case 'a0' : 'espacio de "no ruptura"',
			case 'a1' : 'signo de exclamación abierta',
			case 'a2' : 'centavo',
			case 'a3' : 'libra esterlina',
			case 'a4' : 'signo monetario',
			case 'a6' : 'barra vertical partida',
			case 'a7' : 'signo de sección',
			case 'a8' : 'diéresis',
			case 'a9' : 'copyright'
			case 'aa' : 'ordinal femenino',
			case 'ab' : 'comillas francesas de apertura',
			case 'ac' : 'signo de negación',
			case 'ad' : 'guión separador de sílabas',
			case 'af' : 'macrón',
			/* ------------------------- */
			case 'b0' : 'grado',
			case 'b1' : 'más-menos',
			case 'b2' : 'superíndice 2',
			case 'b3' : 'superíndice 3',
			case 'b4' : 'acento agudo',
			case 'b5' : 'micro',
			case 'b7' : 'punto centrado',
			case 'b8' : 'cedilla',
			case 'b9' : 'superíndice 1',
			case 'ba' : 'ordinal masculino',
			case 'bb' : 'comillas francesas de cierre',
			case 'bc' : 'fracción un cuarto'
			case 'bf' : 'signo de interrogación abierta',
			/* ------------------------- */
			case 'd0' : 'eth mayúscula',
			case 'd7' : 'signo de multiplicación',
			case 'de' : 'thorn mayúscula',
			case 'df' : 's aguda alemana',
			/* ------------------------- */
			case 'f0' : 'eth minúscula',
			case 'f7' : 'signo de división',
			case 'fe' : 'thorn minúscula',
			elsecase '&#160;',  /* default: espacio */
		endsel,
	'</td>',
	'<td>',v1030^n,'</td>',
	'</tr>'/
)
'</table>

</body>
</html>',
mxf0.pft.txt · Última modificación: 2009/05/17 00:00 (editor externo)