Gab es Makropakete für die Programmierung auf höherer Ebene für den IBM Macro Assembler?
Die IBM / 360 Macro Assembly-Sprache war sehr leistungsfähig und ermöglichte eine nicht triviale Manipulation von Zeichenfolgen zur Kompilierungszeit.
Gab es Makropakete, die das Programmieren auf einer (etwas) höheren Ebene erleichtern würden, wie das Schreiben von Ausdrücken in Infixform, das Ermöglichen einer strukturierten Programmierung, das Standardisieren von Konventionen zum Aufrufen von Unterprogrammen, das bequeme Zugreifen auf Bitfelder usw.?
Der Grund, warum ich darum bitte, dass eine der BESM-6-Assemblersprachen ein Port auf Syntaxebene des IBM / 360-Assemblers war, einschließlich der Makrosprache, z
macro
mnop &a,&b,&c,&d,&e,&f,&g,&h
aif (&a eq '').x
gbla &cnt global arith. variable
mnote * comment &cnt
&cnt seta &cnt+1
nop &a
mnop &b,&c,&d,&e,&f,&g,&h
.x anop
mend
MNOP FIRST,SECOND,THIRD,FOURTH
erweitert sich zu
0001 0001 MACRO
0002 0002 MNOP &A,&B,&C,&D,&E,&F,&G,&H
0003 0003 AIF (&A EQ ’’).X
0004 0004 GBLA &CNT GLOBAL ARITH. VARIABLE
0005 0005 MNOTE * COMMENT &CNT
0006 0006 &CNT SETA &CNT+1
0007 0007 NOP &A
0008 0008 MNOP &B,&C,&D,&E,&F,&G,&H
0009 0009 .X ANOP
0010 0010 MEND
0011 0011 MNOP FIRST,SECOND,THIRD,FOURTH
0012 0005 * COMMENT 0
0013 +0007+ NOP FIRST
0014 0005 * COMMENT 1
0015 +0007+ NOP SECOND
0016 0005 * COMMENT 2
0017 +0007+ NOP THIRD
0018 0005 * COMMENT 3
0019 +0007+ NOP FOURTH
Das vorkompilierte Makropaket für die "übergeordnete" Programmierung (wahrscheinlich auch von IBM / 360 mit den entsprechenden architekturabhängigen Änderungen portiert) fehlt jedoch.
Hier einige Beispiele für die Verwendung der Makros aus dem Paket:
RЕG (М1 = 1,М2 = 2,М3 = 3,М4 = 4,М5 = 5)
КТ1 ВINDА (А(PAGE1)+KMD+М14)
FКТ3 SТRIТ (NCMD,0,0,8),(NARCH,0,40,8),(SND,0,16,8)
ЕХРR (FNM = $) FILE NAME
ЕХРR (SND = (OWNER,ADDR)) SENDER
ЕХРR (NUMREQ = (OWNER,REQ)) REQUEST NUMBER
IFА (QUEUE),Z=DISCRD NO REQUEST
Sie suchen nach den markantesten Makronamen BINDA
und STRIT
hilft nicht.
Wenn für den IBM / 360 Macro Assembler ein Makropaket mit diesen oder ähnlichen Makros vorhanden wäre, wäre der Zugriff auf den Quellcode eine große Hilfe.
Antworten
Die IBM / 360 Macro Assembly-Sprache war sehr leistungsfähig und ermöglichte eine nicht triviale Manipulation von Zeichenfolgen zur Kompilierungszeit.
Nun, die Reduzierung auf "String-Manipulation" könnte zu kurz kommen, da es keine Ähnlichkeit mit den üblichen String-Manipulationssprachen gibt. Es ist eine ziemlich vollständige imperative Programmiersprache. Programme werden ausgeführt, wenn sie zusammengesetzt sind. Es bietet typisierte globale und lokale Variablen (Bool, Integer, String), Arrays (abhängig von der Assembler-Version) und mehr.
Gab es Makropakete, die die Programmierung auf einer (etwas) höheren Ebene erleichtern würden?
Nicht nur "etwas" höher.
wie das Schreiben von Ausdrücken in einer Infix-Form, das Ermöglichen einer Form der strukturierten Programmierung, das Standardisieren von Konventionen zum Aufrufen von Unterprogrammen, das bequeme Zugreifen auf Bitfelder usw.?
Für die strukturierte Programmierung (zu der auch Aufrufkonventionen und Datenstrukturen gehören) wurde dies bereits in einer Frage zu Stacks auf stapellosen Maschinen beantwortet:
Wie wurde C auf Architekturen ohne Hardware-Stack portiert?
Beispiel eines Dummy-Programms, das eine Funktion aufruft und das Ergebnis überprüft, kopiert aus der Antwort:
@ENTR TYPE=M,NAME=MAIN ** Main programm, execution starts here
...
@PASS NAME=FUBAR,PLIST=(FCB,RECORD)
@IF NE
LTR R15,R15 * Return Code Not Zero?
@THEN
@EXIT RC=#UNSATISFIED * Finish Program with Return Code UNSATISFIED
@BEND
...
@EXIT RC=#HAPPYENDING * Finish Program with Return Code HAPPYENDING
@END
@ENTR TYPE=L,NAME=FUBAR,PLIST=(FCB,RECORD) * Function FUBAR, called by MAIN
...
(do whatever needed with FCB and RECORD)
...
@EXIT RC=0 * Finish Function with Return Code Zero
@END
Während das erwähnte COLUMBUS Assembler (* 1) -Paket AFAIK war, eine Siemens-spezifische Entwicklung, war es 100% F-Assembler-Makrocode. Zusätzlich zur Makrobibliothek gab es auch Formatierer, die aus einer direkten Assembler-Liste eine beabsichtigte oder eine Nassi / Shneiderman- Liste machten .
Außerdem haben Projekte / Unternehmen natürlich Makropakete erstellt, um die einfache Behandlung komplexerer Probleme zu ermöglichen. Außerdem lieferte natürlich jedes Betriebssystem Makros für alle Dienste, die es auch hatte.
Der Zugriff auf den Quellcode wäre eine große Hilfe
Nun, ich habe noch irgendwo ein Band mit mehreren Versionen (wir haben es ziemlich viel von seiner ursprünglichen Version geändert). Außerdem habe ich es vor langer Zeit für den Apple II auf ORCA / M portiert. Es kann einige Zeit dauern, bis Sie eines der beiden gefunden haben.
Andererseits ist das Erstellen einer solchen Bibliothek für strukturierte Programmierung mit F-Assembler- Makros (oder besser) oder höher / kompatibel eine meist triviale Aufgabe, einen Parsing-Stack zu erstellen, um die Syntax zu überprüfen und Beschriftungen zu generieren. Schreiben Sie mir eine Nachricht, wenn Sie einige Hinweise mögen.
D / E / F-Assembler (und seine Makrosprache) wurde kurz nach der Einführung von / 360 veröffentlicht, wobei F die 'Vollversion' ist, aber auch einen enormen RAM-Bedarf von 64 KiB aufweist :)) Dies ist also höchstwahrscheinlich die Basis für Ihr Paket.
* 1 - Das gleiche Paket war für COBOL verfügbar. In diesem Moment wurde die Codegenerierung von einem Präprozessor durchgeführt.
Es gibt eine Gruppe von Makros namens Concept 14 , die von einem Mitarbeiter von IBM Federal Systems namens Marvin Kessler geschrieben wurden. Sie liefen auf IFOX00 (dem F-Assembler) und wurden als Basis für das HLASMTK SPM verwendet.
Ein ehemaliger Mitarbeiter von mir, Paul Scott, stellt sie im IEBUPDTE-Format zur Verfügung. Er hat auch einen Scan der Dokumentation; Leider fehlt eine Seite.
Ich glaube, sie haben es auch in die Welten Hercules und z390 geschafft.