Dataskrivare - Data descriptor

Vid databehandling är en dataskrivare en struktur som innehåller information som beskriver data.

Databeskrivare kan användas i kompilatorer , som en programvarustruktur vid körning på språk som Ada eller PL / I , eller som en hårdvaruskonstruktion i vissa datorer, till exempel Burroughs stora system .

Databeskrivare används vanligtvis vid körning för att skicka argumentinformation till kallade subroutiner . HP OpenVMS och Multics har systemomfattande språkoberoende standarder för argumentbeskrivningar. Beskrivare används också för att hålla information om data som endast är helt kända vid körning, till exempel en dynamiskt tilldelad matris .

Till skillnad från en dopevektor innehåller en databeskrivare inte adressinformation.

exempel

Följande deskriptor används av IBM Enterprise PL / I för att beskriva en teckensträng :

      +--------+--------+--------+--------+
      |  desc  | string |        | flags  |
      |  type  |  type  | (res)  |        |
      +--------+--------+--------+--------+
      |       maximum string length       |
      |                                   |
      +--------+--------+--------+--------+
 byte         0        1        2        3
  • 'desc type' är 2 för att indikera att detta är en elementbeskrivning snarare än en matris eller strukturdeskriptor.
  • 'strängtyp' indikerar att det här är ett tecken eller en bitsträng, med varierande eller icke varierande längd. 2 indikerar en icke varierande (fast längd) teckensträng.
  • '(res)' är en reserverad byte som inte används för teckensträngar.
  • "flaggor" indikerar kodningen för strängen, EBCDIC eller ASCII och kodningen för längden på olika strängar.
  • "maximal stränglängd" är den verkliga längden på strängen för icke varierande strängar, eller den maximala längden för varierande strängar.

Här är källan till en matrisbeskrivare från Multics. Definitionerna inkluderar en struktur för basmatrisinformation och en struktur för varje dimension. (Multics körde på system med 36-bitars ord).

dcl	1 array			        based    aligned,
	2 node_type		        bit(9)   unaligned,
	2 reserved		        bit(34)  unaligned,
	2 number_of_dimensions	        fixed(7) unaligned,
	2 own_number_of_dimensions	fixed(7) unaligned,
	2 element_boundary		fixed(3) unaligned,
	2 size_units		        fixed(3) unaligned,
	2 offset_units		        fixed(3) unaligned,
	2 interleaved		        bit(1)   unaligned,
	2 c_element_size		fixed(24),
	2 c_element_size_bits	        fixed(24),
	2 c_virtual_origin		fixed(24),
	2 element_size		        ptr unaligned,
	2 element_size_bits		ptr unaligned,
	2 virtual_origin		ptr unaligned,
	2 symtab_virtual_origin	        ptr unaligned,
	2 symtab_element_size	        ptr unaligned,
	2 bounds			ptr unaligned,
	2 element_descriptor	        ptr unaligned;

dcl	1 bound			        based aligned,
	2 node_type		        bit(9),
	2 c_lower			fixed(24),
	2 c_upper			fixed(24),
	2 c_multiplier		        fixed(24),
	2 c_desc_multiplier		fixed(24),
	2 lower			        ptr unaligned,
	2 upper			        ptr unaligned,
	2 multiplier		        ptr unaligned,
	2 desc_multiplier		ptr unaligned,
	2 symtab_lower		        ptr unaligned,
	2 symtab_upper		        ptr unaligned,
	2 symtab_multiplier		ptr unaligned,
	2 next			        ptr unaligned;

Se även

referenser