b'\n_START_ARTICLE_\nIMS Information Management System\n_START_PARAGRAPH_\nIMS er en forkortelse for Information Management System og er en database (IMS/DB) og et teleprocessingsystem (IMS/DC) fra IBM. IMS er f\xc3\xb8rst og fremmest kendt for at v\xc3\xa6re en hierarkisk database. IMS er et af de \xc3\xa6ldste databasesystemer.\n_START_SECTION_\nHistorie\n_START_PARAGRAPH_\nIMS blev f\xc3\xb8rst markedsf\xc3\xb8rt i 1969. I f\xc3\xb8lge oplysninger p\xc3\xa5 et IBM-kursus, blev det oprindelig udviklet af IBM til at holde rede p\xc3\xa5 komponenterne til Apollo-programmet.\n_START_SECTION_\nKarakteristika\n_START_PARAGRAPH_\nIMS-programmer kan k\xc3\xb8res interaktivt med kommunikation til en terminal, konverserende batch (batch message program, BMP) eller i ren batch.\n_START_SECTION_\nStruktur\n_START_PARAGRAPH_\nEn IMS-database best\xc3\xa5r af et antal databaser, der hver is\xc3\xa6r repr\xc3\xa6senterer en tr\xc3\xa6-struktur. En database har en r\xc3\xa6kke rodsegmenter bundet sammen med pointerk\xc3\xa6der. Under hvert rodsegment kan anbringes et antal undersegmenter og under disse igen undersegmenter. Et segment svarer omtrent til en r\xc3\xa6kke i andre databaser. Opdelingen af segmentet i felter, administreres af applikationsprogrammerne, der typisk baserer en record-struktur oven p\xc3\xa5 segmentet. Enkelte felter kan danne basis for et indeks for denne segmenttype. N\xc3\xa5r man skal have fat i et bestemt segment, skal man angive n\xc3\xb8glen til rodsegmentet, alternativt positionere sig frem til dette ved et antal Get Next-oprationer, angive ruten ned gennem tr\xc3\xa6et som enten n\xc3\xb8gler til undersegmenter eller positionering relativt til allerede l\xc3\xa6ste segmenter (IMS husker positionen for de sidste l\xc3\xa6ste segmenter). Man kan l\xc3\xa6se fremad p\xc3\xa5 et niveau (forward pointer) og i nogle tilf\xc3\xa6lde bagud (hvis der er anvendt en backward pointer)._NEWLINE_Data til eller fra IMS anbringes i en buffer, segmenterne lige efter hinanden efter deres placering i hierarkiet._NEWLINE_Man kan begr\xc3\xa6nse en bestemt brugers adgang til kun at have adgang til udvalgte segmenter i en tr\xc3\xa6struktur. Adgangen til en database specificeres i en PSB, Program Specification Block.\n_START_SECTION_\nLogisk DB\n_START_PARAGRAPH_\nEn logisk database er en database, der i virkeligheden er et logisk syn p\xc3\xa5 segmenter i en anden database, med brug af andre indices og pointere. En logisk dtabase, der ikke er ligetil at opbygge, giver bedre muligheder for at tilg\xc3\xa5 data p\xc3\xa5 flere m\xc3\xa5der.\n_START_SECTION_\nFordele og ulemper\n_START_PARAGRAPH_\nEn IMS-database er meget hurtig at tilg\xc3\xa5. Den kan derfor fungere fint p\xc3\xa5 selv sm\xc3\xa5 mainframes._NEWLINE_Til geng\xc3\xa6ld stiller den store krav til programm\xc3\xb8rerne s\xc3\xa5vel som databaseadministratorerne. Databasen kan optimeres til en bestemt anvendelse, men den kan vise sig noget kompliceret at anvende p\xc3\xa5 en anden m\xc3\xa5de. \xc3\x86ndres kravene til databasen, kan det v\xc3\xa6re n\xc3\xb8dvendigt helt at omkonstruere den.\n_START_SECTION_\nDL/1\n_START_PARAGRAPH_\nN\xc3\xa5r man fra et program skal kommunikere med en IMS-database, bruger man et "sprog", der kaldes DL/1, Data Language 1. Kommunikationen afviger meget fra den, man kender fra relationelle databasers SQL-sprog, ogs\xc3\xa5 p\xc3\xa5 grund af databasens anderledes opbygning.\n_START_SECTION_\nSSA\n_START_PARAGRAPH_\nMan angiver hvilke segmenter, der skal tilg\xc3\xa5s (man kan godt l\xc3\xa6se et segment uden at f\xc3\xa5 det returneret, hvis man kun skal bruge det for at finde vej i databasen) ved at udfylde et Segment Search Argument eller SSA. SSA\'en indeholder segmentnavne, evt. n\xc3\xb8gler og relationelle operatorer. Desuden angives en function code for hvert segment, der angiver, hvordan der skal l\xc3\xa6ses, om der skal s\xc3\xa6ttes i hold, slettes eller opdateres. Command codes kan f.eks. angive, at et bestemt segment skal fastholdes som "parent" ved de f\xc3\xb8lgende operationer.\n_START_SECTION_\nStatus code\n_START_PARAGRAPH_\nIMS returnerer en statuskode, der angiver, hvordan databaseoperatioen lykkedes. Denne kode best\xc3\xa5r af to bogstaver. Statuskoden og supplerende oplysninger, som f.eks. hvor dybt ned i tr\xc3\xa6strukturen, der blev fundet data, angives i en PCB, Program Communication Block.'