WO1998058311A1 - Verfahren zum steuern einer datenverarbeitungsanlage - Google Patents

Verfahren zum steuern einer datenverarbeitungsanlage Download PDF

Info

Publication number
WO1998058311A1
WO1998058311A1 PCT/DE1998/001389 DE9801389W WO9858311A1 WO 1998058311 A1 WO1998058311 A1 WO 1998058311A1 DE 9801389 W DE9801389 W DE 9801389W WO 9858311 A1 WO9858311 A1 WO 9858311A1
Authority
WO
WIPO (PCT)
Prior art keywords
name
internal
program
module
agreement
Prior art date
Application number
PCT/DE1998/001389
Other languages
English (en)
French (fr)
Inventor
Christian Weber
Original Assignee
Siemens Nixdorf Informationssysteme Ag
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Siemens Nixdorf Informationssysteme Ag filed Critical Siemens Nixdorf Informationssysteme Ag
Priority to DE59801399T priority Critical patent/DE59801399D1/de
Priority to JP50353099A priority patent/JP2002508866A/ja
Priority to EP98934758A priority patent/EP0990203B1/de
Publication of WO1998058311A1 publication Critical patent/WO1998058311A1/de
Priority to US09/465,725 priority patent/US6189144B1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99948Application of database or data structure, e.g. distributed, multimedia, or image

Definitions

  • the invention relates to a method for controlling a data processing system for generating a target program by linking several program modules.
  • linkage agreements are, for example, conventions on register assignments, data formats, etc.
  • High-level language translators for higher programming languages automatically generate a uniform agreement set of linkage agreements during translation, which is valid for all program modules, so that the program developer does not have to worry about the linkage agreement.
  • the agreement record for module links which was generated by the specified high-level language translator for internal program modules at the time of the first creation of a target program, and which was correspondingly taken into account in third-party program modules, is referred to below as the initial agreement record.
  • the predefined high-level language translator could optimally adapt the generated internal program modules to the new hardware by re-translating all source text modules with an efficient set of agreements. It would then no longer be possible to link the internal with the external program modules, which are permanently linked to the output agreement block.
  • the invention solves this problem by the method with the features according to claim 1.
  • internal ones generated by a high-level language translator and subject to an efficient agreement set of linking agreements are used Provide program modules with names from an internal name class. Furthermore, foreign program modules subject to an initial agreement set of link agreements are provided with names from a foreign name class, the name classes assigned to the respective agreement sets being mutually exclusive. For the internal program modules, an adaptation route of the first type is generated, which is provided with a name from the foreign name class corresponding to the name of the associated internal program module and one before the associated internal program module is called Adaptation of the output agreement record of the calling third-party program module to the efficient agreement record of the internal program module to be called. Furthermore, program modules are called from the internal program modules with names from the internal name class.
  • an adaptation routine of the second type is generated in each case, which is provided with a name from the internal name class corresponding to the name of the associated program module and one before branching to the corresponding third-party program module Adaptation of the efficient agreement record to the initial agreement record of the external program module to be called up, the adaptation routine of the second type being provided with a binding attribute, so that it is only integrated into a target program if there is no internal program module of the same name next to it . Furthermore, the internal program modules, the third-party program modules and the required adaptation routines of the first and second types are linked to one another to form the target program.
  • the measure that the internal and the external program modules are provided with names from mutually exclusive name classes makes it clear to the binder which agreement clause the program module to be integrated in each case is to be assigned to, so that an inadvertent linking of the program Modules, the different linkage subject to agreements, can be safely prevented.
  • the high-level language translator can automatically generate an adaptation routine of the first type, since the high-level language translator provides the information essential for this purpose, namely the number and type of parameters used in the generated internal program module. are known.
  • the external program modules are called by the internal program modules via the adaptation routines of the second type, which are provided with names from the internal name class and branch to the associated external program module.
  • the adaptation routines of the second type necessary for adapting the different agreement rates for the external program modules called by the internal program modules are automatically integrated into the target program. Since the adaptation routines of the second type are provided with suitable binding attributes, they are only integrated and run through for calls for which an adaptation of the efficient agreement rate to the initial agreement rate is necessary.
  • the adaptation routines are automatically generated during translation by the high-level language translator, integrated into the target program by the binder, and called up when the target program is processed.
  • the program developer does not need to create the adaptation routines himself.
  • the invention allows the internal and third-party program modules to be correctly linked to one another via the exit agreement block if necessary.
  • the third-party program modules can be assembler modules or program modules generated by another high-level language translator, which are subject to the linkage agreements in the initial agreement set.
  • the internal program modules generated by the predefined high-level language translator can be linked to one another via the efficient agreement sentence, which increases the processing speed of the target program.
  • An advantageous development of the invention consists in that the names of the internal program modules are generated by adding a character string that is not permitted in the high-level language used as part of the name to the names of the source text modules on which the internal program modules are based.
  • the name classes of the internal and external program modules can be separated without any special adjustments to the binder.
  • the part of the name can contain a character that is not intended as part of the name in the higher programming language. The name classes are thus safely separated from one another without the names of the external program modules having to be changed.
  • the calling program module calls another program module not by its name but by its address, provided that the name of the called program module is assigned to the foreign name class.
  • indirect call it is advantageously assumed that the name of the called program module is contained in the foreign name class.
  • the adaptation routines of the first type of the called internal program modules determine which agreement record the respective calling program module is subject to, and the agreement records are only adapted if the agreement records of the calling and called program module differ from one another. This measure makes it possible, among other things, that the internal program modules generated by the high-level language translator can also be called by the address of the efficient standard agreement modules, for example library routines, by their address.
  • the adaptation routines of the first type are each provided with a Provide identification code by which this and the third-party program modules can be distinguished from one another.
  • the calling internal program module checks whether the identification code is stored under the address of the called program module and an adaptation of the mutually different agreement rates of the calling and called program module is carried out, if there is no identification code below this Address is stored.
  • This procedural step allows third-party program modules that do not have an adaptation routine of the second type to be called up via their addresses from the internal program modules generated by the high-level language translator.
  • a standard module available in machine language and subject to the efficient agreement sentence is advantageously supplemented by the identification code.
  • the standard module receives another name from the foreign name class.
  • the standard module can also be used indirectly, i.e. can be called via his address.
  • FIG. 1 shows a schematic representation of a known method for adapting the agreement rates
  • FIG. 2 shows a schematic illustration in which the separation of the name classes is explained
  • FIG. 3 shows a schematic illustration, in which the functioning of the adaptation routine of the first type is explained
  • FIG. 4 shows a schematic illustration in which the functioning of the adaptation routine of the second type is explained
  • FIG. 5 shows a schematic representation of the call relationships of the target program
  • FIG. 6 shows a schematic representation of the generated program modules and adaptation routines of the target program according to FIG. 5,
  • FIG. 7 shows a schematic representation of the executable target program according to FIG. 5 generated by the binder
  • FIG. 8 shows a flowchart of the modified adaptation routine of the first type in the case of an indirect module call
  • FIG. 9 shows a schematic representation of the adaptation of the agreement sentence of the calling program module in the indirect module call
  • FIG. 10 shows a schematic illustration to explain how a standard module for indirect module calls is to be modified
  • Figure 11 shows an overview of the adjustments in the indirect module call.
  • FIG. 1 explains the known method for adapting agreement sentences.
  • an external program module 10 with the name A which is subject to an initial declaration set of linkage agreements, is to be linked to an internal program module 12 with the name B, for which an efficient agreement set of linkage agreements is provided.
  • These two agreement sentences differ from one another if, for example, the internal program module 12 with the name B is generated by a high-level language translator and the foreign program module 10 with the name A is an assembler module or one with the specified one High-level translator incompatible high-level translator of another higher programming language has been generated.
  • High-level translators are translators who translate source code modules written in higher programming languages such as COBOL, C, C ++, Fortran etc. into a machine language and thus generate executable program modules.
  • an adaptation routine 20 In order to bridge the differing link agreements of the foreign program module 10 with the name A and the internal program module 12 with the name B in the known method, an adaptation routine 20 must be created by a program developer. When the two program modules 10, 12 are linked by a binder (not shown), the adaptation routine 20 is also integrated so that when the internal program module 12 with the name B is called by the foreign program module 10 with the name A Adjust the differing linkage agreements. In the known method, the program developer must create such an adaptation routine 20 for each module that is to be called by a program module with a different agreement sentence.
  • FIG. 2 shows how the different agreement rates differ from one another in the method according to the invention. which are assigned separate name classes.
  • Source text modules 18 with the names A and B written in the given high-level language are translated both by a high-level language translator 22 in accordance with the initial agreement sentence and by a high-level language translator 24 in accordance with the efficient agreement rate.
  • the names of the foreign program modules 10 generated by the high-level language translator 22 remain unchanged from the names of the underlying source text modules 18, namely A and B.
  • the names of those by the high-level language translator 24 generated internal program modules 12 the string "&.R" attached.
  • the letter "&.” in the string "&.R” is not permitted in any higher programming language as part of the name of a source text module, so that the names of the internal program modules 12 form a name class which certainly does not contain the names of the foreign program modules 10 .
  • the third-party program modules 10 and the internal program modules 12 are therefore assigned names from mutually exclusive classes of names which permit identification of the agreement sentence assigned to the respective program modules.
  • the foreign program modules 10 have been generated by the high-level language translator 22.
  • the third-party program modules 10 can also be assembler modules or program modules available in the machine language, which are subject to the linkage agreements in the output agreement block.
  • the high-level language translator 24 generates the internal program module 12 with the name A&R from the source text module 18 with the name A.
  • the internal program module 12 fulfills the linking agreements of the efficient agreement set.
  • the high-level language translator 24 generates an adaptation routine 14 of the first type, which is given the same name A as the source text module 18.
  • the name A of the adaptation routine 14 is that of the exit club name class, ie assigned to the foreign name class.
  • the adaptation routine 14 to be called A adapts the exit declaration set to the efficient declaration set and calls the internal program module 12 which is named A&R.
  • the adaptation routine 14 of the first type can be generated automatically by the high-level language translator 24, since the number and type of the parameters of the generated internal program module 12 are known to it.
  • FIG. 4 explains the functioning of an adaptation routine 16 of the second type.
  • a program command "call B" is provided in the source code module 18 with the name A, with which a further source code module with the name B is called.
  • the high-level language translator 24 generates from the source text module 18 with the name A the adaptation routine 14 of the first type explained in FIG. 3 also with the name A and the internal program module 12 with the name A&R. From the internal program module 12, each program module is now called up in principle in accordance with the efficient agreement sentence and with the name defined for the efficient agreement sentence.
  • the internal program module A&R calls the program module named B&R.
  • an adaptation routine 16 of the second type is generated, which is able to adapt the efficient agreement rate to the output agreement rate.
  • the adaptation routine 16 of the second type is given a name from the name class assigned to the efficient agreement sentence, ie the internal name class.
  • the high-level language translator 24 thus creates the adaptation routine 16 of the second type with the name B&R.
  • the adaptation routine 16 with the name B&R is also provided with a binding attribute, which causes the binder to only integrate the adaptation routine 16 when there is no internal program module with the name B&R. If the binder does not find such an internal program module, it binds the adaptation routine 16 a, which makes the necessary adjustment of the agreement sentences and then calls the foreign program module 10 with the name B.
  • FIG. 5 shows the program modules to be linked to a target program 26 and the call relationships between these program modules.
  • the target program 26 consists of assembler modules 28 with the names A and F, which are subject to the initial agreement sentence, the high-level source code modules 18 with the names B, D, E, which are subject to the efficient agreement sentence, and a standard module 30, which is likewise subject to the efficient agreement clause and is named G.
  • the target program 26 provides that the assembler module A calls the source text modules B, D, E.
  • the source text module D and the standard module G are in turn called by the source text module B.
  • the source code module D finally calls the source code module E, the assembler module F and the standard module G.
  • FIG. 6 shows the program modules generated by the high-level language translator 24 and the adaptation routines of the target program according to FIG. 5.
  • the source text modules 18 (see FIG. 5) with the names B, D, E are translated
  • the corresponding internal program modules 12 with the names B&R, D&R, E&R are generated.
  • the high-level language translator 24 creates the adaptation routines 14 of the first type with the names B, D, E.
  • the internal program modules 12 are used other program modules called with the names from the internal name class.
  • the internal program module B&R thus calls the standard module 30 with the name G&R and the internal program module D&R.
  • the internal program module 12 with the name D&R calls the standard module 30 with the name G&R, the assembler module 28 with the name F&R and the internal program module E&R. It should be pointed out that the standard module 30, which is subject to the efficient agreement set, must be given the name G&R if it does not already have this name. This can be easily achieved through an automatically realizable renaming.
  • the high-level language translator 24 finally generates the corresponding adaptation routines 16 of the second type, provided with the binding attribute, for the program modules that are called by the internal program modules 12.
  • these are the adaptation routines 16 with the names D&R and G&R.
  • the adaptation routines 16 with the names G&R, F&R and G&R are generated for the internal program module 12 with the name D&R.
  • the adaptation routines can be generated several times by different translation processes. For example, the adaptation routine 16 with the name G&R is created both when the source text module B is translated and when the source text module D is translated.
  • FIG. 7 shows the executable target program 26 generated by the binder, which was created by linking the individual program modules.
  • the internal program modules B&R, D&R, E&R are called by the assembler module 28 with the name A from the names B, D and E.
  • the assembler module 28 with the name F is called by the internal program module 12 with the name D&R via the adaptation routine with the name F&R.
  • the internal program module 12 with the name B&R calls the internal program module 12 with the name G&R without the intermediary of an adaptation routine on, since no adjustment of the agreement rates is necessary with this call.
  • FIG. 8 shows a flowchart of a modified adaptation routine of the first type in the case of an indirect module call.
  • Agreement rate is subject.
  • the indirect call thus takes place in FIG. 8 to the routine with the name A.
  • the adaptation routine of the first type is now modified in that it ascertains by means of a query which agreement sentence the calling program module is subject to.
  • a query is made as to whether the call was made in accordance with the exit agreement record. If this is not the case, ie if the indirect call was made in accordance with the efficient agreement record, the agreement records are not adjusted and the program module called A&R is called. If the modified adaptation routine of the first type determines that the calling program module is subject to the exit agreement record, then this agreement record is converted to the efficient agreement record before the program module A&R is called.
  • a criterion for entering the agreement rate, according to which the indirect call is made, depends on the specific linking agreements. For example, it is possible to specify a register that is not used in the exit declaration set, but is always occupied with a valid instruction address in the efficient declaration set, by defining a predetermined invalid instruction in routines with an exit declaration set Address is set.
  • the modification of the adaptation routine of the first kind explained in FIG. 8 allows the internal program modules generated by the high-level language translator to also be made from standard modules that are subject to the efficient agreement clause, e.g. Library routines to be called using function pointers.
  • the adaptation routines of the first type are preceded by an identification code which identifies the adaptation routine as such.
  • an identification code which identifies the adaptation routine as such.
  • a special empty command can be used as the identification code, which is otherwise not used when generating a machine code.
  • FIG. 10 shows how the standard module 30 is to be modified with an efficient agreement sentence in order to enable indirect module calls with function pointers.
  • the standard module 30 with the name A&R is provided with the identification code explained in FIG. 9 by means of an auxiliary program 40.
  • the standard module 30 is given the name A, which is assigned to the exit agreement record.
  • the identification code is now found under the target address, so that, as explained in FIG. 9, the standard module 30 can be called indirectly from the internal program module without any adaptation the agreement rates must be made.
  • Figure 11 gives an overview of the adjustments made to the agreement rates for indirect module calls.
  • the assembler module 28 is shown with the name A, the internal program module 12 with the name B&R generated by the high-level language translator 24 and the associated adaptation routine 14 of the first type with the name B, which is generated by the high-level language translator 24 generated internal program module 12 with the name C&R and the associated adaptation routine 14 of the first type with the name C and the standard module 30, which is available both with the name D and with the name D&R.
  • the adaptation sentences 14 are adapted by the adaptation routine 14 with the name B. No adaptation takes place in the calls 2, since the calling program modules 12 with the names B&R, C&R recognize the identification code of the adaptation routines 14 with the names B and C, and, as shown in FIG. 9, a branch is made.

Abstract

Bei einem Verfahren zum Steuern einer Datenverarbeitungsanlage zum Erzeugen eines Zielprogramms (26) durch Verknüpfen mehrerer Programm-Module werden interne Programm-Module (12), die durch einen Hochsprach-Übersetzer (24) erzeugt worden sind, und fremde Programm-Module (10) mit Namen aus einander ausschließenden Namensklassen versehen. Für die internen Programm-Module (12) wird jeweils eine Anpassungsroutine (14) erster Art, und für die von den internen Programm-Modulen (12) aufgerufenen Programm-Module (10) wird jeweils eine Anpassungsroutine (16) zweiter Art erzeugt. Die Anpassungsroutinen überbrücken unterschiedliche Verknüpfungsvereinbarungen.

Description

Verfahren zum Steuern einer Datenverarbeitungsanlage
Die Erfindung betrifft ein Verfahren zum Steuern einer Daten- Verarbeitungsanlage zum Erzeugen eines Zielprogramms durch Verknüpfen mehrerer Programm-Module .
Bei der Erstellung eines Zielprogramms, das in .einer höheren Programmiersprache, beispielsweise COBOL, C, C++, Fortran etc. formuliert ist, werden in der Regel zunächst einzelne Quelltext-Module, beispielsweise Prozeduren und Funktionen erstellt, die unabhängig voneinander durch einen Hochsprach- Ubersetzer, auch Compiler genannt, in die Maschinensprache, d.h. in für den Computer unmittelbar verständliche Befehle, übersetzt werden. Die auf diese Weise erzeugten Programm- Module werden dann durch einen Binder, auch Linker genannt, zu einem Zielprogramm verknüpf .
Bei einem Aufruf eines Programm-Moduls durch ein anderes muß sichergestellt sein, daß die beiden am Aufruf beteiligten Programm-Module einheitlichen Verknüpfungsvereinbarungen genügen, um einen fehlerfreien Parametertransfer zwischen dem aufrufenden und dem aufgerufenen Programm-Modul zu gewährleisten. Solche Verknüpfungsvereinbarungen sind beispielsweise Konventionen über Registerbelegungen, Datenformate etc.
Hochsprach-Ubersetzer für höhere Programmiersprachen erzeugen beim Übersetzen selbsttätig einen einheitlichen Vereinbarungssatz von Verknüpfungsvereinbarungen, der für alle Pro- gramm-Module gültig ist, so daß sich der Programmentwickler nicht um die Verknüpfungsvereinbarung zu kümmern braucht .
Der Programmentwickler hat diese Verknüpfungsvereinbarungen jedoch zu beachten, sobald er Programm-Module, die nicht durch den vorgegebenen Hochsprach-Ubersetzer erzeugt worden sind, in das Zielprogramm einbinden will, wie z.B. Programm- Module, die in einer Assembler-Sprache formuliert sind, im folgenden kurz Assembler-Module genannt. Bei der Assembler- Programmierung werden die Verknüpfungsvereinbarungen durch den Programmentwickler selbst programmiert, so daß die Verknüpfungsvereinbarungen untrennbar in dem Assembler-Modul enthalten sind. Derartige Programm-Module, die nicht durch den vorgegebenen Hochsprach-Ubersetzer erzeugt werden können und untrennbar an einen Vereinbarungssatz gekoppelt sind, werden im folgenden als fremde Programm-Module bezeichnet, während die durch den vorgegebenen Hochsprach-Ubersetzer er- zeugten Module interne Programm-Module genannt werden.
Der Vereinbarungssatz für Modul-Verknüpfungen, der zum Zeitpunkt der Ersterstellung eines Zielprogramms sowohl durch den vorgegebenen Hochsprach-Ubersetzer für interne Programm-Module erzeugt als auch in fremden Programm-Modulen entsprechend berücksichtigt worden ist, wird im folgenden als Ausgangs- Vereinbarungssatz bezeichnet .
Soll das Zielprogramm auf ein anderes Computersystem übertra- gen werden, so ist es in der Regel zweckmäßig, einen neuen, an die Hardware des neuen Computersystems besonders gut angepaßten Vereinbarungssatz für Modul-Verknüpfungen zu verwenden, um gravierende Einbußen bei der Verarbeitungsgeschwindigkeit auf dem neuen Computersystem zu vermeiden. Dieser neue Vereinbarungssatz wird im folgenden als effizienter Ver- einbarungssatz bezeichnet. Eine Verwendung dieses effizienten Vereinbarungssatzes ist dabei auch dann erforderlich, wenn kommerziell erhältliche Sammlungen von Programmroutinen des neuen Computersystems - im weiteren Standard-Module genannt - eingebunden werden sollen, die in der Regel nur für den besonders gut an die Hardware angepaßten effizienten Vereinba- rungssatz verfügbar sind. Aus diesen Gründen ist es wünschenswert, die Verknüpfungsvereinbarungen des Zielprogramms möglichst umfassend auf den effizienten Vereinbarungssatz um- zustellen. Der vorgegebene Hochsprach-Ubersetzer könnte durch Neu-Über- setzung aller Quelltext-Module mit effizientem Vereinbarungs- satz die erzeugten internen Programm-Module optimal an die neue Hardware anpassen. Die Verknüpfbarkeit der internen mit den fremden Programm-Modulen, die fest an den Ausgangs-Ver- einbarungssatz gekoppelt sind, wäre dann aber nicht mehr gewährleistet .
Zur Lösung dieses Problems ist ein Verfahren bekannt, bei dem Anpassungsroutinen verwendet werden, um von einander abweichende Verknüpfungsvereinbarungen von Programm-Modulen auszugleichen. Um die Vereinbarungssätze von aufrufendem und aufgerufenem Programm-Modul aneinander anzupassen, muß der Programmentwickler bei dem bekannten Verfahren für alle betrof- fenen Programm-Module eine solche Anpassungsroutine erstellen. Er muß dabei nicht nur die Unterschiede in den Verknüpfungsvereinbarungen, sondern auch die Anzahl und den Typ der bei dem Aufruf jeweils übergebenen Parameter kennen, da diese für jedes Programm-Modul individuell festgelegt sind. Das be- kannte Verfahren ist deshalb sehr aufwendig und erschwert die Übertragbarkeit des Zielprogramms auf ein neues Computersystem.
Es ist Aufgabe der Erfindung, ein Verfahren anzugeben, durch das ein Hochsprach-Ubersetzer in die Lage versetzt wird, die eben genannten Anpassungsroutinen selbsttätig beim Übersetzen der Programm-Module zu erzeugen, und durch das die Anpassungsroutinen beim Verknüpfen der einzelnen Programm-Module durch einen Binder automatisch in das Zielprogramm eingebun- den werden.
Die Erfindung löst diese Aufgabe durch das Verfahren mit den Merkmalen nach Anspruch 1.
Bei dem erfindungsgemäßen Verfahren werden durch einen Hochsprach-Ubersetzer erzeugte, einem effizienten Vereinbarungs- satz von Verknüpfungsvereinbarungen unterliegende interne Programm-Module mit Namen aus einer internen Namensklasse versehen. Ferner werden einem Ausgangs-Vereinbarungssatz von Verknüpfungsvereinbarungen unterliegende fremde Programm- Module mit Namen aus einer Fremd-Namensklasse versehen, wobei sich die den jeweiligen Vereinbarungssätzen zugeordneten Namensklassen gegenseitig ausschließen. Es werden für die internen Programm-Module jeweils eine Anpassungsrou ine erster Art erzeugt, die mit einem dem Namen des zugehörigen internen Programm-Moduls entsprechenden Namen aus der Fremd-Namens- klasse versehen wird und die vor einem Aufruf des zugehörigen internen Programm-Moduls eine Anpassung des Ausgangs-Vereinbarungssatzes des aufrufenden fremden Programm-Moduls an den effizienten Vereinbarungssatz des aufzurufenden internen Programm-Moduls vornimmt. Ferner werden Programm-Module von den internen Programm-Modulen aus mit Namen aus der internen Namensklasse aufgerufen. Für die von den internen Programm- Modulen aufzurufenden Programm-Module wird jeweils eine Anpassungsroutine zweiter Art erzeugt, die mit einem dem Namen des zugehörigen Programm-Moduls entsprechenden Namen aus der internen Namensklasse versehen wird und die vor einem Verzweigen zum entsprechenden fremden Programm-Modul eine Anpassung des effizienten Vereinbarungssatzes an den Ausgangs- Vereinbarungssatz des aufzurufenden fremden Programm-Moduls vornimmt, wobei die Anpassungsroutine zweiter Art mit einem Bindeattribut versehen ist, so daß sie nur dann in ein Zielprogramm eingebunden wird, wenn neben ihr kein gleichnamiges internes Programm-Modul vorhanden is . Weiterhin werden die internen Programm-Module, die fremden Programm-Module und die benötigten Anpassungsroutinen erster und zweiter Art mitein- ander zu dem Zielprogramm verknüpft.
Durch die Maßnahme, daß die internen und die fremden Programm-Module mit Namen aus einander ausschließenden Namens- klassen versehen werden, ist für den Binder erkennbar, wel- chem Vereinbarungssatz das jeweils einzubindende Programm- Modul zuzuordnen ist, so daß ein versehentliches Verknüpfen von Programm-Modulen, die unterschiedlichen Verknüpfungsver- einbarungen unterliegen, sicher verhindert werden kann. Bei der Übersetzung der internen Programm-Module kann der Hochsprach-Ubersetzer jeweils eine Anpassungsroutine erster Art automatisch erzeugen, da dem Hochsprach-Ubersetzer die für diesen Zweck wesentlichen Informationen, nämlich die Anzahl und der Typ der in dem erzeugten internen Programm-Modul verwendeten Parameter, bekannt sind. Die fremden Programm-Module werden von den internen Programm-Modulen über die Anpassungsroutinen zweiter Art aufgerufen, die mit Namen aus der inter- nen Namensklasse versehen sind und zu dem zugehörigen fremden Programm-Modul verzweigen. Auf diese Weise sind die für die Anpassung der unterschiedlichen Vereinbarungssätze notwendigen Anpassungsroutinen zweiter Art für die von den internen Programm-Modulen aufgerufenen fremden Programm-Module automa- tisch in das Zielprogramm eingebunden. Da die Anpassungsrou- tinen zweiter Art mit geeigneten Bindeattributen versehen sind, werden sie nur für solche Aufrufe eingebunden und durchlaufen, für die eine Anpassung des effizienten Vereinbarungssatzes an den Ausgangs-Vereinbarungssatz notwendig ist.
Bei dem vorgestellten Verfahren werden die Anpassungsroutinen beim Übersetzen durch den Hochsprach-Ubersetzer automatisch erzeugt, durch den Binder in das Zielprogramm eingebunden und beim Abarbeiten des Zielprogramms aufgerufen. Insbesondere entfällt für den Programmentwickler die Notwendigkeit, die Anpassungsroutinen selbst zu erstellen. Die Erfindung erlaubt es, daß die internen und fremden Programm-Module korrekt über den Ausgangs-Vereinbarungssatz miteinander verknüpft werden, falls dies nötig ist. Die fremden Programm-Module können Assembler-Module oder durch einen anderen Hochsprach-Ubersetzer erzeugte Programm-Module sein, die den Verknüpfungsvereinbarungen des Ausgangs-Vereinbarungssatzes unterliegen. Die durch den vorgegebenen Hochsprach-Ubersetzer erzeugten inter- nen Programm-Module können untereinander über den effizienten Vereinbarungssatz miteinander verknüpft werden, wodurch die Abarbeitungsgeschwindigkeit des Zielprogramms erhöht wird. Eine vorteilhafte Weiterbildung der Erfindung besteht darin, daß die Namen der internen Programm-Module durch Anfügen einer in der verwendeten Hochsprache als Namensbestandteil nicht zugelassenen Zeichenfolge an die Namen der den internen Programm-Modulen zugrundeliegenden Quelltext-Module erzeugt werden. Auf diese Weise lassen sich die Namensklassen der internen und der fremden Programm-Module ohne besondere Anpassungen des Binders trennen. So kann beispielsweise der Na- mensbestandteil ein Zeichen enthalten, der in der vorgegebenen höheren Programmiersprache als Namensbestandteil nicht vorgesehen ist. Die Namensklassen werden so sicher voneinander getrennt, ohne daß die Namen der fremden Programm-Module verändert werden müssen.
Vorteilhaft wird für den Fall, daß das aufrufende Programm- Modul ein anderes Programm-Modul nicht über dessen Namen, sondern über dessen Adresse aufruft, vorausgesetzt, daß der Name des aufgerufenen Programm-Moduls der Fremd-Namensklasse zugeordnet ist. Für einen Aufruf eines Programm-Moduls über seine Adresse, im folgenden indirekter Aufruf genannt, wird also vorteilhaft angenommen, daß der Name des aufgerufenen Programm-Moduls in der Fremd-Namensklasse enthalten ist. Ferner wird durch die Anpassungsroutinen erster Art der auf- gerufenen internen Programm-Module festgestellt, welchem Vereinbarungssatz das jeweilige aufrufende Programm-Modul unterliegt, und nur bei voneinander abweichenden Vereinbarungssätzen des aufrufenden und aufgerufenen Programm-Moduls die Anpassung der Vereinbarungssätze vorgenommen. Diese Maß- nähme ermöglicht es unter anderem, daß die durch den Hochsprach-Ubersetzer erzeugten internen Programm-Module auch von dem effizienten Vereinbarungssatz unterliegenden Standard- Modulen, beispielsweise von Bibliotheksroutinen über ihre Adresse aufgerufen werden können.
In einer weiteren vorteilhaften Weiterbildung der Erfindung werden die Anpassungsroutinen erster Art jeweils mit einem Kennzeichnungscode versehen, durch den diese und die fremden Programm-Module voneinander zu unterscheiden sind. Bei einem indirekten Aufruf wird von dem aufrufenden internen Programm- Modul geprüft, ob unter der Adresse des aufgerufenen Pro- gramm-Moduls der Kennzeichnungscode abgelegt ist und eine Anpassung der voneinander abweichenden Vereinbarungssätze von aufrufendem und aufgerufenem Programm-Modul vorgenommen, falls kein Kennzeichnungscode unter dieser Adresse abgelegt ist. Dieser Verfahrensschritt erlaubt es, fremde Programm- Module, die keine Anpassungsroutine zweiter Art besitzen, aus den durch den Hochsprach-Ubersetzer erzeugten internen Programm-Modulen heraus über ihre Adressen aufzurufen.
Vorteilhaft wird gemäß der Erfindung ein in Maschinensprache vorliegendes, dem effizienten Vereinbarungssatz unterliegendes Standard-Modul durch den Kennzeichnungscode ergänzt . Das Standard-Modul erhält neben dem ursprünglichen Namen aus der internen Namensklasse einen weiteren Namen aus der Fremd- Namensklasse. Auf diese Weise kann auch das Standard-Modul indirekt, d.h. über seine Adresse aufgerufen werden.
Durch die eben erläuterten Maßnahmen für indirekte Aufrufe werden die häufiger auftretenden direkten Aufrufe, d.h. die Aufrufe, welche die Namen der Programm-Module verwenden, kaum behindert.
Die Erfindung wird im folgenden an Hand der Figuren näher erläutert. Darin zeigen:
Figur 1 eine schematische Darstellung eines bekannten Verfahrens zum Anpassen der Vereinbarungssätze,
Figur 2 eine schematische Darstellung, in der das Trennen der Namensklassen erläutert ist, Figur 3 eine schematische Darstellung, in der die Funktionsweise der Anpassungsroutine erster Art erläutert ist,
Figur 4 eine schematische Darstellung, in der die Funktionsweise der Anpassungsroutine zweiter Art erläutert ist,
Figur 5 eine schematische Darstellung der Aufrufbeziehungen des Zielprogramms,
Figur 6 eine schematische Darstellung der erzeugten Programm-Module und Anpassungsroutinen des Zielprogramms nach Figur 5 ,
Figur 7 eine schematische Darstellung des von dem Binder erzeugten, lauffähigen Zielprogramms nach Figur 5,
Figur 8 ein Flußdiagramm der modifizierten Anpassungsrou- tine erster Art bei einem indirekten Modulaufruf,
Figur 9 eine schematische Darstellung der Anpassung des Vereinbarungssatzes des aufrufenden Programm-Moduls beim indirekten Modulaufruf,
Figur 10 eine schematische Darstellung zur Erläuterung, wie ein Standard-Modul für indirekte Modulaufrufe zu modifizieren ist und
Figur 11 eine Übersicht über die Anpassungen beim indirekten Modulaufruf .
Zum besseren Verständnis werden in den folgenden Figuren fremde Programm-Module einheitlich mit der Bezugsziffer 10, interne Programm-Module mit 12, Anpassungsroutinen erster bzw. zweiter Art mit 14 bzw. 16 und in einer Hochsprache ver- faßte Quelltext-Module, die den lauffähigen Programm-Modulen zugrundeliegen, mit 18 bezeichnet.
In Figur 1 ist das bekannte Verfahren zum Anpassen von Ver- einbarungssätzen erläutert. In Figur 1 soll ein fremdes Programm-Modul 10 mit dem Namen A, das einem Ausgangs-Vereinbarungssatz von Verknüpfungsvereinbarungen unterliegt, mit einem internen Programm-Modul 12 mit dem Namen B verknüpft werden, für das ein effizienter Vereinbarungssatz von Verknüp- fungsvereinbarungen vorgesehen ist . Diese beiden Vereinba- rungssätze weichen voneinander ab, falls beispielsweise das interne Programm-Modul 12 mit dem Namen B durch einen Hochsprach-Ubersetzer erzeugt ist und das fremde Programm-Modul 10 mit dem Namen A ein Assembler-Modul ist oder durch einen mit dem vorgegebenen Hochsprach-Ubersetzer nicht kompatiblen Hochsprach-Ubersetzer einer anderen höheren Programmiersprache erzeugt worden ist. Als Hochsprach-Ubersetzer kommen Übersetzer in Frage, die in höheren Programmiersprachen wie COBOL, C, C++, Fortran etc. verfaßte Quelltext-Module in eine Maschinensprache übersetzen und so lauffähige Programm-Module erzeugen. Um bei dem bekannten Verfahren die voneinander abweichenden Verknüpfungsvereinbarungen des fremden Programm- Moduls 10 mit dem Namen A und des internen Programm-Moduls 12 mit dem Namen B zu überbrücken, muß von einem Programment- wickler eine Anpassungsroutine 20 erstellt werden. Beim Verknüpfen der beiden Programm-Module 10, 12 durch einen Binder (nicht dargestellt) wird die Anpassungsroutine 20 mit eingebunden, um bei einem Aufruf des internen Programm-Moduls 12 mit dem Namen B durch das fremde Programm-Modul 10 mit dem Namen A die Anpassung der voneinander abweichenden Verknüpfungsvereinbarungen vorzunehmen. Bei dem bekannten Verfahren muß der Programmentwickler für jedes Modul, das von einem Programm-Modul mit abweichendem Vereinbarungssatz aufgerufen werden soll, eine solche Anpassungsroutine 20 erstellen.
In Figur 2 ist dargestellt, wie bei dem erfindungsgemäßen Verfahren den unterschiedlichen Vereinbarungsεätzen voneinan- der getrennte Namensklassen zugeordnet werden. In der vorgegebenen Hochsprache verfaßte Quelltext-Module 18 mit den Namen A und B werden sowohl durch einen Hochsprach-Ubersetzer 22 gemäß dem Ausgangs-Vereinbarungssatz als auch durch einen Hochsprach-Ubersetzer 24 gemäß dem effizienten Vereinbarungs- satz übersetzt. Es wird nun festgelegt, daß die Namen der durch den Hochsprach-Ubersetzer 22 erzeugten fremden Programm-Module 10 gegenüber den Namen der zugrundeliegenden Quelltext-Module 18 unverändert bleiben, nämlich A und B. Demgegenüber wird an die Namen der durch den Hochsprach-Ubersetzer 24 erzeugten internen Programm-Module 12 die Zeichenfolge "&.R" angehängt. Der Buchstabe "&." in der Zeichenfolge "&.R" ist in keiner höheren Programmiersprache als Namensbe- standteil eines Quelltext-Moduls zugelassen, so daß die Namen der internen Programm-Module 12 eine Namensklasse bilden, welche die Namen der fremden Programm-Module 10 mit Sicherheit nicht enthält. Den fremden Programm-Modulen 10 und den internen Programm-Modulen 12 sind also Namen aus sich gegenseitig ausschließenden Namensklassen zugeordnet, die eine Identifizierung des den jeweiligen Programm-Modulen zugeordneten Vereinbarungssatzes erlauben. In dem Beispiel nach Figur 2 sind die fremden Programm-Module 10 durch den Hochsprach-Ubersetzer 22 erzeugt worden. Die fremden Programm- Module 10 können jedoch ebenso Assembler-Module oder in Ma- schinensprache vorliegende Programm-Module sein, die den Verknüpfungsvereinbarungen des Ausgangs-Vereinbarungssatzes unterliegen.
In Figur'3 ist die Funktionsweise einer Anpassungsroutine er- ster Art erläutert. Der Hochsprach-Ubersetzer 24 erzeugt aus dem Quelltext-Modul 18 mit dem Namen A das interne Programm- Modul 12 mit dem Namen A&R. Das interne Programm-Modul 12 erfüllt dabei die Verknüpfungsvereinbarungen des effizienten Vereinbarungssatzes. Zusätzlich wird durch den Hochsprach- Übersetzer 24 eine Anpassungsroutine 14 erster Art erzeugt, die denselben Namen A wie das Quelltext-Modul 18 erhält. Der Name A der Anpassungsroutine 14 ist der dem Ausgangs-Verein- barungssatz zugehörigen Namensklasse, d.h. der Fremd- Namensklasse zugeordnet. Die mit dem Namen A aufzurufende Anpassungsroutine 14 paßt den Ausgangs-Vereinbarungssatz an den effizienten Vereinbarungssatz an und ruft das mit dem Namen A&R versehene interne Programm-Modul 12 auf. Die Anpassungs- routine 14 erster Art kann von dem Hochsprach-Ubersetzer 24 automatisch erzeugt werden, da diesem die Anzahl und der Typ der Parameter des erzeugten internen Programm-Moduls 12 bekannt sind.
In Figur 4 ist die Funktionsweise einer Anpassungsroutine 16 zweiter Art erläutert. In dem Quelltext-Modul 18 mit dem Namen A ist ein Programmbefehl "call B" vorgesehen, mit dem ein weiteres Quelltext-Modul mit dem Namen B aufgerufen wird. Durch den Hochsprach-Ubersetzer 24 wird aus dem Quelltext- Modul 18 mit dem Namen A die in Figur 3 erläuterte Anpassungsroutine 14 erster Art ebenfalls mit dem Namen A und das interne Programm-Modul 12 mit dem Namen A&R erzeugt . Von dem internen Programm-Modul 12 aus wird nun jedes Programm-Modul grundsätzlich gemäß dem effizienten Vereinbarungssatz und mit dem für den effizienten Vereinbarungssatz festgelegten Namen aufgerufen. In diesem Beispiel ruft so das interne Programm- Modul A&R das Programm-Modul mit dem Namen B&R auf. Für jedes von dem internen Programm-Modul 12 aufgerufene Programm-Modul wird eine Anpassungsroutine 16 zweiter Art erzeugt, die in der Lage ist, den effizienten Vereinbarungssatz an den Ausgangs-Vereinbarungssatz anzupassen. Die Anpassungsroutine 16 zweiter Art erhält dabei einen Namen aus der dem effizienten Vereinbarungssatz zugeordneten Namensklasse, d.h. der inter- nen Namensklasse. In dem Beispiel nach Figur 4 erstellt der Hochsprach-Ubersetzer 24 somit die Anpassungsroutine 16 zweiter Art mit dem Namen B&R. Die Anpassungsroutine 16 mit dem Namen B&R ist zudem mit einem Bindeattribut versehen, welches den Binder veranlaßt, die Anpassungsroutine 16 nur dann ein- zubinden, wenn kein internes Programm-Modul mit dem Namen B&R vorhanden ist. Trifft der Binder ein solches internes Programm-Modul nicht an, so bindet er die Anpassungsroutine 16 ein, welche die notwendige Anpassung der Vereinbarungssätze vornimmt und daraufhin das fremde Programm-Modul 10 mit dem Namen B aufruft .
Durch die in den Figuren 2 bis 4 erläuterten Maßnahmen können einzelne Programm-Module, die unterschiedlichen Vereinbarungssätzen unterliegen, durch den Binder zu einem Zielprogramm verknüpft werden, ohne daß der Programmentwickler die Anpassungsroutinen selbst erstellen muß.
Das Zusammenwirken der eben erläuterten Maßnahmen wird im folgenden an Hand der Figuren 5 bis 8 an einem Beispiel erläutert .
In Figur 5 sind die zu einem Zielprogramm 26 zu verknüpfenden Programm-Module und die Aufrufbeziehungen zwischen diesen Programm-Modulen dargestellt. Das Zielprogramm 26 besteht aus Assembler-Modulen 28 mit den Namen A und F, die dem Ausgangs- Vereinbarungssatz unterliegen, den in der Hochsprache verfaß- ten Quelltext-Modulen 18 mit den Namen B, D, E, die dem effizienten Vereinbarungssatz unterliegen, und einem ebenfalls dem effizienten Vereinbarungssatz unterliegenden Standard- Modul 30 mit dem Namen G. Das Zielprogramm 26 sieht vor, daß das Assembler-Modul A die Quelltext-Module B, D, E aufruft. Von dem Quelltext-Modul B werden wiederum das Quelltext-Modul D und das Standard-Modul G aufgerufen. Das Quelltext-Modul D ruft schließlich das Quelltext-Modul E, das Assembler-Modul F und das Standard-Modul G auf .
In Figur 6 sind die durch den Hochsprach-Ubersetzer 24 erzeugten Programm-Module und die Anpassungsroutinen des Zielprogramms nach Figur 5 dargestellt. Beim Übersetzen der Quelltext-Module 18 (vgl. Fig. 5) mit den Namen B, D, E werden die entsprechenden internen Programm-Module 12 mit den Namen B&R, D&R, E&R erzeugt. Ferner erstellt der Hochsprachübersetzer 24 die Anpassungsroutinen 14 erster Art mit den Namen B, D, E. Von den internen Programm-Modulen 12 werden weitere Programm-Module mit den Namen aus der internen Namensklasse aufgerufen. Das interne Programm-Modul B&R ruft so das Standard-Modul 30 mit dem Namen G&R sowie das interne Programm-Modul D&R auf . Ebenso ruft das interne Programm- Modul 12 mit dem Namen D&R das Standard-Modul 30 mit dem Namen G&R, das Assembler-Modul 28 mit dem Namen F&R sowie das interne Programm-Modul E&R auf. Es ist darauf hinzuweisen, daß das dem effizienten Vereinbarungssatz unterliegende Standard-Modul 30 mit dem Namen G&R zu versehen ist, falls es diesen Namen nicht schon hat. Dies läßt sich leicht über eine automatisch realisierbare Umbenennung erreichen.
Der Hochsprach-Ubersetzer 24 erzeugt schließlich für die Programm-Module, die von den internen Programm-Modulen 12 aufge- rufen werden, die entsprechenden, mit dem Bindeattribut versehenen Anpassungsroutinen 16 zweiter Art. Für das interne Programm-Modul B&R sind dies die Anpassungsroutinen 16 mit den Namen D&R und G&R. Entsprechend werden für das interne Programm-Modul 12 mit dem Namen D&R die Anpassungsroutinen 16 mit den Namen G&R, F&R und G&R erzeugt. Wie Figur 6 zu entnehmen ist, können die Anpassungsroutinen durch verschiedene Übersetzungsvorgänge mehrmals erzeugt werden. So wird beispielsweise die Anpassungsroutine 16 mit dem Namen G&R sowohl bei der Übersetzung des Quelltext-Moduls B als auch bei der Übersetzung des Quelltext-Moduls D erstellt.
In Figur 7 ist schließlich das von dem Binder erzeugte, lauffähige Zielprogramm 26 gezeigt, das durch Verknüpfen der einzelnen Programm-Module entstanden ist. Hier ist nochmals ver- deutlicht, wie die internen Programm-Module B&R, D&R, E&R von dem Assembler-Modul 28 mit dem Namen A aus über die Namen B, D und E aufgerufen werden. Dementsprechend wird das Assembler-Modul 28 mit dem Namen F von dem internen Programm-Modul 12 mit dem Namen D&R über die Anpassungsroutine mit dem Namen F&R aufgerufen. Im Gegensatz dazu ruft das interne Programm- Modul 12 mit dem Namen B&R das interne Programm-Modul 12 mit dem Namen G&R ohne Zwischenschaltung einer Anpassungsroutine auf, da bei diesem Aufruf keine Anpassung der Vereinbarungs- sätze nötig ist.
In manchen höheren Programmiersprachen, z.B. der Sprache C, ist es möglich, ein Programm-Modul nicht nur über seinen Namen, sondern auch über seine Adresse, im weiteren Ziel- Adresse genannt, d.h. über einen "Funktions-Zeiger" auf seine Ziel-Adresse aufzurufen, so daß beim aufrufenden Programm- Modul der Name des aufgerufenen Programm-Moduls nicht mehr bekannt ist, sondern nur noch dessen Ziel-Adresse. Für diese indirekten Modulaufrufe ist das oben beschriebene Verfahren, das auf dem Trennen der den verschiedenen Vereinbarungssätzen zugrundeliegenden Namensklassen beruht, etwas zu modifizieren, wie im folgenden an Hand der Figuren 8 bis 10 erläutert wird.
Figur 8 zeigt ein Flußdiagramm einer modifizierten Anpas- sungsroutine erster Art bei einem indirekten Modulaufruf. Zunächst wird vorausgesetzt, daß der Funktions-Zeiger stets auf eine Variante des Programm-Moduls zeigt, die dem Ausgangs-
Vereinbarungssatz unterliegt. Der indirekte Aufruf erfolgt so in Figur 8 auf die Routine mit dem Namen A. Die Anpassungs- routine erster Art ist nun insofern modifiziert, als daß sie durch eine Abfrage feststellt, welchem Vereinbarungssatz das aufrufende Programm-Modul unterliegt. Bei der Anpassungsrou- tine nach Figur 8 wird abgefragt, ob der Aufruf gemäß dem Ausgangs-Vereinbarungssatz erfolgt ist. Ist dies nicht der Fall, d.h. erfolgte der indirekte Aufruf gemäß dem effizienten Vereinbarungssatz, so findet keine Anpassung der Verein- barungssatze statt und es wird das Programm-Modul mit dem Namen A&R aufgerufen. Stellt die modifizierte Anpassungsroutine erster Art fest, daß das aufrufende Programm-Modul dem Ausgangs-Vereinbarungssatz unterliegt, so findet die Umsetzung dieses Vereinbarungssatzes auf den effizienten Verein- barungssatz statt, bevor das Programm-Modul A&R aufgerufen wird. Wie ein Kriterium zum Erfassen des Vereinbarungssatzes, gemäß dem der indirekte Aufruf erfolgt, festgelegt werden kann, hängt von den konkreten VerknüpfungsVereinbarungen ab. So ist es beispielsweise möglich, ein Register, das bei dem Ausgangs-Vereinbarungssatz nicht verwendet wird, aber bei dem effizienten Vereinbarungssatz stets mit einer gültigen Befehlsadresse besetzt ist, als Kriterium festzulegen, indem es bei Routinen mit Ausgangs-Vereinbarungssatz definiert auf eine vorgegebene ungültige Befehls-Adresse gesetzt wird.
Die in Figur 8 erläuterte Modifizierung der Anpassungsroutine erster Art erlaubt es, die durch den Hochsprach-Ubersetzer erzeugten internen Programm-Module auch von Standard-Modulen aus, die dem effizienten Vereinbarungssatz unterliegen, z.B. Bibliotheksroutinen, über Funktions-Zeiger aufzurufen.
Um ferner den indirekten Aufruf von fremden Programm-Modulen, die keine Anpassungsroutinen besitzen, aus internen Programm- Modulen heraus zu ermöglichen, ist eine weitere Modifizierung der Anpassungsroutinen erster Art nötig. So wird den Anpassungsroutinen erster Art ein Kennzeichnungscode vorangestellt, der die Anpassungsroutine als solche kennzeichnet. Als Kennzeichnungscode kann beispielsweise ein spezieller Leerbefehl verwendet werden, der ansonsten bei der Erzeugung eines Maschinencodes nicht verwendet wird. Bei einem indirekten Aufruf über die Ziel-Adresse des aufzurufenden Programm- Moduls wird geprüft, ob unter der Ziel-Adresse der Kennzeichnungscode abgelegt ist, wie in Figur 9 dargestellt ist. Ist dies der' Fall, d.h. zeigt der Funktions-Zeiger auf eine An- passungsroutine erster Art, so wird diese übersprungen, da auch die aufzurufende Programmroutine dem effizienten Verein- barungssatz unterliegt und somit keine Anpassung der Verein- barungssätze notwendig ist. Wird unter der Ziel-Adresse der Erkennungscode nicht vorgefunden, so bedeutet dies, daß über den Funktions-Zeiger ein fremdes Programm-Modul mit Ausgangs- Vereinbarungssatz aufgerufen werden soll. In diesem Fall wird der effiziente Vereinbarungssatz des aufrufenden Programm- Moduls auf den Ausgangs-Vereinbarungssatz des aufzurufenden Programm- oduls umgesetzt und die Ziel-Adresse angesprungen.
In Figur 10 ist gezeigt, wie das Standard-Modul 30 mit effi- zientem Vereinbarungssatz zu modifizieren ist, um indirekte Modulaufrufe mit Funktions-Zeigern zu ermöglichen. Das Standard-Modul 30 mit dem Namen A&R wird mittels eines Hilfsprogramms 40 mit dem in Figur 9 erläuterten Kennzeichnungscode versehen. Zudem erhält das Standard-Modul 30 neben dem Namen A&R den Namen A, der dem Ausgangs-Vereinbarungssatz zugeordnet ist. Bei einem indirekten Modulaufruf des Standard-Moduls 30 wird nun unter der Ziel-Adresse der Kennzeichnungscode vorgefunden, so daß wie in Figur 9 erläutert, ein indirekter Aufruf des Standard-Moduls 30 von dem internen Programm-Modul aus erfolgen kann, ohne daß eine Anpassung der Vereinbarungs- sätze vorgenommen werden muß.
Durch das Zusammenspiel der in den Figuren 8 bis 10 erläuterten Maßnahmen sind indirekte Modulaufrufe über Funktions- Zeiger möglich zwischen:
internen Programm-Modulen untereinander, die durch den Hochsprach-Ubersetzer 24 erzeugt sind,
internen Programm-Modulen, die durch den Hochsprach-Ubersetzer 24 erzeugt sind, und fremden Programm-Modulen, die dem Ausgangs-Vereinbarungssatz unterliegen, z.B. Assembler- Modulen,
internen Programm-Modulen, die durch den Hochsprach-Ubersetzer erzeugt sind, und Standard-Modulen, die dem effizienten Vereinbarungssatz unterliegen, z.B. Bibliotheksroutinen.
Dies ist nochmals in der nachfolgenden Tabelle zusammenfassend dargestellt.
Figure imgf000019_0001
I: Fremdes Programm-Modul Assembler-Modul mit Ausgangs- Vereinbarungssatz
II: Internes Programm-Modul mit effizientem Vereinbarungssatz
III: Standard-Modul mit effizientem Vereinbarungssatz
+: erlaubt
- : nicht erlaubt
Figur 11 gibt eine Übersicht über die durchgeführten Anpas- sungen der Vereinbarungssätze bei indirekten Modulaufrufen.
Dargestellt ist das Assembler-Modul 28 mit dem Namen A, das durch den Hochsprach-Ubersetzer 24 erzeugte interne Programm- Modul 12 mit dem Namen B&R und die diesem zugeordnete Anpas- sungsroutine 14 erster Art mit dem Namen B, das durch den Hochsprach-Ubersetzer 24 erzeugte interne Programm-Modul 12 mit dem Namen C&R und die diesem zugeordnete Anpassungsroutine 14 erster Art mit dem Namen C und das Standard-Modul 30, das sowohl mit dem Namen D als auch mit dem Namen D&R vor- liegt. Bei dem indirekten Modulaufruf 1 findet die Anpassung der Vereinbarungssätze durch die Anpassungsroutine 14 mit dem Namen B statt. Bei den Aufrufen 2 findet keine Anpassung statt, da die aufrufenden Programm-Module 12 mit den Namen B&R, C&R den Kennzeichnungscode der Anpassungsroutinen 14 mit den Namen B bzw. C erkennen, und wie in Figur 9 gezeigt verzweigt wird. Bei Aufruf 3 wird bei dem Assembler-Modul 28 mit dem Namen A der Kennzeichnungscode nicht vorgefunden, so daß die Anpassung der Vereinbarungssätze bei dem aufrufenden Pro- gramm-Modul 12 mit dem Namen B&R vorgenommen wird. Bei Aufruf 4 erkennt das aufrufende Programm-Modul 12 mit dem Namen C&R wie bei Aufruf 2 den Kennzeichnungscode und verzweigt, wie in Figur 9 dargestellt ist, ohne eine Anpassung der Vereinbarungssätze vorzunehmen. Auch bei Aufruf 5 wird keine Anpas- sung der Vereinbarungssätze vorgenommen, da die aufgerufene Anpassungsroutine 14 mit dem Namen C das interne Programm- Modul 12 mit dem Namen C&R aufruft, und für das Standard- Modul 30 mit dem Namen D&R und das interne Programm-Modul 12 mit dem Namen C&R keine Anpassung der Vereinbarungssätze not- wendig ist. Mit 6 sind Aufrufe zwischen Programm-Modulen bezeichnet, die von vornherein demselben Vereinbarungssatz unterliegen, so daß auch in diesem Fall keine Anpassung der Vereinbarungssätze notwendig ist. Mit 7 sind schließlich indirekte Aufrufe zwischen dem Assembler-Modul 28 mit dem Namen A und dem Standard-Modul 30 mit dem Namen D bzw. D&R bezeichnet, die bei dem erfindungsgemäßen Verfahren verboten sind.

Claims

Patentansprüche
1. Verfahren zum Steuern einer Datenverarbeitungsanlage zum Erzeugen eines Zielprogramms (26) durch Verknüpfen mehre- rer Programm-Module,
bei dem durch einen Hochsprach-Ubersetzer (24) erzeugte, einem effizienten Vereinbarungssatz von Verknüpfungsvereinbarungen unterliegende interne Programm-Module mit Na- men aus einer internen Namensklasse versehen werden (12) ,
bei dem einem Ausgangs-Vereinbarungssatz von Verknüp- fungsvereinbarungen unterliegende fremde Programm-Module
(10) mit Namen aus einer Fremd-Namensklasse versehen wer- den, wobei sich die den jeweiligen Vereinbarungssätzen zugeordneten Namensklassen gegenseitig ausschließen,
bei dem für die internen Programm-Module (12) jeweils eine Anpassungsroutine (14) erster Art erzeugt wird, die mit einem dem Namen des zugehörigen internen Programm-Moduls (12) entsprechenden Namen aus der Fremd-Namensklasse versehen wird und die vor einem Aufruf des zugehörigen internen Programm-Moduls (12) eine Anpassung des Ausgangs-Vereinbarungssatzes des aufrufenden fremden Pro- gramm-Moduls (10) an den effizienten Vereinbarungssatz des aufzurufenden internen Programm-Moduls (12) vornimmt,
bei dem von den internen Programm-Modulen aus aufzurufende' Programm-Module mit Namen aus der internen Namens- klasse aufgerufen werden,
bei dem für die von den internen Programm-Modulen (12) aufzurufenden Programm-Module jeweils eine Anpassungsroutine (16) zweiter Art erzeugt wird, die mit einem dem Na- men des zugehörigen Programm-Moduls entsprechenden Namen aus der internen Namensklasse versehen wird und die vor einem Verzweigen zu einem fremden Programm-Modul eine An- passung des effizienten Vereinbarungssatzes an den Ausgangs-Vereinbarungssatz des aufzurufenden externen Programm-Moduls (10) vornimmt, wobei die Anpassungsroutine (16) zweiter Art mit einem Bindeattribut versehen ist, so daß sie nur dann in ein Zielprogramm (26) eingebunden wird, wenn neben ihr kein gleichnamiges internes Programm-Modul (12) vorhanden ist,
und bei dem die internen Programm- odule (12) , die frem- den Programm-Module (10) und die benötigten Anpassungs- routinen erster (14) und zweiter Art (16) miteinander zu dem Zielprogramm (26) verknüpft werden.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die fremden Programm-Module (10) in einer Assembler-Sprache verfaßt sind.
3. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die fremden Programm-Module (10) in einer Maschinenspra- ehe vorliegen.
4. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß die Namen der internen Programm-Module (12) durch Anfügen einer in der verwendeten Hochsprache als Namensbestandteil nicht zugelassenen Zeichenfolge (&R) an die Namen der den internen Programm-Modulen zugrundeliegenden Quelltext-Module (18) erzeugt werden.
5. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß für den Fall, daß das aufrufende Programm-Modul ein anderes Programm-Modul nicht über dessen Namen, sondern über dessen Adresse aufruft, vorausgesetzt wird, daß der Name des aufgerufenen Programm- Moduls der Fremd-Namensklasse zugeordnet ist, und daß durch die Anpassungsroutinen erster Art der aufgerufenen internen Programm-Module (12) festgestellt wird, welchem Vereinbarungssatz das jeweilige aufrufende Programm-Modul unterliegt, und nur bei voneinander abwei- chenden Vereinbarungssätzen des aufrufenden und aufgerufenen Programm-Moduls die Anpassung der VereinbarungsSätze vorgenommen wird.
6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, daß die Anpassungsroutinen (16) erster Art jeweils mit einem Kennzeichnungscode versehen werden, durch den diese und die fremden Programm-Module (10) voneinander zu unterscheiden sind.
7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß bei einem indirekten Aufruf geprüft wird, ob unter der Adresse des aufgerufenen Programm-Moduls der Kennzeich- nungscode abgelegt ist und eine Anpassung der voneinander abweichenden Vereinbarungssätze von aufrufendem und auf- gerufenem Programm-Modul genau dann vorgenommen wird, falls kein Kennzeichnungscode unter dieser Adresse abgelegt ist.
8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, daß ein in Maschinensprache vorliegendes, dem effizienten Vereinbarungssatz unterliegendes Standard-Modul (30) durch den Kennzeichnungscode ergänzt wird und neben dem ursprünglichen Namen aus der internen Namensklasse einen weitexen Namen aus der Fremd-Namensklasse erhält.
PCT/DE1998/001389 1997-06-17 1998-05-20 Verfahren zum steuern einer datenverarbeitungsanlage WO1998058311A1 (de)

Priority Applications (4)

Application Number Priority Date Filing Date Title
DE59801399T DE59801399D1 (de) 1997-06-17 1998-05-20 Verfahren zum steuern einer datenverarbeitungsanlage
JP50353099A JP2002508866A (ja) 1997-06-17 1998-05-20 データ処理装置の制御方法
EP98934758A EP0990203B1 (de) 1997-06-17 1998-05-20 Verfahren zum steuern einer datenverarbeitungsanlage
US09/465,725 US6189144B1 (en) 1997-06-17 1999-12-17 Method of controlling a data processing system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE19725593.0 1997-06-17
DE19725593A DE19725593A1 (de) 1997-06-17 1997-06-17 Verfahren zum Steuern einer Datenverarbeitungsanlage

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US09/465,725 Continuation US6189144B1 (en) 1997-06-17 1999-12-17 Method of controlling a data processing system

Publications (1)

Publication Number Publication Date
WO1998058311A1 true WO1998058311A1 (de) 1998-12-23

Family

ID=7832739

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/DE1998/001389 WO1998058311A1 (de) 1997-06-17 1998-05-20 Verfahren zum steuern einer datenverarbeitungsanlage

Country Status (5)

Country Link
US (1) US6189144B1 (de)
EP (1) EP0990203B1 (de)
JP (1) JP2002508866A (de)
DE (2) DE19725593A1 (de)
WO (1) WO1998058311A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3284956B2 (ja) * 1998-01-26 2002-05-27 日本電気株式会社 プログラム変換方法、プログラム変換装置及びプログラム変換プログラムを記憶した記憶媒体
US8522223B2 (en) * 2006-11-22 2013-08-27 Intel Corporation Automatic function call in multithreaded application
US9767004B2 (en) * 2014-06-16 2017-09-19 Symantec Corporation Dynamic call tracking method based on CPU interrupt instructions to improve disassembly quality of indirect calls
US10359998B2 (en) * 2016-05-06 2019-07-23 Unisys Corporation Runstream generator
US10235190B2 (en) 2016-12-14 2019-03-19 International Business Machines Corporation Executing instructions to store context information based on routine to be executed
US20180165073A1 (en) 2016-12-14 2018-06-14 International Business Machines Corporation Context information based on type of routine being called

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1992015962A2 (en) * 1991-03-07 1992-09-17 Digital Equipment Corporation System and method for transforming procedure calls in a cross debugging environment
WO1992015936A1 (en) * 1991-03-07 1992-09-17 Digital Equipment Corporation System and method for automatically interfacing call conventions between two dissimilar program units
US5581769A (en) * 1993-12-29 1996-12-03 International Business Machines Corporation Multipurpose program object linkage protocol for upward compatibility among different compilers

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247678A (en) * 1989-10-12 1993-09-21 Texas Instruments Incorporated Load time linker for software used with a multiprocessor system
GB2242293A (en) * 1990-01-05 1991-09-25 Apple Computer Apparatus and method for dynamic linking of computer software components
US5303332A (en) * 1990-07-30 1994-04-12 Digital Equipment Corporation Language for economically building complex, large-scale, efficient, rule-based systems and sub-systems
US5519866A (en) * 1993-06-28 1996-05-21 Taligent, Inc. Method and apparatus of incrementally linking components of a modeled computer program

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1992015962A2 (en) * 1991-03-07 1992-09-17 Digital Equipment Corporation System and method for transforming procedure calls in a cross debugging environment
WO1992015936A1 (en) * 1991-03-07 1992-09-17 Digital Equipment Corporation System and method for automatically interfacing call conventions between two dissimilar program units
US5581769A (en) * 1993-12-29 1996-12-03 International Business Machines Corporation Multipurpose program object linkage protocol for upward compatibility among different compilers

Also Published As

Publication number Publication date
EP0990203B1 (de) 2001-09-05
JP2002508866A (ja) 2002-03-19
US6189144B1 (en) 2001-02-13
EP0990203A1 (de) 2000-04-05
DE19725593A1 (de) 1999-01-07
DE59801399D1 (de) 2001-10-11

Similar Documents

Publication Publication Date Title
DE69728811T2 (de) Datenprozessor
DE69726339T2 (de) Verfahren und Apparat zur Sprachübersetzung
DE69931540T2 (de) Fernprozeduraufrufe mit Um- und Rückwandlung von beliebigen, nicht-übereinstimmenden Zeigergrössen
DE3032664A1 (de) Elektronisches sprachuebersetzungsgeraet.
EP0432802A2 (de) Verfahren für die automatische Syntaxanalyse (Parsen) des Textes von Computer-Programmen in Kompilierern
DE19535519C2 (de) Verfahren zur Reduzierung des Umfanges von Computerprogrammen
WO1998058311A1 (de) Verfahren zum steuern einer datenverarbeitungsanlage
EP1674954A1 (de) System und Verfahren zur Wiederverwendung von Projektierungsdaten
EP1197848A2 (de) Verfahren zur automatischen Erzeugung von Programmcode
DE102004009676A1 (de) Verfahren und Systeme zum Erzeugen von Unterstützungsdateien für Befehle
EP0910825A1 (de) Verfahren zur migration von programmen mit portierbaren und nicht-portierbaren programmteilen
DE2613703C2 (de) Schaltungsanordnung zum Übersetzen von Programmtexten
DE10325843A1 (de) Verfahren, Computer und Computerprogramm zum Verwalten von Resourcen zur Verwendung in einem resourcenbasierten Dokumentendatenstrom
DE3129560C2 (de) Steuerschaltung für einen Drucker
DE19546173C2 (de) Verfahren zum Testen einer Bedieneroberfläche in computergesteuerten Systemen
DE102004056006B3 (de) Verfahren zur Emulation eines für einen Ursprungsprozessor in einem Ursprungscode erstellten Programms auf einem Zielprozessor
EP1006453A2 (de) Verfahren zur Konvertierung von Daten
DE102004022183B4 (de) Verfahren zum Ändern von Programmobjektcode bei Quelltextänderungen
EP1271349A1 (de) Verfahren zur Zusammenführung verteilter Datenbanken
DE4407952A1 (de) Verfahren zur Kompilierung einer in einer formalen Sprache kodierten Quelldatei
DE10314548A1 (de) Verfahren, Computer und Computerprogrammmodule zur Übertragung von Daten in einem Computernetzwerk und solches Computernetzwerk
DE102018213288A1 (de) System zum Erstellen und Verwalten eines kommentierbaren elektronischen Buches, entsprechendes Computerprogramm, sowie Verfahren zum Erstellen
EP2037375A1 (de) Verfahren zum Betreiben von Datenbanken
DE19954793A1 (de) Verfahren zur Compilierung eines Maschinenprogramms
DE10254530A1 (de) Verfahren und System zur wissensbasierten Transformation von textuellen Programmen, die sich auf die Softwarekonfiguration eines verteilten Leitsystems beziehen

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): JP US

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 1998934758

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 09465725

Country of ref document: US

WWP Wipo information: published in national office

Ref document number: 1998934758

Country of ref document: EP

WWG Wipo information: grant in national office

Ref document number: 1998934758

Country of ref document: EP