# Was there an interactive macro/scripting language named PAGEN?

In a BESM-6 disk image I can see bits and pieces of something that looks like a strange interactive scripting language:

[start of disk block]
<LET=P11=%X01
<IEQ=P11=%377
<LET=P11=1
<END
<LET=P12=0
<REP=META=P12=%P11
<<MO2
<<K31
<<MO5
<<K35
... [a dozen more <<MOn and <<Knn lines]
<MES=    ROUND %P12 ENDED [originally in Russian]
<LAB=META
[end of file marker, zeros to the end of the block]


Here one can guess that <LET is an assignment operator, <IEQ is a conditional, <REP is a loop up to a label, <MES means "message", the % sign in a message text is an interpolation operator, etc. The << lines are unclear.

Another example I've found is (with texts translated)

<МЕS=
<МЕS=*** IBM TAPE VERIFIER *** ( 03.02.89 )
<МЕS=
<GЕТ=11=VOLUME-
<GЕТ=13=RECORD DENSITY (8, 32, 63)-
<GЕТ=14=TAPE DESIGNATOR (MAX. 21 CHARS.)-
...


As all the keywords are in English, a Western prototype is likely.

In pieces of the documentation in Russian I was able to find, this functionality is called "interactive macrogenerator" (just like that, without a proper name). Searching for that in English finds a few documents about TRAC, which is a different language.

Searching in Russian finds a page which mentions MES, LET, GET, IEQ, etc. The page title suggests that the name of the language was likely PAGEN, and the links below, mentioning Soviet DEC clones - that it could have stemmed from DEC.

Searching for 'pagen', or even "!pagen +DEC" leads nowhere.

What was the language called PAGEN which used less-than signs to start keywords and equal signs as separators?

• Looks more like a virtual machine assembly language than a scripting language to me, i.e. I'm going to guess that this was an intermediate form that something compiled to, and was then reduced to a directly executable bytecode. – Jules Sep 18 '17 at 20:35
• << lines could be parameters to some programm - aka inpul lines on a different programm level. I've seen several systems on systems with combined command and parameter input (read one punch card stack holding the job and its data) using such a level indicator to enable skiping data in case the programm execuion get aborted before all data is read. – Raffzahn Sep 18 '17 at 20:37
• @Jules Hmm, AFAIK the BESM-6 'assembler' was something called 'Autocode' and looked quite different - I remember a whooping lot of comata. – Raffzahn Sep 18 '17 at 20:45
• Leo, to me this looks much like an aplication specific configuration/parameter script. On mainframes it was common to read configurations as a series of commands. Say, are these M/K lines always pairs (first M then K). Just a weired idea: Maybe it's a konfiguration for an AS-6 (AC?) setup, as this was a multiprocessor configuration based on BESM-6 CPUs, utilizing a connection system chanels organized as multiplexers (Mxx) and chanels (Kxx) on each multiplexer. The whole system was something like a Frankenstein CDC 6600 on steroids. – Raffzahn Sep 18 '17 at 20:56
• @Raffzahn That's right, the instruction format in that assembler was "label:index,OP,offset" (with "label:" optional, of course). There was another one, with syntax copied from the IBM macroassembler: "label OP offset(index)", much more pleasing to the eyes, and with similar macro-operators (SETA, AIF, etc.) The one I'm asking about is something else entirely, and appears to be interactive (I've found <GET with a prompt). This is likely a small part of the script, so it's hard to tell what it was doing, but the language itself doesn't look original. I've heard of AC-6 but have never seen it. – Leo B. Sep 18 '17 at 21:02