<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.vmssoftware.com/index.php?action=history&amp;feed=atom&amp;title=Structure_Definition_Language</id>
	<title>Structure Definition Language - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.vmssoftware.com/index.php?action=history&amp;feed=atom&amp;title=Structure_Definition_Language"/>
	<link rel="alternate" type="text/html" href="https://wiki.vmssoftware.com/index.php?title=Structure_Definition_Language&amp;action=history"/>
	<updated>2026-05-01T05:26:46Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://wiki.vmssoftware.com/index.php?title=Structure_Definition_Language&amp;diff=2561&amp;oldid=prev</id>
		<title>Jane.doe: Created page with &quot;&#039;&#039;&#039;Structure Definition Language (SDL)&#039;&#039;&#039; is a language used to write source statements that describe data structures and that can be translated to source statements in other...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.vmssoftware.com/index.php?title=Structure_Definition_Language&amp;diff=2561&amp;oldid=prev"/>
		<updated>2022-12-21T15:57:07Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;Structure Definition Language (SDL)&amp;#039;&amp;#039;&amp;#039; is a language used to write source statements that describe data structures and that can be translated to source statements in other...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Structure Definition Language (SDL)&amp;#039;&amp;#039;&amp;#039; is a language used to write source statements that describe data structures and that can be translated to source statements in other languages. OpenVMS contains an [[SDL (command)|SDL translator program]].&lt;br /&gt;
&lt;br /&gt;
SDL declarations translate to the following types of data items:&lt;br /&gt;
* Scalar or dimensioned scalar data items (ITEM declarations)&lt;br /&gt;
* Nonscalar data items (AGGREGATE and subaggregate declarations)&lt;br /&gt;
* Named constants (CONSTANT declarations)&lt;br /&gt;
* External entries (ENTRY declarations)&lt;br /&gt;
&lt;br /&gt;
 {| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
 ! scope=&amp;#039;col&amp;#039;; | Language&lt;br /&gt;
 ! scope=&amp;#039;col&amp;#039;;| Option&lt;br /&gt;
 ! scope=&amp;#039;col&amp;#039;;| Target File Type&lt;br /&gt;
 |-&lt;br /&gt;
 | Ada&lt;br /&gt;
 | /LANGUAGES=ADA&lt;br /&gt;
 | .ADA&lt;br /&gt;
 |-&lt;br /&gt;
 | BASIC&lt;br /&gt;
 | /LANGUAGES=BASIC&lt;br /&gt;
 | .BAS&lt;br /&gt;
 |-&lt;br /&gt;
 | BLISS&lt;br /&gt;
 | /LANGUAGES=BLISS&lt;br /&gt;
 | .R32, .R64&lt;br /&gt;
 |-&lt;br /&gt;
 | BLISS&lt;br /&gt;
 | /LANGUAFGES=BLISSF&lt;br /&gt;
 | .R32, .R64&lt;br /&gt;
 |-&lt;br /&gt;
 | BLISS&lt;br /&gt;
 | /LANGUAFGES=BLISS64&lt;br /&gt;
 | .R64&lt;br /&gt;
 |-&lt;br /&gt;
 | C/C++&lt;br /&gt;
 | /LANGUAGES=CC&lt;br /&gt;
 | .H&lt;br /&gt;
 |-&lt;br /&gt;
 | [[DCL]]&lt;br /&gt;
 | /LANGUAGES=DCL&lt;br /&gt;
 | .COM&lt;br /&gt;
 |-&lt;br /&gt;
 | DATATRIEVE&lt;br /&gt;
 | /LANGUAGES=DTR&lt;br /&gt;
 | .DTR&lt;br /&gt;
 |-&lt;br /&gt;
 | FORTRAN&lt;br /&gt;
 | /LANGUAGES=FORTRAN&lt;br /&gt;
 | .FOR&lt;br /&gt;
 |-&lt;br /&gt;
 | MACRO&lt;br /&gt;
 | /LANGUAGES=MACRO&lt;br /&gt;
 | .MAR&lt;br /&gt;
 |-&lt;br /&gt;
 | Pascal&lt;br /&gt;
 | /LANGUAGES=PASCAL&lt;br /&gt;
 | .PAS&lt;br /&gt;
 |-&lt;br /&gt;
 | Kednos PL/I&lt;br /&gt;
 | /LANGUAGES=PLI&lt;br /&gt;
 | .PLI&lt;br /&gt;
 |-&lt;br /&gt;
 | SDML&lt;br /&gt;
 | /LANGUAGES=SDML&lt;br /&gt;
 | .SDML&lt;br /&gt;
 |-&lt;br /&gt;
 | DECTPU&lt;br /&gt;
 | /LANGUAGES=TPU&lt;br /&gt;
 | .TPU&lt;br /&gt;
 |-&lt;br /&gt;
 | UIL&lt;br /&gt;
 | /LANGUAGES=UIL&lt;br /&gt;
 | .UIL&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Example .SDL file:&lt;br /&gt;
&lt;br /&gt;
 MODULE opr_descriptor IDENT &amp;quot;Version 2.0&amp;quot;;&lt;br /&gt;
 /* define constants and node structure for operators;&amp;quot;&lt;br /&gt;
 #max_args = 10;&lt;br /&gt;
 CONSTANT (fixed_binary,floating,char,untyped) EQUALS 1 INCREMENT 1;&lt;br /&gt;
 AGGREGATE operator STRUCTURE&lt;br /&gt;
     PREFIX &amp;quot;opr_&amp;quot;;&lt;br /&gt;
     flink ADDRESS;&lt;br /&gt;
     blink ADDRESS;&lt;br /&gt;
     opcount WORD;&lt;br /&gt;
     optype CHARACTER LENGTH 1;&lt;br /&gt;
     id WORD;&lt;br /&gt;
     operands LONGWORD DIMENSION 0:#max_args-1;&lt;br /&gt;
 END operator;&lt;br /&gt;
 #opsize = .;&lt;br /&gt;
 CONSTANT opr_node_size EQUALS #opsize / 2;&lt;br /&gt;
 ITEM current_node_ptr ADDRESS GLOBAL;&lt;br /&gt;
 END_MODULE opr_descriptor;&lt;br /&gt;
&lt;br /&gt;
Example of how the file above is translated into BLISS definitions:&lt;br /&gt;
&lt;br /&gt;
 $ sdl/language=bliss test&lt;br /&gt;
 $ type test.r32&lt;br /&gt;
 ! ********************************************************************************************************************************&lt;br /&gt;
 !  Created: 21-Dec-2022 10:51:34 by OpenVMS SDL EV3-3&lt;br /&gt;
 !  Source:  21-DEC-2022 10:51:14 MYDISK:[JDOE]TEST.SDL;1&lt;br /&gt;
 ! ********************************************************************************************************************************&lt;br /&gt;
 &lt;br /&gt;
 !*** MODULE opr_descriptor IDENT Version 2.0 ***&lt;br /&gt;
 !  define constants and node structure for operators;&amp;quot;&lt;br /&gt;
 literal fixed_binary = 1;&lt;br /&gt;
 literal floating = 2;&lt;br /&gt;
 literal char = 3;&lt;br /&gt;
 literal untyped = 4;&lt;br /&gt;
 macro operator = 0,0,0,0 %;&lt;br /&gt;
 literal opr_s_operator = 53;&lt;br /&gt;
 macro opr_a_flink = 0,0,32,0 %;&lt;br /&gt;
 macro opr_a_blink = 4,0,32,0 %;&lt;br /&gt;
 macro opr_w_opcount = 8,0,16,1 %;&lt;br /&gt;
 macro opr_t_optype = 10,0,8,0 %;&lt;br /&gt;
 macro opr_w_id = 11,0,16,1 %;&lt;br /&gt;
 macro opr_l_operands = 13,0,0,1 %;&lt;br /&gt;
 literal opr_s_operands = 40;&lt;br /&gt;
 literal opr_node_size = 26;&lt;br /&gt;
 external current_node_ptr; &lt;br /&gt;
&lt;br /&gt;
Example of how the file above is translated into C definitions:&lt;br /&gt;
&lt;br /&gt;
 $ sdl/language=c test&lt;br /&gt;
 $ type test.h&lt;br /&gt;
 /********************************************************************************************************************************/&lt;br /&gt;
 /* Created: 21-Dec-2022 10:53:23 by OpenVMS SDL EV3-3      */&lt;br /&gt;
 /* Source:  21-DEC-2022 10:51:14 MYDISK:[JDOE]TEST.SDL;1 */&lt;br /&gt;
 /********************************************************************************************************************************/&lt;br /&gt;
 /*** MODULE opr_descriptor IDENT Version 2.0 ***/&lt;br /&gt;
 #pragma __member_alignment __save&lt;br /&gt;
 #pragma __nomember_alignment&lt;br /&gt;
 /* define constants and node structure for operators;&amp;quot;                      */&lt;br /&gt;
 #define fixed_binary 1&lt;br /&gt;
 #define floating 2&lt;br /&gt;
 #define char 3&lt;br /&gt;
 #define untyped 4&lt;br /&gt;
 struct operator {&lt;br /&gt;
     int *opr_a_flink;&lt;br /&gt;
     int *opr_a_blink;&lt;br /&gt;
     short int opr_w_opcount;&lt;br /&gt;
     char opr_t_optype;&lt;br /&gt;
     short int opr_w_id;&lt;br /&gt;
     int opr_l_operands [10];&lt;br /&gt;
     } ;&lt;br /&gt;
 #define opr_node_size 26  &lt;br /&gt;
 &lt;br /&gt;
 #pragma __extern_model __save&lt;br /&gt;
 #pragma __extern_model __strict_refdef&lt;br /&gt;
 extern int *current_node_ptr;&lt;br /&gt;
 #pragma __extern_model __restore  &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 #pragma __member_alignment __restore&lt;/div&gt;</summary>
		<author><name>Jane.doe</name></author>
	</entry>
</feed>