ITRM940789A1 - "metodo e procedimento di comunicazione inter-macchina e metodo generalizzato per la riparazione di programmi per esso" - Google Patents
"metodo e procedimento di comunicazione inter-macchina e metodo generalizzato per la riparazione di programmi per esso" Download PDFInfo
- Publication number
- ITRM940789A1 ITRM940789A1 IT94RM000789A ITRM940789A ITRM940789A1 IT RM940789 A1 ITRM940789 A1 IT RM940789A1 IT 94RM000789 A IT94RM000789 A IT 94RM000789A IT RM940789 A ITRM940789 A IT RM940789A IT RM940789 A1 ITRM940789 A1 IT RM940789A1
- Authority
- IT
- Italy
- Prior art keywords
- program
- source
- database
- value
- data
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99934—Query formulation, input preparation, or translation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
Abstract
Viene fornito un metodo di programmazione per elaboratori per tradurre messaggi di sorgente in messaggi oggetto. Le operazioni di traduzione sono descritte in un database in cui sono memorizzati tutte le istruzioni e dati necessari. Un programma di controllo ha le funzioni limitate per rispondere ai messaggi di sorgente e accedere al database. Il database quindi dirige il programma di controllo per accedere ai programmi chiamati di subroutine di metodo di traduzione. I programmi di metodo di traduzione accedono quindi al messaggio sorgente in un procedimento operazione per operazione in modo da tradurre il messaggio sorgente nel messaggio oggetto. I programmi di metodo di traduzione inviano i messaggi al programma di controllo per avvisare se ogni operazione nel procedimento di traduzione è stata realizzata con successo oppure no. Il programma di controllo, rispondendo al data base e ai programmi di metodo di controllo di traduzione fornisce quindi al ricevitore il messaggio oggetto completamente tradotto.
Description
DESCRIZIONE dell'invenzione industriale dal titolo "METODO E PROCEDIMENTO DI COMUNICAZIONE INTER-MACCHINA E METODO GENERALIZZATO PER LA PREPARAZIONE DI PROGRAMMI PER ESSO".
DESCRIZIONE
FONDAMENTO DELL'INVENZIONE - CAMPO DI APPLICAZIONE Questa invenzione si riferisce al campo della costruzione di un programma per un elaboratore e, in particolare, alla costruzione di programmi di traduzione di dati. Più particolarmente, l'invenzione si riferisce a un procedimento "late binding" per fornire un sistema efficiente per informazioni di assembling e di traduzione da un elaboratore a un altro.
FONDAMENTO DELL'INVENZIONE - DESCRIZIONE DELLA TECNICA ANTECEDENTE
La storia dei sistemi di elaboratori e dei programmi in essi utilizzati si è sviluppata rapidamente nei trentacinque anni passati. I primi procedimenti a essere automazzati sono stati compilati di elaborazione di dati in lotti, a grande scala, quali produzione di contabilità. Quando ogni problema è stato indirizzato e risolto, sono stati creati nuclei di programmi di elaboratore. La natura dell'industria è tale, tuttavia, che nuovi programmi vengano preferiti a miglioramenti a soluzioni esistenti. Ciò ha dato come risultato la costruzione di nuovi sistemi che non sono in relazione a quelli che già esistono. Nel tempo, il numero di sistemi indipendenti è cresciuto enormemente. Scarsa attenzione è stata dedicata al coordinamento dei dati tra i vari programmi in competizione.
L'enorme massa di programmi in competizione ha condotto allo sviluppo di tecniche di costruzione di software onde consentire la ricostruzione di sistemi con maggior rendimento. Lo sviluppo di tali tecniche ha dato come risultato i linguaggi di quarta generazione (4 GL) alla fine degli anni ottanta. Sebbene sia stato largamente previsto che i 4 GL avrebbero sostituito facilmente e rapidamente tali sistemi, rendendo pratico sostituire i sistemi maggiori con una frequenza di quattro o cinque anni, ciò non si è verificato.
Quando i programmi sono migliorati l'intero programma eseguibile deve essere sostituito. Ciò è una conseguenza del procedimento della creazione di programma che prende molti blocchi di codice sorgente scritti a mano, compila ciascuno nel codice oggetto e quindi costruisce il singolo programma eseguibile da questi oggetti. Come risultato, ogni variazione in ogni blocco di codice sorgente crea una variazione significativa nel programma eseguibile che può dar luogo a effetti collaterali. Dopo la riscrittura il programma deve essere sottoposto a un controllo di regressione in cui l'intero programma viene ricontrollato per rivelare uno qualsiasi di questi effetti collaterali. Una difficoltà ulteriore incontrata è quella di un passaggio da una versione di un programma a un altro programma. Ciò comporta un significativo tempo di sosta e un addestramento del personale. A ciò si deve aggiungere un significativo ritardo per il controllo. Un tentativo per migliorare questo problema è stato l'impiego di strumenti di ingegneria di software assistiti da elaboratore quali generatori di codice. Queste tecniche sono rivolte, con vari gradi di successo, alla velocizzazione della creazione dei programmi. Tuttavia essi non affrontano la difficoltà principale delle numerose operazioni che debbono essere eseguite per migliorare un programma o creare un nuovo programma. Le operazioni per preparare un programma o per la revisione del programma nella tecnica antecedente si possono vedere in figura' 1, in cui il "requisito di cambiamento" si trasforma in "variazioni di software di progetto" e ancora in "progetto". Il "programma originale" e il "progetto" si trasformano quindi in "variazioni di programma" e in "programma variato" e in "controllo di sistema" e in "accettare un nuovo programma" e in "sostituire programma originale" e in "nuovo programma" .
Un altro approccio alla creazione del programma è riferito generalmente come orientazione agli oggetti ("00"). La teoria generale dietro questo metodo di preparazione di programma è il riconoscimento che per ogni tipo di sistema di elaboratore vi è un insieme di operazioni non banali e di informazione associata che è utilizzato in molte circostanze. Per esempio, un sistema di elaboratore che automatizza alcune operazioni bancarie, vi saranno frequenti richieste di elaborazione di ammontari di denaro. Questi procedimenti non sono una parte dell'operazione fondamentale di un elaboratore. Esse sono costituite da parecchie operazioni di calcolo che formano una parte comune di molti algoritmi più grandi. In una 00 questi algoritmi parziali e le loro strutture associate di dati sono note come "oggetti". Questa tecnica è un'estensione della pratica ben nota di creazione di sub programmi per compiti comunemente ripetuti. I linguaggi di programmazione 00 includono strutture per rendere questo approccio alla divisione di programma più facile e più potente rispetto ai linguaggi precedentemente esistenti. L'effetto globale delle tecniche 00 è simile ai generatori di codice: migliorare nello stadio di creazione di "programma principale" (figura 1).
Le difficoltà causate dal controllo di sistema e dalla sostituzione del programma sono dovute alla differenza tra il codice sorgente dell'elaboratore e le immagini eseguibili. Il codice sorgente viene creato dai programmatori o dai generatori di codice. Esso è normalmente in qualche linguaggio ragionevolmente leggibile dall'uomo (per esempio COBOL, FORTRAN, C, PROLOG, etc.). Ciascuno di questi linguaggi ha regole molto formali di grammatica e di sintassi. Il codice sorgente viene utilizzato per trascrivere algoritmi da un progetto in una forma che può essere interpretata da un compilatore. I compilatori sono programmi che convertono il codice sorgente nella forma intermedia, codice oggetto. Il codice oggetto è una forma intermedia tra il codice sorgente leggibile dall'uomo e 1 ’immagine eseguibile che può girare realmente sull'elaboratore. L'ultimo stadio nell'esecuzione di un programma detto link editor (o linker) che prende uno o più blocchi del codice oggetto e li converte in una forma che può essere eseguita da un elaboratore. Il flusso di questo metodo di tecnica antecedente di preparazione di programma è mostrato in figura 2. L'immagine eseguibile è la sola forma del programma che gira nell'elaboratore. Essa soltanto determina il comportamento del programma. Il codice sorgente è la sola forma manipolata dai programmatori o dai generatori di codice. Gli effetti collaterali, prima riferiti, possono aver luogo per il fatto che l'immagine eseguibile di qualsiasi programma è molto complessa. E' sempre possibile che insorgano effetti collaterali non previsti nell'immagine eseguibile che non sono voluti dal programmatore o dal generatore di codice del codice sorgente.
I problemi globali nella sostituzione dei sistemi causati dalla logistica per convertire i dati contenuti in tali sistemi, dall 'implementazione di nuovo software, e dal riaddestramento degli utilizzatori significa che tali sistemi continueranno ad esistere per un periodo considerevole di tempo. Ciò significa che questi sistemi devono essere utilizzati in sistemi a rete, multiutenti, in modo che i dati che questi sistemi contengono possano essere utilizzati da sistemi sviluppati successivamente.
Ancora un'altra difficoltà sta nell'interazione tra sistemi differenti. Molto spesso il collegamento tra sistemi multipli viene realizzato manualmente. Per esempio, record stampati da un sistema di elaboratore vengono spesso inseriti manualmente in un secondo sistema. Ciò è lento, fastidioso, e di conseguenza inefficiente e costoso. Un altro approccio ben noto consiste nel porre un nuovo programma tra sistemi esistenti in modo da agire come intermediario. In alcuni casi, deve essere fatta la programmazione.
SOMMARIO DELL'INVENZIONE
Uno scopo di questa invenzione è fornire un metodo computerizzato per tradurre efficientemente messaggi di sorgente in messaggi oggetto.
Un altro scopo di questa invenzione è fornire un programma di elaboratore in cui vengono fatte variazioni al programma senza dover riscrivere l'intero codice sorgente del programma.
E' ancora un altro scopo di questa invenzione fornire un metodo per creare programmi memorizzando e chiamando elementi di programmazione di base e combinando questi elementi per impiego al momento di esecuzione del programma .
Secondo gli scopi di questa invenzione viene fornito un metodo di programma di elaboratore "late binding" per agire in seguito ai messaggi di sorgente nella predisposizione di un elaboratore di tipo avente una memoria temporanea e in cui il programma traduce un messaggio sorgente predeterminato in un messaggio oggetto predeterminato, il programma "late binding" comprendendo :
(a) fornire un programma di controllo;
(b) fornire i messaggi sorgente al programma di controllo;
(c) fornire un database;
(d) memorizzare istruzioni e dati nel database; (e) fare in modo che il programma di controllo acceda al database,·
(f) fare in modo che il programma di controllo risponda alle istruzioni e ai dati memorizzati nel database;
(g) fornire almeno un metodo di traduzione o un programma di subroutine;
(h) fare in modo che il programma di controllo, rispondente alle istruzioni memorizzate nel database, chiami il programma del metodo di traduzione;
(i) fare in modo che il programma di metodo di traduzione, in risposta alle istruzioni nel database, traduca almeno una parte del messaggio ricevuto; e
(j) limitare il programma di controllo a rispondere al messaggio sorgente, accedere al database, e eseguire il programma di metodo di traduzione in risposta alle istruzioni e ai dati memorizzati nel database .
In un'altra realizzazione di questa invenzione viene fornito un metodo di programma di elaboratore "late binding" per creare programmi in cui vengono forniti al programma di elaboratore "late binding" stimoli di sorgente in cui ogni stimolo è del tipo che comprende un insieme di un numero predeterminato di eventi e uno di un insieme predeterminato di strutture di dati, e in cui il programma di elaboratore "late binding" è del tipo che chiama almeno una subroutine (cioè, un "programma di metodo di applicazione"), il programma di elaboratore "late binding" comprendendo :
(a) fornire un programma di controllo;
(b) fornire gli stimoli di sorgente al programma di controllo;
(c) fornire un database,·
(d) memorizzare istruzioni, dati e strutture di ogni stimolo di sorgente da far agire nel database,·
(e) fare in modo che il programma di controllo acceda al database;
(f) fare in modo che il programma di controllo risponda alle istruzioni e ai dati memorizzati nel database;
(g) fare in modo che il programma di controllo, in risposta agli stimoli e alle istruzioni e ai dati del database, sia in grado di chiamare almeno un programma di metodo di applicazione,· e
(h) limitare il programma di controllo a rispondere al messaggio sorgente, accedere al database, e rispondere alle istruzioni e ai dati memorizzati nel database.
In un altra realizzazione ancora di questa invenzione viene fornito un metodo di scrittura di un programma di traduzione per tradurre un messaggio sorgente in un messaggio oggetto comprendente :
(a) identificare le caratteristiche e i parametri del messaggio oggetto;
(b) identificare le caratteristiche del messaggio sorgente,-(c) ricavare i requisiti per tradurre il messaggio sorgente nel messaggio oggetto; (d) fornire un database;
(e) memorizzare nel database i dati e le istruzioni corrispondenti alle operazioni necessarie a tradurre il messaggio sorgente nel messaggio oggetto;
(f) scrivere un programma di metodo di traduzione per ogni trasformazione di ogni tipo di elemento del messaggio sorgente in ogni tipo di elemento di messaggio oggetto; (g) memorizzare un riferimento nel database per i programmi di metodo di traduzione;
(h) memorizzare le istruzioni nel database identificanti quali programmi di metodo di traduzione sono da chiamare,· e
(i) restringere il programma di controllo in modo da essere controllato in ogni momento dalle istruzioni e dai dati nel database; e (j) fare in modo che il programma di controllo da ottenere dal database, al ricevimento di un messaggio sorgente, le istruzioni del database per dirigere il programma di controllo e chiamare le subroutine predeterminate di metodo di traduzione per tradurre il messaggio sorgente nel messaggio oggetto.
In un altra realizzazione ancora di questa invenzione viene fornito un metodo di scrittura di un programma di applicazione comprendente:
(a) elencare tutti i messaggi di stimolo che il programma di applicazione deve ricevere; (b) fornire un elenco di ogni operazione che ogni programma di metodo di traduzione di applicazione deve eseguire e la sequenza delle operazioni;
(c) fornire un database;
(d) memorizzare gli stimoli in una tabella nel database
(e) memorizzare l'istruzione per eseguire il programma di metodo di applicazione nel database come un messaggio comprendente un riferimento al programma di metodo di applicazione e un riferimento ai parametri che il programma di metodo di applicazione utilizzerà;
(f) Determinare ogni stimolo che deve essere ricevuto dal programma di applicazione e denominare gli stimoli come messaggio di sorgente;
(g) determinare le strutture dei parametri per ciascuno dei programmi di metodo di applicazione da eseguire e denominare ciascuno come messaggio oggetto;
(h) identificare le caratteristiche e i parametri di ogni messaggio oggetto;
(i) identificare le caratteristiche del messaggio sorgente;
(j) ricavare i requisiti per tradurre il messaggio sorgente nei messaggi oggetto; (k) memorizzare nel database i dati e le istruzioni corrispondenti alle operazioni necessarie a tradurre il messaggio sorgente nel messaggio oggetto;
(l) ottenere un programma di metodo di applicazione per ciascuna operazione di applicazione;
(m) memorizzare le istruzioni nel database identificanti quali programmi di metodo di applicazione sono da chiamare;
(n) fare in modo che le istruzioni nel database determinino la chiamata da parte del programma di controllo dei programmi di metodo di applicazione e creino i parametri associati a ogni programma di metodo di applicazione dagli elementi dello stimolo di sorgente;
(o) restringere il programma di controllo in modo che venga controllato in ogni momento dalle istruzioni e dai dati nel database ,-e (p) fare in modo che il programma di controllo chiami il database al ricevimento di un messaggio sorgente; le istruzioni nel database per dirigere il programma di controllo e chiamare i programmi predeterminati di metodo di applicazione per tradurre il messaggio sorgente nel messaggio oggetto e fornire il messaggio oggetto come almeno una parte del programma completato.
BREVE DESCRIZIONE DEI DISEGNI
La figura 1 è un diagramma di flusso delle operazioni richieste per preparare un programma secondo la tecnica antecedente;
la figura 2 è un diagramma di flusso delle operazioni per la preparazione di un programma;
la figura 3 è un diagramma rappresentante la scomposizione di un programma tipico;
la figura 4 è un diagramma rappresentante un programma di traduzione;
la figura 5 è un diagramma di un programma di metodo;
la figura 6 è un diagramma della struttura di dati di un programma di metodo;
la figura 7 è un diagramma mostrante domande e risposte alle domande da un programma di controllo a un metodo.
DESCRIZIONE DELLE REALIZZAZIONI PREFERITE
Vi è la necessità di un meccanismo che aiuti nell'integrazione rapida di sistemi di elaboratore e una seconda necessità per un modo più veloce per sviluppare e variare sistemi.
Una singola soluzione è in grado di fornire una risposta a entrambi questi problemi.
Il tempo necessario per preparare o un nuovo programma oppure per riscrivere un programma può essere previsto con precisione mediante un concetto noto come "binding time". Allo scopo di analizzare le operazioni di programma di un elaboratore, viene utilizzato il concetto di "binding time" . Il "binding time" descrive il punto nella creazione di un programma nel quale viene fissato il suo comportamento. Per esempio, se un programma contiene la linea:
X: = 3 4
(che significa predisporre una variabile x nella somma di 3 e 4)
allora il valore di x creato eseguendo lo "statement" sarà sempre 7. Il comportamento a "binding time" di questo "statement" è, pertanto, il tempo in cui il programma viene compilato. Questo sarà il "binding time" prima possibile.
Consideriamo ora uno statement alternativo: x: = a b
(che significa "dare a una variabile x il valore della somma delle variabili a e b").
Inoltre, poniamo lo "statement" in una subroutine :
subroutine (a, b)
x: = a y b;
return x;
Il comportamento di questo "statement" è che il valore di x non può essere ora determinato da questo algoritmo poiché esso dipende dai valori delle variabili a e b. Le variabili a e b sono possedute dal programma che "chiama" la subroutine. Questa relazione di chiamata/risposta non è determinata al momento della compilazione. Essa è determinata quando il programma viene collegato in una forma eseguibile. Come risultato il "binding time" è stato riportato indietro al tempo "link-edit".
Come esempio finale, immaginiamo un programma che contiene lo "statement":
x: = a b;
questa volta il programma è costruito in modo tale che i valori di a e di b vengano forniti da un utilizzatore che siede presso un terminale. In questo caso il comportamento del programma non viene deciso finche esso non è in esecuzione. Il "binding time" è ora il "run time" . Questo risultato è utile poiché il programma è in grado di eseguire correttamente azioni che non erano state immaginate esplicitamente dal progettista. Chiunque progettasse un tale programma di somma non andrebbe oltre il procedimento di progettare esplicitamente in ogni possibile combinazione dei due numeri (a, b) che dovrebbero essere sommati assieme, e ancora il programma sommerà correttamente assieme qualsiasi coppia di tale due numeri .
I programmi con "late binding times" hanno il vantaggio che essi non devono essere ricompilati o "re-linked" allo scopo di fornire nuove funzioni. L'implementazione di variazioni del programma, e i nuovi programmi, utilizzanti tali metodi di programma riducono la fase di controllo del sistema a soltanto tali controlli come richiesto dalle nuove funzioni. Le vecchie funzioni non dovrebbero essere influenzate poiché l'immagine eseguibile non è stata modificata in nessun modo. Poiché non vi è alcuna variazione nell'immagine eseguibile non vi è alcuna necessità dell'inconveniente di sostituirla nel sistema in esecuzione .
Tutti i programmi di elaboratore esprimono algoritmi. Questi algoritmi comprendono una sequenza di istruzioni di funzioni semplici. Come conseguenza, tuttavia, ogni programma di elaboratore, complesso, può esser descritto scomponendolo nei suoi elementi relativi (figura 3) . La natura delle istruzioni non è definita, ma esse sono generalmente considerate come una unità atomica di elaborazione appropriata al compito da trattare. In effetti, nella costruzioni di sistemi di elaboratori, la forma delle "istruzioni" è definita usualmente dal compito da trattare e viene espressa utilizzando un linguaggio adatto di programmazione. E ben noto che tali funzioni vengono meglio implementate come subroutine che possono essere riutilizzate in simili necessità di istruzione .
Una caratteristica dei programmi "late binding" è che essi richiedono una informazione quando esse sono in esecuzione che dica loro come reagire a particolare stimoli. Nella descrizione dal "run-time binding", l'informazione è stata fornita da un utilizzatore che siede presso un terminale. E' chiaro che nella maggior parte delle circostanze, tale situazione non sarà accettabile. Un altro meccanismo deve essere utilizzato per fornire un'informazione richiesta. Un tale meccanismo consiste nel mantenere i dati di configurazione in qualche forma di un data base. Tale database può contenere l'informazione utilizzata per configurare un programma "late binding" per un insieme di circostanze. Variazioni al database di configurazione variano il comportamento del programma.
Il database contiene riferimenti alle operazioni di elaborazione da eseguire per un particolare stimolo. Poiché la definizione di un algoritmo è in termini di tali operazioni di elaborazione, ogni operazione che può essere eseguita mediante un algoritmo può essere descritta nel programma "late binding" configurato mediante un database, che contiene un adatto codice di programma preesistente e può eseguire qualsiasi procedimento che l'elaboratore è in grado di eseguire. Pertanto, un programma "late binding" può eseguire ogni compito che un programma costruito allo scopo può realizzare.
Il compito di collegare assieme un certo numero di sistemi di elaboratore può essere ridotto a molti compiti separati di collegamento di coppie di sistemi. Il collegatore deve completare tre compiti separati.
Questi compiti sono:
1. Stabilire che i dati provenienti dal sistema che invia abbiano significato per il ricevitore;
2 . stabilire mezzi per passare informazioni elettroniche, leggibili mediante elaboratore dal primo sistema al secondo sistema; e 3. ristrutturare l'informazione in una forma accettabile del ricevitore.
Il primo compito viene eseguito mediante esame dei sistemi in questione. Il secondo mediante un adatto protocollo elettronico determinato dalla lettura dei dispositivi di elaborazione che devono essere collegati. Nessuno di questi compiti è adatto per la soluzione mediante un sistema di elaboratore. Entrambi richiedono tecniche ben stabilite che possono essere eseguite facilmente su una base di caso per caso. Il terzo compito riconosce che i differenti sistemi di elaboratore rappresentano l'informazione in forme differenti. E' ben noto che anche nei sistemi forniti dallo stesso costruttore, le strutture di dati che descrivonogli oggetti nel mondo reale sono differenti nei diversi sistemi, anche quando gli oggetti del mondo reale da descrivere sono identici. La sorgente principale di complessità e di ritardo nell 'implementare le interconnessioni di sistema riguarda la produzione dei programmi richiesti per eseguire le richieste conversioni di struttura di dati .
Con questo fondamento generale, consideriamo ora l'implementazione dei metodi di programmazione "late binding".
I programmi "late binding" descritti sono costituiti da due parti - un programma di controllo e subroutine, che eseguono le richieste operazioni di programma. Lo scopo del programma di controllo è quello di ricevere gli stimoli in arrivo con i loro dati associati, e ricavare l'azione appropriata da intraprendere. L'azione assume la forma di un elenco di subroutine da chiamare e un ordine in cui esse devono essere chiamate. Il programma di controllo quindi chiama le subroutine necessarie nell'ordine richiesto, controllando che la chiamata abbia avuto successo.
Nella realizzazione preferita di questa invenzione, i programmi possono essere scritti in un linguaggio qualsiasi; preferibilmente il linguaggio di programmazione C. Il programma di controllo estrae le sue istruzioni dal database e le mantiene, nella forma di schiere di strutture di dati, nella memoria dell'elaboratore. (Questa estrazione di strutture di dati in strutture di memoria non è essenziale, ma consente una esecuzione di programma molto più rapida). Una delle schiere di dati è costituita da tutte le serie richieste di chiamate di subroutine. Queste strutture di dati contengono un riferimento di funzione eseguibile (nel linguaggio C questa è un "puntatore di funzione") per la subroutine che è il riferimento richiesto dal programma allo scopo di eseguire la subroutine. Questo puntatore di funzione può non essere contenuto nel database. Allo scopo di determinare i puntatori di funzione per tutte le subroutine richieste, il database contiene una stringa unica di carattere per ogni subroutine disponibile (questo è il nome della funzione ed è realmente codificato in ogni subroutine) . Il programma di controllo contiene una funzione che può convertire questi nomi di funzioni in puntatori di funzione. Questa operazione viene eseguita dal programma di controllo quando esso per la prima volta inizia la esecuzione, eliminando la necessità di eseguirla per ogni stimolo del programma.
Nessuna elaborazione di applicazione ha luogo nel programma di controllo. Le sue responsabilità sono interamente riferite alla selezione, sequenziamento, e esecuzione dei metodi. Il programma di controllo estrae l'informazione che esso richiede da un database, che, per scopi di descrizione può essere riferito come un "Metadatabase". Variazioni nel Metadatabase si rifletteranno nella variazione di comportamento del programma. Il procedimento è mostrato in figura 7. La sequenza viene controllata dal programma di controllo, sotto la direzione del Metadatabase.
In base a questi principi possono essere creati e modificati nuovi programmi senza la variazione del programma di controllo. Questo concetto può essere utilizzato sia come metodo per creare programmi, sia in un traduttore che traduce una sorgente di informazione in un altra. Il motivo perciò è che una volta che il programma di controllo stabilisce le operazioni di base, la traduzione dei dati in un formato di dati in un altro formato è costituita da operazioni comprese nei metodi e nella struttura di database su cui in seguito a cui i metodi operano.
Il programma di traduzione (figura 4) opera nel modo seguente: una volta che i dati da tradurre sono stati ottenuti (cioè, i dati sorgente), essi debbono essere identificati. Ciò significa che il programma di traduzione deve riconoscere quali degli insiemi dei possibili messaggi in arrivo è stato ricevuto. Questa identificazione determinina l'insieme di strutture dì uscita (cioè, dati oggetto) che debbono essere convogliati sul ricevitore. Questo insieme può contenere zero, una o molte strutture di uscita.
Questa traduzione può essere scomposta in molte operazioni più piccole di traduzione, ciascuna delle quali si applica a un valore semplice nei dati sorgente.
La scomposizione è scelta in modo che il tipo di dati di ogni subsezione della struttura originale sia costituito da un tipo singolo di dati leggibili dall'elaboratore (cioè, interi, numeri a virgola mobile, configurazione di bit o stringa di caratteri). Come risultato,’ la capacità di convertire liberamente vari tipi di dati può risolvere moltissime delle traduzioni a basso livello richieste. Esaminando le trasformazioni che non sono puramente strutturali, si può vedere che la maggioranza non è suscettibile di soluzione con algoritmi. Queste sono normalmente conversioni di testo arbitrario da un valore a un altro. Un esempio di ciò è la conversione di un codice di valuta monetaria da una forma arbitraria (per esempio, quella definita dai Reuters) in un'altra (per esempio, quella definita da S.W.I.F.T.). Non vi è alcuna variazione nel valore semantico dei dati - sia la sorgente, sia l'oggetto rappresentano una valuta, ma non vi è alcuna connessione mediante algoritmi tra i valori. La soluzione per questo tipo di trasformazione è quella di fornire una tabella ordinata nel campo di valori possibili di sorgente e i corrispondenti valori oggetto, e un meccanismo generalizzato per ricercare la tabella e sostituire il valore oggetto nella struttura oggetto.
L'insieme di subroutine richieste per implementare un programma di traduzione è costituito, pertanto, da un insieme di routine strutturali di conversione. Per eseguire funzioni come :
° Copy (con giustificazione a sinistra o a destra, come appropriato)
° convertire da formati carattere a numeri interi (e viceversa)
° convertire da formati carattere a numeri a virgola mobile (e viceversa)
° convertire da formati numerici a virgola mobile, a interi (e viceversa)
° ricercare il file di dati in arrivo nella tabella di valori (risultato di uscita come carattere, interi, o a virgola mobile)
Un ulteriore elenco di funzioni rappresentative è annesso nell'appendice. Quando viene chiamata, ciascuna di queste routine riceve un riferimento ai dati che essa deve assumere come ingresso, un riferimento al posto in cui debbono essere scritte le sue uscite, le massime lunghezze ammissibili di ingresso e uscita e un riferimento alla tabella di ricerca (se ve ne è una) da utilizzare .
Il programma di traduzione, pertanto, è in grado di eseguire qualsiasi traduzione concepibile di dati, entro i parametri delle strutture di dati, che può essere descritto mediante il linguaggio di programmazione C, che è in grado di descrivere qualsiasi struttura di dati che può essere rappresentata su un moderno elaboratore digitale .
L'azione di chiamare una subroutine richiede che il programma chiamante abbia tre blocchi di informazione circa la subroutine:
° un riferimento al codice di subroutine (usualmente il nome della funzione o un puntatore di funzione)
° i dati richiesti come parametri dalla subroutine
° i dati da restituire al chiamante mediante la subroutine.
Perchè il programma di controllo esprima un qualsiasi algoritmo, tutte e tre queste caratteristiche debbono o essere costanti o essere indipendenti dal programma di controllo chiamante. Il riferimento di subroutine è reso indipendente mediante il meccanismo del puntatore di funzione. Nel programma di traduzione i dati dei parametri sono costanti per tutte le subroutine di traduzione possibili, come descritto prima. I dati restituiti da una subroutine sono limitati a un valore numerico, indicante successo o errore.
Queste limitazione - questo insieme di parametri fissi e un valore fisso di ritorno -descrivono i requisiti di una speciale subclasse di subroutine che sono noti come metodi di traduzione. Queste subroutine sono in grado di essere assemblate in un qualsiasi programma possibile di traduzione.
I programmi di traduzione utilizzano un tipo differente di metodo, metodi di identificazione, per eseguire l'identificazione dei messaggi in arrivo. Questi metodi di identificazione ricevono come loro parametri la posizione del messaggio ricevuto,, lo spiazzamento e la lunghezza, in bite, dell'area del messaggio in arrivo che essi devono esaminare e la posizione dell'elenco dei messaggi sorgente, che include dati arbitrari in modo da identificarli. I metodi di identificazione restituiscono un valore al programma di controllo indicante quale dei tipi di messaggi in arrivo è stato ricevuto, ammesso che ve ne sia uno.
I tipi di algoritmo che possono essere eseguiti nei metodi di identificazione includono un confronto con valori di dati esattamente noti un confronto con valori di dati parzialmente'noti (utilizzando espressioni regolari), o un confronto con tipi di dati.
I programmi di traduzione impiegano metodi di traduzione per tutte le loro attività di traduzione. Allo scopo di estendere il modello di elaborazione del programma di controllo e le subroutine in modo da comprendere programmi di utilizzazione generale, è necessario estendere il campo di subroutine che possono essere eseguite. Assume particolare valore essere in grado di utilizzare subroutine che non sono state costruite di proposito per questa realizzazione. La capacità di riutilizzare un codice ben stabilito costruito per impiego in altri programmi consente che un programma utilizzante il programma di controllo e l'architettura di subroutine venga costruito in modo estremamente rapido per nuove applicazioni.
L'estensione alla programmazione per scopi generali viene eseguita eliminando la limitazione sui dati dei parametri utilizzati dalle subroutine. Una subroutine che è utilizzata in questo ambiente è nota come metodo di applicazione. I metodi di applicazione sono blocchi fissi di codice di programma che possono essere ottenuti in uno di tre modi:
1. essi possono essere costruiti a mano.
2 . essi possono costruiti estraendo le funzioni primitive preesistenti da sistemi esistenti.
3 . essi possono essere sistemi interamente preesistenti .
Il programma di controllo raggiunge la sua generalità trattando tutti i metodi allo stesso modo. Un metodo esiste in un ambiente mostrato in figura 5. Un metodo esegue un algoritmo o una parte di algoritmo. Esso esegue questo algoritmo sui dati. Il metodo ottiene i dati da:
° un database a cui il metodo controlla il suo proprio accesso
° i dati condivisi con altri metodi di applicazione (memorizzazione globale)
° parametri
Tutti e tre questi tipi di accesso ai dati vengono eseguiti attraverso le strutture di dati che sono controllate interamente entro il metodo di applicazione. Ciò consente che i metodi siano totalmente indipendenti l'uno dall'altro, fatta eccezione quando consentito specificamente, includendo le strutture di dati condivise. I metodi sono sempre indipendenti dal programma di controllo. Il meccanismo mediante il quale il metodo di applicazione ottiene i dati da un database o attraverso le strutture di dati condivise è fissato come parte della sua costruzione interna. Questi meccanismi di ottenimento dei dati sono completamente indipendenti dal programma di controllo. Il programma di controllo deve, tuttavia, fornire i dati dei parametri al metodo di applicazione in modo che esso possa essere riutilizzato liberamente .
Allo scopo di consentire al programma di controllo di fare ciò, viene utilizzato un programma di traduzione. Quando uno stimolo arriva al programma di controllo, il programma di controllo chiama il suo programma interno di traduzione. Il programma di traduzione crea una struttura di dati per ogni metodo di applicazione da eseguire. La struttura di dati assume la forma mostrata in figura 6. Questa struttura è utilizzata mediante una estensione del programma di controllo per chiamare il metodo riferito nel riferimento di metodo, passando i parametri nel resto della struttura.
Questa tecnica consente che il programma di controllo esegua qualsiasi subroutine che è scritta in un comune linguaggio di elaboratore. Così, poiché il programma di controllo è scritto in C, ciò significa che può essere utilizzato qualsiasi linguaggio che può essere chiamato da C.
Rimarranno alcuni casi in cui il procedimento di chiamata della subroutine è inappropriato o in cui un altro linguaggio o una limitazione di implementazione impedisce l'accesso diretto dal programma di controllo alla subroutine. In tali casi viene utilizzato un programma "wrapper" (o una serie di "wrapper"). Un "wrapper" è una subroutine il cui scopo è quello di essere chiamabile dal programma di controllo e di essere in grado di chiamare il richiesto programma di metodo di applicazione. Questa piccola estensione alla costruzione dei metodi di applicazione consente a uno sviluppatore di software di utilizzare ogni blocco possibile di software come metodo di applicazione.
Le operazioni per la creazione del programma includono una individuale per determinare la necessità di un programma di traduzione e comprendere il campo dei compiti che esso deve eseguire. Ciò richiede una determinazione dell'elenco di messaggi di ingresso che l'elaboratore riceverà. Una volta che l'elenco dei possibili messaggi è stato assemblato, deve essere determinato un meccanismo per distinguere tra di essi, in base soltanto alla loro struttura e contenuto. L'operazione successiva consiste nel determinare per ogni messaggio in arrivo, la reazione del traduttore. In altre parole in risposta al messaggio in arrivo o agli stimoli, il traduttore può creare nessun messaggio di uscita (cioè, ignorare il messaggio in arrivo) o creare un messaggio o creare molti messaggi. Il numero sarà noto.
La successiva operazione consiste nello scomporre le operazioni di programma identificando gli elementi di dati semplici che costituiscono la struttura di ogni messaggio oggetto. Ciò, analogamente alle operazioni precedenti, viene realizzato manualmente. Segue quindi l'identificazione degli elementi più semplici che costituiscono la struttura originale che corrisponde a questi elementi risultanti nel messaggio sorgente. Per ciascuno degli elementi semplici di struttura originale che sono necessari per la sorgente, verrà successivamente deciso quale tipo di trasformazione è richiesto per creare l'elemento risultante appropriato. Se vi è un qualsiasi requisito di sequenziamento, questo deve essere tenuto in contò. Se, per esempio, vi è l'esecuzione di una media allora è importante che la somma venga completata prima della divisione. In tutti gli altri casi è accettabile un ordine arbitrario. Il risultato di questa analisi è un insieme di istruzioni di trasformazione che è costituito dagli elementi dei dati originari (cioè, un campo nella prima struttura) , un elemento di dati risultanti (cioè, un campo nella seconda struttura), e il metodo di trasformazione richiesto tra di essi. Ciascuno di essi forma una riga nella tabella dei dettagli XLAT del Metadatabase . Ciò può essere predisposto a parte nella tabella dei dettagli di traduzione come XLAT-DETAILS.
I dati vengono quindi posti in ingresso nella tabella del Metadatabase. L'esistenza di un traduttore viene registrata nella tabella di posizione, qui è anche registrato il metodo di identificazione da chiamare per distinguere tra i messaggi in arrivo e la sezione dei messaggi in arrivo da esaminare mediante il metodo di identificazione. Ciascuno dei tipi di messaggi in arrivo è registrato nella tabella sorgente assieme a qualsiasi dato arbitrario da trovare nei messaggi di questo tipo nella sezione definita nella tabella di posizione. Ciascuno dei messaggi oggetto per ogni messaggio sorgente è registrato nella tabella oggetto. Ciascuna della trasformazione dei dettagli è registrata in una tabella dei dettagli di traduzione.
Per ogni trasformazione vi è un metodo che viene chiamato (cioè, una subroutine che esegue la trasformazione particolare richiesta) che è rappresentato da un riferimento di ritorno alla tabella dei metodi nel Metadatabase. La tabella dei metodi contiene essa stessa un nome per una subroutine eseguibile (cioè, un metodo). Questo nome è utilizzato dal programma di controllo per ricavare il riferimento di funzione eseguibile della subroutine appropriata quando esso legge il database. Il risultato finale per ciascuna delle trasformazioni come perviene a questo riferimento. Esso quindi risolve il riferimento per trovare la subroutine e eseguire la subroutine. L'altra informazione che esso deve passare alla subroutine, che è l'informazione di parametro, è costituita da un puntatore al posto in cui si trova il campo sorgente nella sua memoria temporanea di elaboratore; al posto in cui si trova il campo oggetto nella sua memoria temporanea di elaboratore; la dimensione di questi campi in bite; e, se necessario, un riferimento a una tabella di ricerca che dovrebbe essere utilizzata in trasformazioni senza algoritmi. In altre parole, il procedimento di analisi popola il database in termini di forme e strutture di messaggi e quali debbono essere tradotte e il programma di controllo interpreta queste come istruzioni per eseguire la traduzione.
Il programma di controllo esiste in un mondo in cui esso riceve stimoli. In effetti esso riceve dati in ingresso per operare su di essi.
Finora, il programma di controllo è scritto in modo da estrarre i dati dal Metadatabase e ricavare le istruzioni da questi dati in termini di quali metodi dovrebbero essere chiamati sotto quali stimoli. E' un'esigenza imperativa che non vi sia nulla nel programma di controllo che si riferisce a qualsiasi altra attività. Il programma di controllo legge il Metadatabase e utilizza le istruzioni trovate in esso per manipolare le strutture di dati che sono date.
Un metodo è quello che fa realmente la manipolazione. Per esempio, una delle istruzioni dovrebbe essere "copiare il terzo campo nell'ingresso sul sesto campo nell'uscita". Il programma di controllo localizza il terzo campo in termini di indirizzi di byte. Il programma di controllo ricerca anche la dimensione del terzo campo nel Metadatabase. La successiva operazione realizzata dal programma di controllo è quella di localizzare che il sesto campo nel messaggio oggetto si trova nel messaggio oggetto e la sua dimensione, in byte. La successiva operazione realizzata dal programma di controllo, secondo le direttive ricevute dal Metadatabase, consiste nell'eseguire un metodo che può essere, per esempio, "copy". Esso esegue questo metodo passando ad esso la posizione e la lunghezza dell'oggetto e della sorgente. Il metodo esegue la attività di copiatura dalla posizione sorgente alla posizione oggetto. Notare che il programma di controllo non effettua la copiatura. Tuttavia, esso chiama soltanto qualcosa (cioè, un metodo) il cui riferimento di funzione eseguibile è ricavato dalla parola "copy" che viene recuperata dal Metadatabase . Come per questo esempio, in ogni altro tipo di trasformazione lo stesso procedimento viene ripetuto esattamente. Il programma di controllo, sotto la direttiva delle istruzioni del Metadatabase, calcola la dimensione e la posizione dei dati sorgente oggetto e chiama il metodo appropriato, passandogli questa informazione. Le attività del programma di controllo sono limitate ai parametri di calcolo e ai metodi di chiamata. Esso "non conosce" ciò che i metodi fanno. In altre parole, esso è un programma neutrale.
Ogni volta che un metodo va in esecuzione, il metodo eseguito dice al programma di controllo se esso ha completato con successo quella fase operativa oppure no. Il programma di controllo esamina questo valore di ritorno per assicurarsi che ogni metodo ha avuto successo controllando pertanto che la trasformazione da sorgente a oggetto è stata completata con successo. Quando il programma di controllo ha eseguito tutti i metodi che esso aveva avuto la direttiva di eseguire, esso fornisce la struttura di uscita al ricevitore. Il programma di controllo quindi attende il successivo segnale di ingresso o stimolo.
In una struttura preferita di questo procedimento, viene riconosciuto che i tipi di messaggi che un dato traduttore riceve variano molto lentamente in confronto alla velocità alla quale vengono ricevuti i messaggi. In altre parole, un traduttore può sperare di ricevere molte copie di un data struttura di messaggi prima che la struttura di questo messaggio venga variata da un altro "sender". Il procedimento che l'elaboratore esegue nell 'esaminare un Metadatabase contenuto in file di disco assorbe molto tempo. Esso deve leggere una grande quantità di file di database il che, come è noto, è molto complicato e difficile. L'elaboratore deve eseguire in continuazione gli stessi calcoli ogni volta che viene ricevuto uno stimolo, sempre allo stesso modo: sia che sia il primo campo, sia che sia il quarto campo. Si è preferito costruire un programma di traduzione in cui tutti i calcoli delle posizioni e lunghezze e la risoluzione di tutti i metodi da nomi di testo in puntatori di funzione vengano eseguiti quando il programma di controllo inizia la prima elaborazione. Il programma di controllo memorizza quindi una versione abbreviata della sua parte di Metadatabase in una parte assegnata della memoria RAM. Ciò forma le schiere di dati riferiti prima. Il solo scopo di questa memoria memorizzata è di velocizzare il funzionamento del programma. E1 stato osservato che questa memoria memorizzata migliora la velocità operativa di circa un fattore di circa 1.000. Il concetto è simile all'impiego di una memoria "cache" nel procedimento di lettura e di scrittura nei file di disco, fatta eccezione che nella scrittura di "cache" non avviene alcuna manipolazione di dati. In una "cache" un elaboratore scrive e copia da essa istruzioni ripetitive. Qui, in questo caso, l'elaboratore non solo scrive nella memoria, che è ciò che fa la "cache", ma esso converte anche l 'informazione in una forma più direttamente utile. La creazione di questa versione del Metadabase avviene quando il programma inizia la prima elaborazione. Quando il programma di controllo riceve un messaggio in ingresso, uno stimolo, invece di riferirsi al Metadatabase reale, esso utilizza la struttura interna della memoria del programma di controllo, come è indicato in una versione abbreviata degli stessi dati che sono contenuti nel Metadatabase.
I metodi di traduzione sono scritti come subroutine che ricevono un insieme particolare di parametri. Ogni metodo esegue un particolare tipo di trasformazione. Per esempio, ve ne è uno che esegue la copiatura e uno che esegue la conversione di numeri in formato carattere in interi. Ciascuno dei metodi esegue un particolare tipo di manipolazione di tipi semplici di dati. Il numero di tipi semplici di dati è molto piccolo. Di conseguenza, viene fornito un insieme completo di tali metodi.
I metodi di applicazione sono differenti dai metodi di traduzione. Come primo definito, il traduttore è quello che ha questo requisito che tutti i metodi di traduzione assumono esattamente gli stessi parametri. Questo requisito consiste nel limitare il programma di controllo a interpretare le operazioni assunte dai metodi e mantenere la neutralità del programma di controllo. Questa neutralità è essenziale per questa invenzione poiché essa consente all'intero programma di venire modificato facilmente e espanso senza fare alcuna variazione sul programma di controllo. Ciò abilita la somma dei metodi a consentire che l'intero programma esegua le nuove funzioni senza informare (cioè, modificare) il programma di controllo.
Quando una subroutine viene eseguita in qualsiasi linguaggio di programma, è richiesta una struttura formale. Una parte di questa struttura formale è costituita dai parametri che vengono passati alle subroutine. Il programma chiamante deve passare esattamente gli stessi parametri che il programma chiamato si aspetta di ricevere altrimenti i risultati sono imprevedibili. In altre parole, il programma di controllo che esegue un particolare metodo di traduzione, e i parametri per i metodi di traduzione sono molti semplici e devono sempre essere gli stessi. Nel caso del traduttore ciò non crea un problema, poiché tutti i metodi di traduzione possibile richiedono gli stessi dati di parametro. Quindi si possono aggiungere nuovi metodi di traduzione per fare nuovi lavori impunemente. Ciò è dovuto al fatto che i parametri sono identici.
Nel caso di programmi per scopi generali non si possono mai prevedere quali parametri sono richiesti per un nuovo metodo. E' importante, tuttavia, che il programma di controllo sia in grado di accettare i nuovi metodi con i loro propri nuovi insiemi di parametri senza la necessità di cambiare il programma di controllo.
Questo problema viene risolto ponendo tutti i parametri richiesti da un metodo di applicazione in una struttura di dati. Ciò impone ai metodi di applicazione la necessità che essi ricevano tutti i loro parametri in forma di struttura. Nel caso di metodi di applicazione che sono ottenuti dal codice scritto per altri sistemi, ciò non può essere corretto. Tuttavia, questo è un semplice problema per un programma "wrapper" per convertire i dati in una struttura in parametri separati. La struttura di parametri richiesta da un metodo di applicazione in una struttura di dati che può essere creata mediante un programma di traduzione.
Per risolvere questo problema i metodi di applicazione ottengono differenti requisiti. I primi metodi di applicazione sono chiamati differentemente dai metodi di traduzione. Invece di dare ai metodi di applicazione i loro parametri, questi parametri vengono memorizzati in una tabella di database. Ogni informazione che un elaboratore può contenere, esso la può contenere in una struttura di dati. Così, in un programma ordinario di elaboratore un programma può chiamare una subroutine ordinaria con i suoi parametri separati. In questo caso, il programma di applicazione viene chiamato, esso si riferisce al database per trovare un parametro che è una struttura di dati che contiene tutti i parametri che il metodo richiede. Non importa quale sia il metodo richiedente. In altre parole, non vi è limitazione all'idea di una struttura in quanto opposta a blocchi separati di dati. I metodi di applicazione hanno ciascuno una necessità che i loro parametri siano nella forma di una struttura memorizzata. Il solo limite per il metodo di applicazione è come sono predisposti i parametri.
Applicando le tecniche di un traduttore al metodo di applicazione, noi costruiamo un programma di applicazione. Come prima operazione viene deciso che non vi è necessità di un programma di applicazione. Il programma elenca tutti i messaggi di stimolo che il programma di applicazione riceverà. Come nel traduttore, ciascuno degli stimoli va in una tabella delle sorgenti. Un elenco è costituito da ogni metodo operativo di applicazione che eseguirà l'operazione richiesta e ogni requisito di ordinamento. Ciascuna delle chiamate di questi metodi di applicazione viene registrata come una riga nella tabella oggetto. In altre parole, ciascuna di queste è un nuovo messaggio. Ciascuno di questi oggetti è un messaggio speciale che è costituito da due parti (vedi figura 6). La prima parte del messaggio è sempre un riferimento a un metodo di applicazione. La seconda parte è un riferimento alla struttura di parametri che il metodo richiede. La successiva operazione consiste nel creare un messaggio oggetto dagli stimoli. Ciò viene fatto allo stesso modo come col traduttore che sta da solo: identificando quale parte del messaggio in arrivo o sorgente crea ciascuno dei parametri, e noi utilizziamo uno dei nostri metodi che è "predisporre proprio un valore". In altre parole, lo scopo di creare il nome della funzione del metodo all'inizio del messaggio, viene utilizzato un metodo che predispone un valore da una tabella di ricerca. (Ciò poiché noi non ci aspettiamo di vedere nessuna parte del messaggio di stimolo che si riferisce ai nomi di funzione di metodo) . Finora tutto quello che succede è che il programma si comporta esattamente come un traduttore. Quindi, invece di fornire il messaggio a un ricevitore come messaggio oggetto, che è ciò che fa un traduttore, un nuovo blocco del programma di controllo (noto come un "server Shell") lo utilizza internamente. Esso risolve il riferimento di metodo allo stesso modo come il traduttore risolve il suoi metodi di traduzione. Così, esso converte il riferimento in un puntatore di funzione e quindi chiama il metodo passando un riferimento di puntatore al resto del messaggio come parametro. Il programma di controllo verifica quindi i codici di ritorno come nel traduttore per completare il procedimento, come prima.
Annesse come un appendice sono le realizzazioni preferite della documentazione di progetto del traduttore e delle "server Shells" che comprendono l'applicazione del programma di scrittura. I diagrammi sono diagrammi di flusso di stile Gane e Sarson con annesse ad essi le descrizioni .
Il programma di controllo è un programma che chiama le operazioni di elaborazione di base nella forma di metodi. Esso chiama i database per dire loro o dare loro istruzioni se questi metodi debbono essere utilizzati in quali circostanze di dati in ingresso. Le operazioni di base vengono create fuori dal programma di controllo e le nuove possono essere sempre aggiunte senza variare il programma di controllo. Pertanto, ogni variazione fatta sul programma deve essere fatta nei metodi o nei database che i metodi utilizzano. Questo procedimento elimina quasi tutta la necessità di riscrivere i programmi.
Claims (20)
- RIVENDICAZIONI 1. Metodo di programma di elaboratore "late binding" per agire sui messaggi sorgente nella predisposizione di un elaboratore del tipo avente una memoria temporanea e in cui il programma traduce un messaggio sorgente predeterminato in un messaggio oggetto predeterminato, il programma "late binding" comprendendo: (a) fornire un programma di controllo; (b) fornire i messaggi sorgente al programma di controllo ; (c) fornire un database,· (d) memorizzare istruzioni e dati nel database; (e) fare in modo che il programma di controllo acceda al database; (f) fare in modo che il programma di controllo risponda alle istruzioni e ai dati memorizzati nel database; (g) fornire almeno un metodo di traduzione o un programma di subroutine; (h) fare in modo che il programma di controllo, rispondente alle istruzioni memorizzate nel database, chiami il programma di metodo di traduzione ; (i) fare in modo che il programma di metodo di traduzione, in risposta alle istruzioni nel database, traduca almeno una parte del messaggio ricevuto; e (j) limitare il programma di controllo a rispondere al messaggio sorgente, accedere al database, e eseguire il programma di metodo di traduzione in risposta alle istruzioni e ai dati memorizzati nel database.
- 2. Programma "late binding" della rivendicazione 1 in cui l'operazione di memorizzare le istruzioni e i dati nel database include memorizzare le istruzioni di chiamata del programma di metodo di traduzione che devono essere poste in atto mediante il programma di controllo; e l'operazione di fornire il programma di metodo di traduzione include la fornitura di un programma di metodo di traduzione per operare almeno su una parte del messaggio sorgente.
- 3. Programma "late binding" della rivendicazione 2 in cui l'operazione di fornire le istruzioni e i dati al database include la fornitura di una stringa unica di caratteri o di nomi di funzione per ogni programma di metodo di applicazione; fornire il programma di controllo con una funzione per convertire i nomi di funzioni in riferimenti di funzioni eseguibili.
- 4. Programma "late binding" della rivendicazione 3 in cui l'operazione di far si che il programma di controllo risponda alle istruzioni e ai dati nel database include la determinazione che il programma di controllo risponda alle istruzioni e ai dati all'atto dell'avviamento del programma "late binding".
- 5. Programma "late binding" della rivendicazione 4 in cui l'operazione di far si che il programma di controllo risponda alle istruzioni nel database, all'atto dell'avviamento del programma "late binding", fa si che il programma di controllo acceda al database in modo da rimuovere dal database i nomi di funzione.
- 6. Programma "late binding" della rivendicazione 5 in cui l'operazione di far si che il programma di controllo risponda a una istruzione nel database, fa si che il programma di controllo controlli la sequenza delle operazioni di programmazione sotto la direzione delle istruzioni e dei dati memorizzati nel database.
- 7. Programma "late binding" della rivendicazione 6 in cui l'operazione di memorizzazione dei dati e delle istruzioni nel database include la fornitura di tabelle ordinate nel campo dei valori possibili e un meccanismo generalizzato per ricercare la tabella per impiego con traduzioni senza algoritmi.
- 8. Programma "late binding" della rivendicazione 7 in cui l'operazione di fornire un programma di metodo di traduzione include la fornitura di una molteplicità di programmi di metodo di traduzione; l'operazione di eseguire un programma di metodo di traduzione include la determinazione che il programma di controllo acceda al database per ottenere un riferimento alla posizione dei dati di sorgente, un riferimento alla posizione dei dati oggetto in cui i dati sorgente tradotti debbono essere scritti, le massime lunghezze di ogni dato sorgente e ogni dato oggetto, un riferimento a ogni tabella di ricerca definita nelle istruzioni nel database.
- 9. Programma "late binding" della rivendicazione 8 in cui l'operazione di traduzione comprende le operazioni di copiare (senza giustificazione a sinistra o a destra come determinato dai dati sorgente e oggetto); convertire da formati carattere a numeri interi (e viceversa) ; convertire da formati carattere a numeri in virgola mobile (e viceversa); convertire da formati a virgola mobile a formati in numeri interi (e viceversa);'ricercare il file dei dati di ingresso nella tabella dei valori (risultato di uscita come caratteri, interi, o a virgola mobile) .
- 10. Programma "late binding" della rivendicazione 8 in cui l'operazione di chiamare il programma di metodo di traduzione include la fornitura dal database delle istruzioni e dei dati memorizzati precedentemente comprendenti la fornitura di un riferimento al codice di programma di metodo di traduzione; i dati richiesti come parametri dal programma di metodo di traduzione, e i dati da restituire all'istruzione chiamante dal database mediante il programma di metodo di traduzione .
- 11. Programma "late binding" della rivendicazione 10 in cui l'operazione di fornire un riferimento al codice di programma di metodo di traduzione comprende la fornitura di un nome di funzione memorizzato nel database.
- 12. Programma "late binding" della rivendicazione 11 in cui l'operazione di far si che il programma di controllo risponda alle istruzioni e ai dati comprenda inoltre il programma di controllo che ricava i puntatori di funzione dai nomi di funzione memorizzati nel database .
- 13. Programma "late binding" della rivendicazione 12 in cui nell'operazione di far si che il programma di metodo di traduzione traduca, il programma di metodo di traduzione acceda al database .
- 14. Programma "late binding" della rivendicazione 10 include il fatto di avere un programma di metodo di traduzione che restituisce i dati al programma di controllo indicanti successo o errore nella traduzione dei dati sorgente nei dati oggetto.
- 15. Programma "late binding" della rivendicazione 13 includente la richiesta che i parametri dei metodi di traduzione siano fissati.
- 16. Programma "late binding" della rivendicazione 13 includente la richiesta che la struttura dei messaggi oggetto e sorgente sia predeterminata .
- 17. Programma "late binding" della rivendicazione 9 in cui l'operazione di tradurre comprende inoltre: copiare, byte per byte, con giustificazione a destra o a sinistra,· ricercare il valore sorgente in un tabella ordinata e predisporre l'oggetto nel valore corrispondente al valore sorgente; ricercare il valore sorgente in una tabella ordinata e predisporre l'oggetto nel valore corrispondente al valore sorgente, convertito in un intero corto; ricercare il valore sorgente in una tabella ordinata e predisporre l'oggetto nel valore corrispondente al valore sorgente, convertito a un intero,· ricercare il valore sorgente in una tabella ordinata e predisporre l'oggetto nel valore corrispondente al valore sorgente convertito a un intero lungo; ricercare il valore sorgente in una tabella ordinata e predisporre l'oggetto nel valore corrispondente al valore sorgente, convertito in un numero a virgola mobile; ricercare il valore sorgente in una tabella ordinata e predisporre l'oggetto nel valore corrispondente al valore sorgente, convertito in un numero a virgola mobile a doppia precisione; convertire da caratteri (contenenti soltanto caratteri numerici; separatori opzionali per migliaia e spazi) nel valore intero corto corrispondente; convertire da caratteri (contenenti soltanto caratteri numerici, separatori opzionali per migliaia e spazi) nel valore intero corrispondente; convertire da caratteri (contenenti soltanto caratteri numerici, separatori opzionali per migliaia e spazi) nel valore intero lungo corrispondente; convertire da caratteri (contenenti soltanto caratteri numerici, separatori opzionali per migliaia, un carattere decimale opzionale e spazi) nel valore a virgola mobile corrispondente; convertire da caratteri (contenenti soltanto caratteri numerici, separatori opzionali per migliaia, e un carattere decimale opzionale e spazi) nel valore a virgola mobile a doppia precisione corrispondente,· convertire da un intero corto a un campo carattere; convertire da un intero a un campo carattere; convertire da un intero lungo a un campo carattere; convertire da un numero a virgola mobile a un campo carattere; convertire da un numero a virgola mobile a doppia precisione in un campo carattere; convertire da un numero a virgola mobile a doppia precisione in un campo PICTURE, come definito nel linguaggio di programmazione COBOL; convertire da un campo PICTURE come definito nel linguaggio di programmazione COBOL in un numero a virgola mobile a doppia precisione predisporre un valore arbitrario nel campo oggetto; sommare il valore sorgente al campo oggetto intero corto; sommare il valore sorgente al campo oggetto intero; sommare il valore sorgente al campo oggetto intero lungo; sommare il valore sorgente al campo oggetto, a, mobile; sommare il valore sorgente al campo oggetto a virgola mobile a doppia precisione; sottrarre il valore sorgente dal campo oggetto intero corto; sottrarre il valore sorgente dal campo oggetto intero; sottrarre il valore sorgente dal campo oggetto intero lungo; sottrarre il valore sorgente dal campo oggetto a virgola mobile; sottrarre il valore sorgente dal campo oggetto a virgola mobile a doppia precisione; moltiplicare il valore sorgente per il campo oggetto intero corto,· moltiplicare il valore sorgente per il campo oggetto intero; moltiplicare il valore sorgente per il campo oggetto intero lungo; moltiplicare il valore sorgente per il campo oggetto a virgola mobile; moltiplicare il valore sorgente per il campo oggetto a virgola mobile a doppia precisione; dividere il valore sorgente per il campo oggetto intero corto; dividere il valore sorgente per il campo oggetto intero; dividere il valore sorgente per il campo oggetto intero lungo; dividere il valore sorgente per il campo oggetto a virgola mobile; dividere il valore sorgente per il campo oggetto a virgola mobile a doppia precisione; applicare un'operazione logica, AND a bit tra il campo sorgente e il campo oggetto; applicare un operazione logica, a bit INCLUSIVE OR tra il campo sorgente e il campo oggetto; applicare un'operazione logica a bit EXCLUSIVE OR tra il campo sorgente e il campo oggetto.
- 18. Metodo di programma di elaboratore "late binding" per creare programmi in cui vengono forniti al programma di elaboratore "late binding" stimoli di sorgente in cui ogni stimolo è del tipo comprendente un insieme di un numero predeterminato di eventi e una di un insieme predeterminato di strutture di dati, e in cui il programma di elaboratore "late binding" è del tipo che può chiamare almeno una subroutine (cioè, un "programma di metodo di applicazione"), il metodo di programma di elaboratore "late binding" comprendendo : (a) fornire un programma di controllo; (b) fornire gli stimoli di sorgente al programma di controllo; (c) fornire un database; (d) memorizzare istruzioni, dati e le strutture di ogni stimolo di sorgente da attivare nel database; (e) fare in modo che il programma di controllo acceda al database,· (f) fare in modo che il programma di controllo risponda alle istruzioni e ai dati memorizzati nel database; (g) fare in modo che il programma di controllo, in risposta agli stimoli e alle istruzioni e ai dati nel database, sia in grado di 21. Programma "late binding" come descritto nella rivendicazione 20 in cui l'operazione di memorizzare include la memorizzazione delle strutture di parametri nel database. 22. Programma "late binding" come descritto nella rivendicazione 20 in cui l'operazione della trasmissione da parte del programma di controllo dei parametri comprende inoltre le istruzioni e i dati recuperati dal programma di controllo determinanti quali di ogni programma di metodo di applicazione predeterminata debbono essere chiamati . 23. Programma "late binding" come descritto nella rivendicazione 20 in cui l'operazione di chiamare include la fornitura di parametri ai programmi di metodo di applicazione. 24. Programma "late binding" come descritto nella rivendicazione 20 comprendente inoltre la fornitura di "wrapper"; la fornitura del programma di controllo con la capacità di chiamare almeno un "wrapper"; l'utilizzazione dei "wrapper" per chiamare i programmi di metodo di applicazione o altri "wrapper". chiamare almeno un programma di metodo di applicazione; e (h) limitare il programma di controllo a rispondere agli stimoli di sorgente, accedere al database, e rispondere alle istruzioni e ai dati memorizzati nel database.
- 19. Programma "late binding" come descritto nella rivendicazione 18 comprendente inoltre la fornitura di un insieme di programmi predeterminati di metodo di applicazione.
- 20. Programma "late binding" come descritto nella rivendicazione 19 che comprende inoltre la memorizzazione nel database dei parametri di tutti i programmi predeterminati di metodi di applicazione; e in cui l'operazione di far si che il programma di controllo risponda agli stimoli di sorgente comprende che il programma di controllo trasmetta sotto la direzione delle istruzioni dei dati recuperati dal programma di controllo dal database, strutture predeterminate di parametri ai programmi predeterminati di metodo di applicazione . 25. Programma "late binding" come descritto nella rivendicazione 20 in cui l'operazione di memorizzare le istruzioni e i dati nel database include la memorizzazione della chiamata di metodo di applicazione; e il programma di controllo in risposta agli stimoli e alle informazioni ottenute dal database essendo in grado di chiamare almeno un programma predeterminato di metodo di applicazione . 26. Programma "late binding" come descritto nella rivendicazione 24 in cui l'operazione di fornire istruzioni e dati al database include la fornitura di una stringa unica di caratteri o di nomi di funzione per ogni programma di metodo di applicazione o "wrapper"; la fornitura al programma di controllo di una funzione per convertire i nomi di funzione in puntatori di funzione . 27. Programma "late binding" come descritto nella rivendicazione 26 che comprende inoltre la fornitura di mezzi per tradurre i dati predeterminati degli stimoli in strutture predeterminate di parametri del programma di metodo di applicazione e "wrapper". 28. Programma "late binding" come descritto nella rivendicazione 25 che comprende inoltre l'utilizzazione del programma di controllo per controllare la sequenza della chiamata dei programmi di metodo di applicazione sotto la direzione delle istruzioni e dei dati memorizzati nel database. 29. Programma "late binding" come descritto nella rivendicazione 27 in cui l'operazione di memorizzare i dati e le istruzioni nel database include la fornitura di tabelle ordinate del campo di valori possibili e un meccanismo generalizzato per ricercare la tabella per traduzioni senza algoritmi . 30. Programma "late binding" come descritto nella rivendicazione 25 in cui l'operazione di fornire un programma di metodo di applicazione include la fornitura di una molteplicità di programmi di metodo di applicazione; l'operazione di eseguire un programma di metodo di applicazione include il far si che il programma di controllo acceda al database onde ottenere la struttura di parametri per il programma di metodo di applicazione, un riferimento alla posizione dei "wrapper" include la fornitura dai database di istruzione e dati precedentemente memorizzati comprendenti la fornitura di un riferimento al codice di programma di metodo di applicazione o codice "wrapper"; i dati richiesti come parametri dal programma di metodo di applicazione o "wrapper" ; e i dati da restituire al programma di controllo mediante il programma di metodo di applicazione o "wrapper". 33. Programma "late binding" della rivendicazione 26 in cui l'operazione di fornire un riferimento al programma di metodo di applicazione comprende la fornitura di un nome di funzione memorizzato nel database. 34. Programma "late binding" della rivendicazione 26 che include il fatto che ogni programma di metodo di applicazione debba fornire indici al programma di controllo e in cui gli indici indicano il successo o un errore dell'operazione di quel programma di metodo di applicazione . 35. Programma "late binding" della rivendicazione 34, l'operazione di fornire indici dati di stimolo, un riferimento alla posizione dei parametri di metodo di applicazione che vi debbono essere scritti, le massime lunghezze di ogni elemento della struttura di stimoli, la massima lunghezza dei dati di stimoli e la struttura dei parametri, e un riferimento a ogni tabella di ricerca definita nelle istruzioni nel data base. 31. Programma "late binding" come descritto nella rivendicazione 28 in cui l'operazione di tradurre comprende le operazioni di copiare (con giustificazione a sinistra o a destra, come determinato dai dati di stimolo e dalla struttura dai parametri del metodo di applicazione); convertire da formati caratteri a numerici interi (e viceversa); convertire da formati carattere a numerici a virgola mobile (e viceversa),· convertire da formati numerici a virgola mobile a numerici interi (e viceversa); ricercare i dati di ingresso nella tabella di valori (risultato di uscita come caratteri, interi, o a virgola mobile) . 32. Programma "late binding" come descritto nella rivendicazione 26 in cui l'operazione di chiamare un programma di metodo di applicazione o include, dove il programma di controllo chiama il programma di metodo di applicazione, passando gli indici direttamente al programma di controllo dal programma di metodo di applicazione. 36. Programma "late binding" della rivendicazione 34, l'operazione di fornire gli indici include dove almeno un "wrapper" chiama il programma di metodo di applicazione, passando gli indici attraverso il "wrapper" al programma di controllo dal programma di metodo di applicazione. 37. Programma "late binding" della rivendicazione 31 in cui l'operazione di tradurre comprende inoltre: copiare, byte per byte, con giustificazione a destra o a sinistra; ricercare il valore sorgente in un tabella ordinata e predisporre l'oggetto nel valore corrispondente al valore sorgente; ricercare il valore sorgente in una tabella ordinata e predisporre l'oggetto nel valore corrispondente al valore sorgente, convertito in un intero corto; ricercare il valore sorgente in una tabella ordinata e predisporre l'oggetto nel valore corrispondente al valore sorgente, convertito in un intero,· ricercare il valore sorgente in una tabella ordinata e predisporre l'oggetto nel valore corrispondente al valore sorgente, convertito a un intero lungo; ricercare il valore sorgente in una tabella ordinata e predisporre l'oggetto nel valore corrispondente al valore sorgente, convertito in un numero a virgola mobile,· ricercare il valore sorgente in una tabella ordinata e predisporre l'oggetto nel valore corrispondente al valore sorgente, convertito in un numero a virgola mobile a doppia precisione,· convertire da caratteri (contenenti soltanto caratteri numerici, separatori opzionali per migliaia e spazi) nel valore intero corto corrispondente; convertire da caratteri (contenenti soltanto caratteri numerici, separatori opzionali per migliaia e spazi) nel valore intero corrispondente; convertire da caratteri (contenenti soltanto caratteri numerici, separatori opzionali per migliaia e spazi) nel valore intero lungo corrispondente; convertire da caratteri (contenenti soltanto caratteri numerici, separatori opzionali per migliaia, un carattere decimale opzionale e spazi) nel valore a virgola mobile corrispondente,· convertire da caratteri (contenenti soltanto caratteri numerici, separatori opzionali per migliaia, e un carattere decimale opzionale e spazi) nel valore a virgola mobile a doppia precisione corrispondente,· convertire da un intero corto a un campo carattere; convertire da un intero a un campo carattere; convertire da un intero lungo a un campo carattere; convertire da un numero a virgola mobile a un campo carattere; convertire da un numero a virgola mobile a doppia precisione a un campo carattere ; convertire da un numero a virgola mobile a doppia precisione a un campo PICTURE, come definito nel linguaggio di programmazione COBOL; convertire da un campo PICTURE, come definito nel linguaggio di programmazione COBOL in un numero a virgola mobile a doppia precisione,· predisporre un valore arbitrario nel campo oggetto; sommare il valore sorgente al campo oggetto intero corto; sommare il valore sorgente al campo oggetto intero,- sommare il valore sorgente al campo oggetto intero lungo,· sommare il valore sorgente al campo oggetto, a virgola mobile,· sommare il valore sorgente al campo oggetto a virgola mobile a doppia precisione,· sottrarre il valore sorgente dal campo oggetto intero corto,· sottrarre il valore sorgente dal campo oggetto intero; sottrarre il valore sorgente dal campo oggetto intero lungo; sottrarre il valore sorgente dal campo oggetto a virgola mobile; sottrarre il valore sorgente dal campo oggetto a virgola mobile a doppia precisione moltiplicare il valore sorgente per il campo oggetto intero corto; moltiplicare il valore sorgente per il campo oggetto intero; moltiplicare il valore sorgente per il campo oggetto intero lungo; moltiplicare il valore sorgente per il campo oggetto a virgola mobile; moltiplicare il valore sorgente per il campo oggetto a virgola mobile a doppia precisione; dividere il valore sorgente per il campo oggetto intero corto; dividere il valore sorgente per il campo oggetto intero,· dividere il valore sorgente per il campo oggetto intero lungo,· dividere il valore sorgente per il campo oggetto a virgola mobile; dividere il valore sorgente per il campo oggetto a virgola mobile a doppia precisione; applicare un'operazione logica, AND a bit tra il campo sorgente e il campo oggetto; applicare un operazione logica, a bit INCLUSIVE OR tra il campo sorgente e il campo oggetto; applicare un'operazione logica a bit EXCLUSIVE OR tra il campo sorgente e il campo sorgente e il campo oggetto . 38. Metodo di scrittura di un programma di traduzione per tradurre un messaggio sorgente in un messaggio oggetto che comprende: (a) identificare le caratteristiche e i parametri del messaggio oggetto; (b) identificare le caratteristiche del messaggio sorgente; (c) ricavare i requisiti per tradurre il messaggio sorgente nel messaggio oggetto; (d) fornire un database; (e) memorizzare nel database i dati e le istruzioni corrispondenti alle operazioni necessarie a tradurre il messaggio sorgente nel messaggio oggetto; (f) scrivere un programma di metodo di traduzione per ogni trasformazione di ogni tipo di elemento del messaggio sorgente in ogni tipo di elemento del messaggio oggetto; (g) memorizzare un riferimento nel database per i programmi di metodo di traduzione; (h) memorizzare le istruzione nel database identificanti quali programmi di metodo di traduzione debbono essere chiamati; e (i) limitare il programma di controllo in modo da essere controllato in ogni momento mediante le istruzioni e i dati nel database; e (j) far si che il programma di controllo ottenga dal database, al ricevimento di un messaggio sorgente, le istruzioni nel database per dirigere il programma di controllo e chiamare le determinate subroutine di metodo di traduzione per tradurre il messaggio sorgente nel messaggio oggetto . 39. Metodo della rivendicazione 38 comprendente inoltre la determinazione che il programma di controllo fornisca il messaggio sorgente tradotto al ricevitore. 40. Metodo della rivendicazione 39 in cui l'operazione di identificare le caratteristiche e i parametri del messaggio oggetto e sorgente include l'identificazione degli elementi più semplici di dati del messaggio oggetto e del messaggio sorgente. 41. Metodo della rivendicazione 40 in cui l'operazione di ricavare la traduzione include la determinazione del risultato di ogni traduzione di ogni elemento semplice del messaggio sorgente nel messaggio oggetto 42. Metodo della rivendicazione 41 in cui l'operazione di ricavare la traduzione include inoltre la determinazione delle operazioni di traduzione da effettuare da parte del programma di traduzione . 43 . Metodo della rivendicazione 42 in cui l'operazione di ricavare la traduzione comprende inoltre la determinazione della sequenza delle operazioni di traduzione. 44. Metodo della rivendicazione 43 i cui l'operazione di memorizzazione comprende la memorizzazione delle operazioni di traduzione; l'ingresso dei dati e delle istruzioni in tabelle; l'ingresso nella posizione del programma del metodo di traduzione e della sequenza di chiamata del programma di metodo di traduzione. 45. Metodo della rivendicazione 44 comprendente inoltre la determinazione che il programma di controllo, all'avviamento, crei un'area nella memoria temporanea dell'elaboratore; la memorizzazione di una tabella contenente i dati utilizzati per identificare tipi differenti di messaggi di sorgente,· la memorizzazione di puntatori nell'area temporanea di memoria per identificare la posizione dei campi sorgente nel messaggio sorgente; la memorizzazione di tabelle di ricerca nell'area di memoria temporanea per trasformazioni senza algoritmi; la memorizzazione delle istruzioni nell'area di memoria temporanea identificanti quale programma di metodo di traduzione deve essere chiamato; la memorizzazione nell'aria di memoria temporanea della sequenza delle operazioni con cui dirigere il programma di controllo . 46. Metodo di scrittura di un programma di applicazione comprendente: (a) elencare tutti i messaggi di stimolo che il programma di applicazione deve ricevere; (j) ricavare i requisiti per tradurre il messaggio sorgente nei messaggi oggetto; (k) memorizzare nel database i dati e le istruzioni corrispondenti alle operazioni necessarie a tradurre il messaggio sorgente nel messaggio oggetto; (l) ottenere un programma di metodo di applicazione per ciascuna operazione di applicazione; (m) memorizzare nel database le istruzioni identificanti quale programma di metodo di applicazione deve essere chiamato; (n) determinare istruzioni nel database in modo che il programma di controllo chiami i programmi di metodo di applicazione e crei i parametri associati a ogni programma di metodo di applicazione dagli elementi degli stimoli di sorgente; (o) limitare il programma di controllo in modo da essere controllato in ogni momento mediante le istruzioni e i dati nel database ;e (p) far si che il programma di controllo chiami il database al ricevimento di un messaggio sorgente; che le istruzioni nel database (b) fornire un elenco di ogni operazione che ogni programma di metodo di traduzione deve eseguire e la sequenza delle operazioni; (c) fornire un database; (d) memorizzare gli stimoli in una tabella nel database; (e) memorizzare l'istruzione per eseguire il programma di metodo di applicazione nel database come un messaggio comprendente un riferimento al -programma di metodo di applicazione e un riferimento ai parametri che il programma di metodo di applicazione utilizzerà; (f) Determinare ogni stimolo da ricevere da parte del programma di applicazione e denominare gli stimoli come un messaggio di sorgente; (g) determinare le strutture di parametri per ciascuno dei programmi di metodo di applicazione da eseguire e denominare ciascuno come un messaggio oggetto; (h) identificare le caratteristiche e i parametri di ogni messaggio oggetto; (i) identificare le caratteristiche del messaggio sorgente; dirigano il programma di controllo e chiamino i programmi predeterminati di metodo di applicazione per tradurre il messaggio sorgente nel messaggio oggetto e forniscano il messaggio oggetto come almeno una parte del messaggio completo. 47 . Metodo della rivendicazione 46 in cui l’operazione di ottenere comprende la scrittura di un programma di metodo di applicazione. 48. Metodo della rivendicazione 46 in cui l'operazione di ottenere comprende la copiatura di un programma di metodo di applicazione.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/161,229 US5842205A (en) | 1993-12-02 | 1993-12-02 | Method and process of inter-machine communication and generalized method for program preparation therefor |
Publications (3)
| Publication Number | Publication Date |
|---|---|
| ITRM940789A0 ITRM940789A0 (it) | 1994-12-02 |
| ITRM940789A1 true ITRM940789A1 (it) | 1996-06-02 |
| IT1280713B1 IT1280713B1 (it) | 1998-02-06 |
Family
ID=22580377
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| IT94RM000789A IT1280713B1 (it) | 1993-12-02 | 1994-12-02 | Metodo e procedimento di comunicazione inter-macchina e metodo generalizzato per la preparazione di programmi per esso |
Country Status (16)
| Country | Link |
|---|---|
| US (1) | US5842205A (it) |
| EP (1) | EP0746814A4 (it) |
| JP (1) | JPH09509271A (it) |
| KR (1) | KR960706656A (it) |
| CN (1) | CN1142870A (it) |
| AU (1) | AU1260095A (it) |
| BE (1) | BE1008621A3 (it) |
| CA (1) | CA2177378A1 (it) |
| FR (1) | FR2713368B1 (it) |
| GB (1) | GB2298066A (it) |
| IE (1) | IE940949A1 (it) |
| IL (1) | IL111637A0 (it) |
| IT (1) | IT1280713B1 (it) |
| SG (1) | SG96153A1 (it) |
| WO (1) | WO1995016235A1 (it) |
| ZA (1) | ZA949423B (it) |
Families Citing this family (21)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5893911A (en) * | 1996-04-17 | 1999-04-13 | Neon Software, Inc. | Method for defining and applying rules for message distribution for transaction processing in a distributed application |
| US5916307A (en) * | 1996-06-05 | 1999-06-29 | New Era Of Networks, Inc. | Method and structure for balanced queue communication between nodes in a distributed computing application |
| US6523172B1 (en) | 1998-12-17 | 2003-02-18 | Evolutionary Technologies International, Inc. | Parser translator system and method |
| US7590575B2 (en) * | 1999-03-08 | 2009-09-15 | Microsoft Corporation | Method and apparatus for converting, formatting, and displaying currency values |
| US6411963B1 (en) | 1999-07-09 | 2002-06-25 | Junot Systems, Inc. | External system interface method and system |
| US7328233B2 (en) * | 2000-01-19 | 2008-02-05 | Corybant, Inc. | Method and apparatus for implementing an active information model |
| US6681383B1 (en) * | 2000-04-04 | 2004-01-20 | Sosy, Inc. | Automatic software production system |
| US7334216B2 (en) * | 2000-04-04 | 2008-02-19 | Sosy, Inc. | Method and apparatus for automatic generation of information system user interfaces |
| US6732089B1 (en) * | 2000-05-09 | 2004-05-04 | International Business Machines Corporation | SQL access to system specific data |
| US7150010B1 (en) | 2000-07-06 | 2006-12-12 | Microsoft Corporation | Unification of a programming language and a definition language |
| US7100153B1 (en) * | 2000-07-06 | 2006-08-29 | Microsoft Corporation | Compiler generation of a late binding interface implementation |
| US20020143823A1 (en) * | 2001-01-19 | 2002-10-03 | Stevens Mark A. | Conversion system for translating structured documents into multiple target formats |
| WO2004046895A2 (en) * | 2002-11-20 | 2004-06-03 | Corybant, Inc. | Interactive voice enabled email notification and alert system and method |
| US7421322B1 (en) | 2004-04-30 | 2008-09-02 | Carfax, Inc. | System and method for automatic identification of vehicle identification number |
| US20080077418A1 (en) * | 2006-09-27 | 2008-03-27 | Andrew Coleman | Method, system, and program product for analyzing how a procedure will be applied to an electronic document |
| US9646308B1 (en) | 2008-06-06 | 2017-05-09 | Carfax, Inc. | Tool for selling and purchasing vehicle history reports |
| GB2471463A (en) * | 2009-06-29 | 2011-01-05 | Nokia Corp | Software component wrappers for multimedia subcomponents that control the performance of the multimedia function of the subcomponents. |
| US9285799B2 (en) * | 2009-11-23 | 2016-03-15 | Fisher-Rosemount Systems, Inc. | Methods and apparatus to dynamically display data associated with a process control system |
| CN102123486B (zh) * | 2010-01-11 | 2014-07-09 | 电信科学技术研究院 | 数据发送及终端操作方法、系统和设备 |
| CN102799423B (zh) * | 2011-05-27 | 2015-07-29 | 深圳市金蝶中间件有限公司 | Jsf中执行动态方法的方法及装置 |
| US9465591B2 (en) * | 2012-12-17 | 2016-10-11 | Unisys Corporation | Syntax language generator for compiler validation |
Family Cites Families (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS59205605A (ja) * | 1983-05-07 | 1984-11-21 | Hitachi Ltd | シ−ケンス制御装置 |
| US4841441A (en) * | 1984-08-01 | 1989-06-20 | Adata Software Limited | Method of creating a computer system |
| US4729096A (en) * | 1984-10-24 | 1988-03-01 | International Business Machines Corporation | Method and apparatus for generating a translator program for a compiler/interpreter and for testing the resulting translator program |
| US4821180A (en) * | 1985-02-25 | 1989-04-11 | Itt Corporation | Device interface controller for intercepting communication between a microcomputer and peripheral devices to control data transfers |
| US4736320A (en) * | 1985-10-08 | 1988-04-05 | Foxboro Company | Computer language structure for process control applications, and translator therefor |
| US5121497A (en) * | 1986-03-10 | 1992-06-09 | International Business Machines Corporation | Automatic generation of executable computer code which commands another program to perform a task and operator modification of the generated executable computer code |
| US5142681A (en) * | 1986-07-07 | 1992-08-25 | International Business Machines Corporation | APL-to-Fortran translators |
| US4791558A (en) * | 1987-02-13 | 1988-12-13 | International Business Machines Corporation | System and method for generating an object module in a first format and then converting the first format into a format which is loadable into a selected computer |
| US4939668A (en) * | 1987-08-24 | 1990-07-03 | International Business Machines Corp. | System for designing intercommunications networks |
| US5175828A (en) * | 1989-02-13 | 1992-12-29 | Hewlett-Packard Company | Method and apparatus for dynamically linking subprogram to main program using tabled procedure name comparison |
| US5159687A (en) * | 1989-11-14 | 1992-10-27 | Caseworks, Inc. | Method and apparatus for generating program code files |
| US5142469A (en) * | 1990-03-29 | 1992-08-25 | Ge Fanuc Automation North America, Inc. | Method for converting a programmable logic controller hardware configuration and corresponding control program for use on a first programmable logic controller to use on a second programmable logic controller |
-
1993
- 1993-12-02 US US08/161,229 patent/US5842205A/en not_active Expired - Lifetime
-
1994
- 1994-11-14 IL IL11163794A patent/IL111637A0/xx unknown
- 1994-11-21 CN CN94194917A patent/CN1142870A/zh active Pending
- 1994-11-21 AU AU12600/95A patent/AU1260095A/en not_active Abandoned
- 1994-11-21 SG SG9600921A patent/SG96153A1/en unknown
- 1994-11-21 CA CA002177378A patent/CA2177378A1/en not_active Abandoned
- 1994-11-21 GB GB9610339A patent/GB2298066A/en not_active Withdrawn
- 1994-11-21 KR KR1019960702855A patent/KR960706656A/ko not_active Ceased
- 1994-11-21 JP JP7516210A patent/JPH09509271A/ja active Pending
- 1994-11-21 WO PCT/US1994/013567 patent/WO1995016235A1/en not_active Ceased
- 1994-11-21 EP EP95903601A patent/EP0746814A4/en not_active Withdrawn
- 1994-11-28 ZA ZA949423A patent/ZA949423B/xx unknown
- 1994-12-01 IE IE940949A patent/IE940949A1/en not_active IP Right Cessation
- 1994-12-01 BE BE9401092A patent/BE1008621A3/fr not_active IP Right Cessation
- 1994-12-01 FR FR9414454A patent/FR2713368B1/fr not_active Expired - Fee Related
- 1994-12-02 IT IT94RM000789A patent/IT1280713B1/it active IP Right Grant
Also Published As
| Publication number | Publication date |
|---|---|
| AU1260095A (en) | 1995-06-27 |
| SG96153A1 (en) | 2003-05-23 |
| EP0746814A4 (en) | 1997-03-12 |
| GB2298066A (en) | 1996-08-21 |
| EP0746814A1 (en) | 1996-12-11 |
| IT1280713B1 (it) | 1998-02-06 |
| US5842205A (en) | 1998-11-24 |
| FR2713368A1 (fr) | 1995-06-09 |
| WO1995016235A1 (en) | 1995-06-15 |
| KR960706656A (ko) | 1996-12-09 |
| FR2713368B1 (fr) | 1996-11-22 |
| ZA949423B (en) | 1996-06-28 |
| ITRM940789A0 (it) | 1994-12-02 |
| IL111637A0 (en) | 1995-01-24 |
| GB9610339D0 (en) | 1996-07-24 |
| BE1008621A3 (fr) | 1996-06-04 |
| CA2177378A1 (en) | 1995-06-15 |
| CN1142870A (zh) | 1997-02-12 |
| JPH09509271A (ja) | 1997-09-16 |
| IE940949A1 (en) | 1995-06-14 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ITRM940789A1 (it) | "metodo e procedimento di comunicazione inter-macchina e metodo generalizzato per la riparazione di programmi per esso" | |
| CA1300269C (en) | Sentence analyzer | |
| Habel et al. | Computational completeness of programming languages based on graph transformation | |
| CN106970802B (zh) | 在领域特定语言中集成编程脚本语言的方法及装置 | |
| Ortega et al. | Christiansen grammar evolution: grammatical evolution with semantics | |
| Glauert et al. | Dactl: An experimental graph rewriting language | |
| Waite | A language independent macro processor | |
| CN1530829A (zh) | 可扩展图形用户接口开发框架 | |
| Tounsi et al. | From Event-B specifications to programs for distributed algorithms | |
| Tonis | Automating scientific paper screening with Backus-Naur Form (BNF) grammars | |
| Plump et al. | The semantics of graph programs | |
| Janssen et al. | On the tree-transformation power of XSLT | |
| Goldberg | A variadic extension of Curry's fixed-point combinator | |
| Johnson et al. | The design of the kernel architecture for the Eurotra software | |
| US20240427580A1 (en) | Programming language conversion device, programming language conversion method, and programming language conversion system | |
| Scowen | Babel and SOAP applications of extensible compilers | |
| JPS6365530A (ja) | コ−ド最適化方式 | |
| Leitel et al. | Extracting Formal Smart-Contract Specifications from Natural Language | |
| Karjoth | XFSM: A formal model of communicating state machines for implementation specifications | |
| Spitters et al. | Towards interpreting Affect | |
| Son et al. | xCodeParser based on Abstract Syntax Tree Metamodel (ASTM) for SW Visualization | |
| JP2025177567A (ja) | 情報処理装置、方法、及び、プログラム | |
| Binu | Problem solving and computer programming using C | |
| Stevenson | Programming Languages | |
| Upadhyaya | Parsing |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 0001 | Granted |