Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Beispiel

Das folgende C-Programm beinhaltet folgende Funktionen:

  1. Eröffnen eines Unterprogrammzugriffs (INIT)
  2. Aufnehmen einer Datei als Element (ADD)
  3. Suchen eines Elementes in einem Inhaltsverzeichnis (TOCPRIM)
  4. Eröffnen eines Elementes (OPENGET)
  5. Satzweise Lesen eines Elementes (GET)
  6. Schließen des Elementes (CLOSE)
  7. Beenden des Unterprogrammzugriffs (END)

Zum besseren Verständnis wurden Kommentare in das Beispiel aufgenommen.

/* ********************************************************************* */
/*                                                                       */
/*                    BEISPIEL FUER LMS ALS UNTERPROGRAMM                */
/*                                                                       */
/* ********************************************************************* */
#include <stdlib.h>
#include <stdio.h> 
#include <string.h>    /* include-Element für Kopierfunktionen u.a */
#include <lms.h>       /* include-Element für die LMS-Strukturen */
main()
{
  /* Bereitstellen und Initialisieren der Parameterstrukturen */
   struct lmsc_cb cb;  /* Bereitstellen der Parameterstrukturen für cb */
   struct lmsc_ed ed;  /* Bereitstellen der Parameterstrukturen für ed */
   struct lmsc_em em;  /* Bereitstellen der Parameterstrukturen für em */
   struct lmsc_ei ei;  /* Bereitstellen der Parameterstrukturen für ei */
   struct lmsc_fd fd;  /* Bereitstellen der Parameterstrukturen für fd */
   struct lmsc_ld ld;  /* Bereitstellen der Parameterstrukturen für ld */
   struct lmsc_rd rd;  /* Bereitstellen der Parameterstrukturen für rd */
   int tid=1;           /* Initialisieren der TOC-Identifikation */
   char buffer[200];    /* Pufferlänge von ER; wird bei GET benötigt */
   char temp[100];      /* Puffer zum Umkopieren fuer Ausgabe */
   char * ptemp;        /* Zeiger in diesen Puffer */
   cb = lmsc_cb_proto;   /* Kontrollblock CB initialisieren */
   ed = lmsc_ed_proto;   /* Elementbeschreibung initialisieren */
   em = lmsc_em_proto;   /* Elementmaske initialisieren */
   ei = lmsc_ei_proto;   /* Elementinformation initialisieren */
   fd = lmsc_fd_proto;   /* Dateiinformation initialisieren */
   ld = lmsc_ld_proto;   /* Bibliotheksbeschreibung initialisieren */
   rd = lmsc_rd_proto;   /* Satzbeschreibung initialisieren */
/* ******************************************************************** */
/*                                                                      */
/*  1. Eröffnen des Unterprogrammzugriffs mit INIT                      */
/*                                                                      */
/* ******************************************************************** */
   cb.function = LMSUP_INIT ;
   cb.subcode  = LMSUP_UNUSED ;
   lmsup1(&cb);
    /* Abfrage des Returncodes */
    if (cb.retcode != LMSUP_OK)
      {
         printf("Fehler beim Initialisieren\n");
         exit(1);
      }
    else
         printf("Initialisieren erfolgreich beendet \n");
/* ******************************************************************** */
/*                                                                      */
/*  2. Aufnehmen eines Elementes mit ADD                                */
/*                                                                      */
/* ******************************************************************** */
   cb.function=LMSUP_ADD;
   cb.subcode =LMSUP_UNUSED;
   cb.overwrite =LMSUP_YES;
   /*     Bereitstellen der benötigten Werte für ADD                 */
   /*                                                                */
   /* Es ist zu beachten, dass die zu kopierenden Argumente mit einem */
   /* Blank enden müssen, falls sie kürzer als das Zielfeld sind.    */
    strfill(ld.name,"#BSP.LIB.C",sizeof(ld.name));
                               /* Bibliotheksname bereitstellen  */
    strfill(fd.name,"#BSP.IN.INPUT",sizeof(fd.name));
                               /* Dateiname bereitstellen        */
    strfill(ed.name,"BSP.ELEMENT",sizeof(ed.name));
                               /* Elementname bereitstellen      */
    strfill(ed.version,"001",sizeof(ed.version));
                               /* Elementversion bereitstellen   */
    strfill(ed.typ,"S",sizeof(ed.typ));
                               /* Elementtyp bereitstellen       */
    /* Programmaufruf */
    lmsup1(&cb,&fd,&ld,&ed);
    /* Abfrage des Returncodes */
    if (cb.retcode != LMSUP_OK)
     {
       /* Es ist ein Fehler aufgetreten - Meldung und Programm beenden */
        printf("Fehler beim Element aufnehmen \n");
        exit(1);
     }
    else
         printf("Element aufgenommen \n");
/* ******************************************************************** */
/*                                                                      */
/*  3. Suchen eines Elementes im Inhaltsverzeichnis mit TOCPRIM         */
/*                                                                      */
/* ******************************************************************** */
    cb.function = LMSUP_TOCPRIM;
    cb.subcode = LMSUP_LONG;
    /*     Bereitstellen der benötigten Werte für TOCPRIM             */
    /*                                                                */
    /* Es ist zu beachten, dass die zu kopierenden Argumente mit einem */
    /* Blank enden müssen, falls sie kürzer als das Zielfeld sind.    */
     strfill(em.name,"BSP.ELEMENT",sizeof(em.name));
                                    /* Elementname bereitstellen      */
     strfill(em.version,"001",sizeof(em.version));
                                    /* Elementversion bereitstellen   */
     strfill(em.typ,"S",sizeof(em.typ));
                                    /* Elementtyp bereitstellen       */
     /* Programmaufruf */
     lmsup1(&cb,&tid,&ei,&ld,&em);
     /* Abfrage des Returncodes */
     if (cb.retcode != LMSUP_OK)
      {
        /* Es ist ein Fehler aufgetreten - Meldung und Programm beenden */
         printf("Fehler beim Element suchen \n");
         exit(1);
      }
     else
      {
          printf("Elementsuche erfolgreich:\n"); 
                                                   /* display Typ       */
          strncpy(temp,ei.typ,sizeof(ei.typ));
          ptemp = index(temp,' ');
          if (ptemp) *ptemp = '\0';
          printf("typ          %s\n",temp);
                                                   /* display Name      */
          strncpy(temp,ei.name,sizeof(ei.name));
          ptemp = index(temp,' ');
          if (ptemp) *ptemp = '\0';
          printf("name         %s\n",temp);
                                                   /* display Version   */
          strncpy(temp,ei.version,sizeof(ei.version));
          ptemp = index(temp,' ');
          if (ptemp) *ptemp = '\0';
          printf("version      %s\n",temp);
                                                   /* display Date      */
          strncpy(temp,ei.user_date,sizeof(ei.user_date));
          ptemp = index(temp,' ');
          if (ptemp) *ptemp = '\0';
          printf("user-date    %s\n\n",temp);
      } 
/* ******************************************************************** */
/*                                                                      */
/*  4. Eröffnen eines Elementes mit OPENGET                             */
/*                                                                      */
/* ******************************************************************** */
    cb.function = LMSUP_OPEN_GET;
    cb.subcode  = LMSUP_UNUSED ;
    /*     Bereitstellen der benötigten Werte für OPENGET             */
    /*                                                                */
    /* Es ist zu beachten, dass die zu kopierenden Argumente mit einem */
    /* Blank enden müssen, falls sie kürzer als das Zielfeld sind.    */
     strfill(ld.name,"#BSP.LIB.C",sizeof(ld.name));
                                    /* Bibliotheksname bereitstellen  */
     strfill(ed.name,"BSP.ELEMENT",sizeof(ed.name));
                                    /* Elementname bereitstellen      */
     strfill(ed.version,"001",sizeof(ed.version));
                                    /* Elementversion bereitstellen   */
     strfill(ed.typ,"S",sizeof(ed.typ));
                                    /* Elementtyp bereitstellen       */
     /* Programmaufruf */
     lmsup1(&cb,&rd,&ld,&ed);
     /* Abfrage des Returncodes */
     if (cb.retcode != LMSUP_OK)
      {
        /* Es ist ein Fehler aufgetreten - Meldung und Programm beenden */
         printf("Fehler beim Element oeffnen \n");
         exit(1);
      }
     else
          printf("Element eroeffnet \n");
/* ******************************************************************** */
/*                                                                      */
/*  5. Lesen eines Satzes mit GET in Schleife                           */
/*                                                                      */
/* ******************************************************************** */
     do
      {
       cb.function = LMSUP_GET;
       cb.subcode = LMSUP_SEQ;
       /* Bereitstellen der benoetigten Werte fuer GET  */
        rd.buffer_len = sizeof(buffer)-1;
        /* Programmaufruf */
        lmsup1(&cb,&rd,buffer);
        switch (cb.retcode)    /* Abfrage des Returncodes */
         {
          case LMSUP_OK:       /* Ausgeben des Satzes */
                         buffer[rd.record_len]='\0';
                         printf("%s\n",buffer+4);
                         break; 
          case LMSUP_TRUNC:    /* Satz abgeschnitten */
                         printf("Satzpuffer zu kurz\n");
                         break;
          case LMSUP_EOF:      /* Element Ende */
                         break;
          default:             /* Es ist ein Fehler aufgetreten - Meldung */
                         printf("Fehler beim Satz lesen \n");
                         break;
         }
      } 
     while (cb.retcode == LMSUP_OK);
/* ******************************************************************** */
/*                                                                      */
/*  6. Schließen eines Elementes mit CLOSE                              */
/*                                                                      */
/* ******************************************************************** */
    cb.function = LMSUP_CLOSE;
    cb.subcode = LMSUP_UNUSED;
     /* Programmaufruf */
     lmsup1(&cb,&rd);
     /* Abfrage des Returncodes */
     if (cb.retcode != LMSUP_OK)
      {
        /* Es ist ein Fehler aufgetreten - Meldung und Programm beenden */
         printf("Fehler beim Element schließen \n");
         exit(1);
      }
     else
          printf("Element wieder geschlossen \n");
/* ******************************************************************** */
/*                                                                      */
/*  7. Beenden des Unterprogrammzugriffs mit END                        */
/*                                                                      */
/* ******************************************************************** */
    cb.function = LMSUP_END;
    cb.subcode  = LMSUP_UNUSED ;
     /* Programmaufruf */
     lmsup1(&cb);
     /* Abfrage des Returncodes */
     if (cb.retcode != LMSUP_OK)
      {
        /* Es ist ein Fehler aufgetreten - Meldung und Programm beenden */
         printf("Fehler beim Beenden \n");
         exit(1);
      }
    else
         printf("Unterprogrammzugriff beendet \n");
}   /* Ende des Hauptprogramms */