<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
    <meta charset="UTF-8">
    <title>GT.M</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="icon" type="image/png" href="./_res_/favicon.png">
    <link rel="canonical" href="https://de.wikipedia.org/wiki/GT.M"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
    <meta name="ResourceLoaderDynamicStyles" content="">
    <link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
    <link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
    <link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
    <link rel="stylesheet" type="text/css" href="./_res_/footer.css">
    <link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
  </head>
  <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-GT_M rootpage-GT_M skin-vector-2022 action-view">
    <div class="mw-page-container">
      <div class="mw-page-container-inner">
        <div class="mw-content-container">
          <main id="content" class="mw-body">
            <header class="mw-body-header vector-page-titlebar">
              <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">GT.M</span></h1>
            </header>
            <a id="top"></a>
            <div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
              <div id="contentSub">
                <div id="mw-content-subtitle"></div>
              </div>
              <div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><p><b>GT.M</b> besteht aus einer MUMPS-Datenbank die für die <a href="Transaktion_(Informatik)" title="Transaktion (Informatik)">Transaktions</a>-Verarbeitung optimiert ist und <a href="Compiler" title="Compiler">Compiler</a> für die <a href="ISO" class="mw-redirect" title="ISO">ISO</a>-Standard-<a href="MUMPS" title="MUMPS">M</a>-<a href="Programmiersprache" title="Programmiersprache">Programmiersprache</a>, auch bekannt als <a href="MUMPS" title="MUMPS">MUMPS</a> nach ISO/IEC 11756.
</p><p>GT.M, eine Abkürzung für <i>Greystone Technology Mumps</i> und wurde ab 1980 bei Greystone Technology Corp entwickelt. Es ist eine Implementierung des ANSI-Standard M für IBM AIX, HP-UX, OpenVMS, Linux und SUN Solaris. Zusätzlich zu den traditionellen, standardmäßigen M-Funktionalitäten, offeriert GT.M auch einen <a href="Compiler" title="Compiler">Compiler</a>, der direkt <a href="Maschinensprache" title="Maschinensprache">Maschinencode</a> erzeugt.
</p><p>1998 wurde GT.M von Sanchez Computer Associates aufgekauft, dieses Unternehmen wurde dann 2002 von <a href="Fidelity_National_Information_Services" title="Fidelity National Information Services">Fidelity Information Services</a> (FIS) – dem weltweit größten Finanzdienstleister – übernommen. Bereits davor wurde GT.M im Jahre 2000 als <a href="Open_Source" title="Open Source">Open Source</a> für Linux und OpenVMS veröffentlicht. Die kommerziellen Versionen für HP-UX und Solaris wurden 2015 von FIS als Produkte aufgelassen. 2017 wurde von einem GT.M Entwickler-Spinnoff die Datenbank YottaDB als Open-Source Produkt – mit Schwerpunkt auf Integration anderer Sprachen – für Linux veröffentlicht.
</p><p>GT.M wird bei  bei der Banken-Software <i>FIS-Profile</i> international genutzt. Ebenso ist GT.M als Backend von WorldVistA – einer weltweit verwendeten Open-Source-Krankenhaus-Anwendung – in Verwendung.
</p>

<div class="mw-heading mw-heading2"><h2 id="Technischer_Überblick"><span id="Technischer_.C3.9Cberblick"></span>Technischer Überblick</h2></div>
<p>GT.M besteht aus einer Programmiersprache, die über einen Compiler realisiert wurde. Die Sprache MUMPS – ab 1993 auch M genannt – besteht immer aus einer Datenbank und einer Programmiersprache.
</p>
<div class="mw-heading mw-heading3"><h3 id="Datenorganisation_und_Typisierung">Datenorganisation und Typisierung</h3></div>
<p>Mumps kennt den <a href="Datentyp" title="Datentyp">Datentyp</a> String. Ein String ist eine beliebige <a href="Zeichenkette" title="Zeichenkette">Zeichenkette</a>. In der Sprache selbst wird bei logischen und mathematischen Operationen der String zu einem Zahlenwert interpretiert, indem der String vom Anfang bis zum ersten nichtnumerischen Zeichen als Zahl gesehen wird. Zum Beispiel entspricht die Zeichenfolge „1234.12abcdege“ der Zahl 1234.12, wenn damit gerechnet wird oder logische Operationen ausgeführt werden.
</p>
<div class="mw-heading mw-heading3"><h3 id="Datenbank">Datenbank</h3></div>
<p>Informationstechnologisch ist M ein Datenspeicherungssystem basierend auf String-Adressierung und <a href="B*-Baum" title="B*-Baum">B*-Bäumen</a> (balanced trees) mit Schlüsselkomprimierung. Es werden nur belegte Knoten gespeichert („sparse arrays“). Eine M – Datenbank ist grundsätzlich selbstreorganisierend und reorganisationsfrei. B*-Bäume zeichnen sich durch extreme Effizienz und Geschwindigkeit im Datenzugriff aus. Sie sind gut geeignet für Applikationen mit online Transaktionsverarbeitung (OLTP). Sie sind auch geeignet jedes andere Datenbanksystem – auch relationale – zu modellieren.
</p><p>Werte der Datenbank und auch lokale Variablen können als String in Form eines multidimensionalen Arrays mit 32 Knoten gespeichert. Wobei die Indexwerte dieses Arrays Strings sein können. Die Daten sind ohne Typ, bzw. Strings.
</p><p>Zum Beispiel, wenn jemand die <a href="Liste_der_Hauptst%C3%A4dte_der_Vereinigten_Staaten" title="Liste der Hauptstädte der Vereinigten Staaten">Liste der Hauptstädte der Vereinigten Staaten</a> repräsentieren möchte:
</p>
<pre>Set Hauptstadt("USA")="Washington"
Set Hauptstadt("USA",1774,1776)="Philadelphia"
Set Hauptstadt("USA",1776,1777)="Baltimore"
</pre>
<p>Variablen werden bei der ersten Zuweisung bei Bedarf erzeugt. Der erste Set-Befehl oben erzeugt die Variable <code>Hauptstadt</code>. Variablen sind Bestandteil der Programmiersprache und sind sogenannte <i>lokale Variablen</i>. Ein Datenbankzugriff schaut wie ein Array-Zugriff aus, zum Beispiel:
</p>
<pre>Set ^Hauptstadt("USA")="Washington"
</pre>
<p>aber das Exponentialzeichen (^) bedeutet einen Datenbankzugriff. Variablen in der Datenbank haben einen globalen Bereich und sind natürlich <a href="Persistenz_(Informatik)" title="Persistenz (Informatik)">persistent</a> und werden von allen Prozessen gemeinsam benutzt. Es sind sogenannte <i>globale Variablen</i>. Die ersten 31 Zeichen eines Variable variable Namen sind signifikant.
</p><p>Der KILL Befehl wird benutzt, um Unterbäume der Variablen zu löschen.
</p><p>Zahlen in GT.M sind 18 Digits genau (vor oder nach dem Komma). Die wissenschaftliche Notation werden bei größeren Zahlen verwendet.
</p><p>GT.M benutzt den <a href="Unicode" title="Unicode">Unicode</a> (<a href="Universal_Coded_Character_Set" title="Universal Coded Character Set">ISO/IEC-10646</a>).
</p>
<div class="mw-heading mw-heading3"><h3 id="Integrierte_Datenbank">Integrierte Datenbank</h3></div>
<p>Die logische Datenbank eines GT.M-Prozesses enthält einen oder mehrere <i>Globale-Variablen-Namensbereiche</i>, jeder hat eine unbegrenzte Anzahl globaler Variablen.
Eine Datenbankdatei besteht bis zu 224M (276,168,704) Datenblöcken. Eine globale Variable kann bis zu 1,792&nbsp;GB groß werden.
</p><p>Die Datenbank unterstützt Transaktionen. Der folgende Code implementiert eine <a href="ACID" title="ACID">ACID</a>-Transaktion:
</p>
<pre>TStart ()
 Set ^Hauptstadt("Frankreich")="Paris"
 Set ^Land("Paris")="Frankreich"
TCommit
</pre>
<div class="mw-heading mw-heading3"><h3 id="Integrierte_Programmiersprache">Integrierte Programmiersprache</h3></div>
<p>GT.M beinhaltet die komplette Implementierung des ISO-Standard MUMPS mit wenigen proprietären Erweiterungen.
</p><p>Lokale Variablen können bis zu einem Megabyte groß werden. Die GT.M-Laufzeitumgebung benutzt dynamische Speicherzuteilung und <a href="Garbage_Collection" title="Garbage Collection">Garbage Collection</a>.
GT.M-Routinen werden vor der Ausführung dynamisch <a href="Compiler" title="Compiler">kompiliert</a> und <a href="Linker_(Computerprogramm)" title="Linker (Computerprogramm)">gelinkt</a>.
</p><p>Das M-Programm kann C-Code aufrufen und umgekehrt, das heißt, als Hauptprogramm kann ein normales C-Hauptprogramm (<code>main()</code>) genutzt werden.
</p>
<div class="mw-heading mw-heading2"><h2 id="Plattformen">Plattformen</h2></div>
<p>GT.M unterstützt die folgenden Plattformen:
</p>
<ul><li><a href="AIX" title="AIX">AIX</a> auf <a href="System_p" title="System p">IBM System p</a></li>
<li><a href="Linux" title="Linux">GNU/Linux</a> auf <a href="System_z" class="mw-redirect" title="System z">IBM System z</a>, <a href="Itanium" class="mw-redirect" title="Itanium">Itanium</a>-, <a href="X86-64" class="mw-redirect" title="X86-64">x86-64</a>- und <a href="IA-32" title="IA-32">IA-32</a>-Architekturen</li>
<li><a href="HP-UX" title="HP-UX">HP-UX</a> auf Itanium bis 2015</li>
<li><a href="Solaris_(Betriebssystem)" title="Solaris (Betriebssystem)">Solaris</a> auf <a href="SPARC-Architektur" title="SPARC-Architektur">SPARC</a> bis 2014</li>
<li><a href="Z/OS" title="Z/OS">z/OS</a> auf IBM System z</li></ul>
<p>GT.M ist auch für die folgenden Plattformen verfügbar:
</p>
<ul><li>HP-UX auf <a href="HP_9000" title="HP 9000">HP 9000</a> (<a href="PA-RISC" title="PA-RISC">PA-RISC</a>) bis 2015</li>
<li><a href="OpenVMS" title="OpenVMS">OpenVMS</a> auf <a href="DEC_Alpha" class="mw-redirect" title="DEC Alpha">Alpha/AXP</a> bis 2015</li>
<li><a href="Tru64_UNIX" title="Tru64 UNIX">Tru64 UNIX</a> auf Alpha/AXP</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Lizenzen">Lizenzen</h2></div>
<p>Für GNU/Linux und OpenVMS ist GT.M als <a href="Free_and_Open_Source_Software" class="mw-redirect" title="Free and Open Source Software">Free / Open Source Software (FOSS)</a> veröffentlicht. Lizenz: <a href="GNU_Affero_General_Public_License" title="GNU Affero General Public License">GNU Affero General Public License</a>, version 3<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>.
</p><p>Die anderen Plattformen sind <a href="Propriet%C3%A4r" title="Proprietär">proprietär</a>. Es gibt diverse kommerzielle Erweiterungen für spezielle <a href="SQL" title="SQL">SQL</a>-Overlays.
</p>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://www.fisglobal.com/products-technologyplatforms-gtm">FIS GT.M homepage</a></li>
<li><a rel="nofollow" class="external text" href="http://sourceforge.net/projects/fis-gtm">Open source GT.M bei Sourceforge</a></li>
<li><a href="MUMPS" title="MUMPS">MUMPS</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Einzelnachweise">Einzelnachweise</h2></div>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.gnu.org/licenses/agpl-3.0.txt">GNU Affero General Public License, version 3</a></span>
</li>
</ol></div><!--htdig_noindex--><div><div class="zim-footer">
    Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2025-10-26" href="https://de.wikipedia.org/wiki/?title=GT.M&amp;oldid=260938789">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
            </div>
          </main>
        </div>
      </div>
    </div>
     <script src="./_webp_/webpHandler.js"></script>
  

</body></html>