5

I wonder if anyone has documentation left on this topic. In the early 80's, I used to be a 3270 terminal operator, and I wrote programs with GIS. I remember that this language was rather mighty but had a steep learning curve. One could write a program (which, of course, was run as a "job"), selecting from several tables, like a relational database. But it was no SQL dialect. Has anyone the "programmer's manual", or a link? I searched the Internet Archive, the IBM website and so on, but no results. best greetings, Andreas

1

2 Answers 2

5

All I could find on IBM's website was the following quote:

One of the earliest systems designed to provide structure and random access to data was the Generalized Information System (GIS), which was developed at TRW by Dick Pick and Don Nelson. Pick further developed this system into a multidimensional DBMS known as the Pick System, which was also an operating system (OS)

There is quite a lot of information about the Pick System still online, though, e.g.

http://www.vimaservic.com/Descargas/Manual_D3.pdf

This had a language known as AQL, see Page 91 onwards.

This was possibly the same language used by GIS?

1
  • Wonder if this mindset influenced the AS/400 where you can work with database tables with record operations, as well as with SQL. Commented Sep 15, 2020 at 14:02
3

GA22-6822-20 IBM System/360 and System/370 Bibliography July 1973, pages 77–78 (PDF pages 83-84) provides an extensive list of manuals for it. However, I doubt you will come across copies of any of these (except with immense effort and/or luck). From it, I gather that the original GIS had IBM program number 5736-CX1, while GIS Version 2 (aka GIS/2) had IBM program number 5734-XX1.

Griffin, M. A. (1976). Information Processing Systems. A I I E Transactions, 8(3), 307–313. doi:10.1080/05695557608975084 is the best source I can find in terms of technical details. While only a brief paper, it gives a couple of actual examples of the Data Description Tables (DDTs) which GIS uses to define its data files. Here is "Fig. 2. A master DDT for a file named PERSONEX":

DDT; * FILE:NAME=PERSONEX, RCDLVL=L L L L L L L L L L L L L L L L L L L L L; * * FLD:NAME=PAY, LENGTH=1, JUST=R; * FLD: NAME=BDATE, LENGTH=6; MASK:PATTRN=ZZ/ZZ/ZZ; RDFN:FIELDS=MONTH,Z,DAY,2,YEAR,2; * FLD: NAME=NAME, LENGTH=25; * FLD:NAME=ADDRESS, LENGTH=20 * FLD:NAME=PHONE, LENGTH=1O; MASK: PATTRN=ZZZ-ZZZ-ZZZZ; * FLD:NAME=MARSTAT, LENGTH=l, JUST=R, HEADER=MARITAL STATUS; ENCO:TYPSPC=LKUP, ERRORD=S, CONVA=S, CONVF=N, LGTHA=8, LGTHF=1, ; #EEDVAL=DIVORCED,4,MARRIED ,1,SINGLE ,2,WIDOWED, 3; DECD:TYPSPC=LKUP, LGTHA=1, LGTHF=8, CONVA=N, EEDVAL=1,MARRIED ,; #2,SINGLE ,3,WIDOWED, 4,DIVORCED; * SEGM:NAME=VITALINF, LEVEL=O, TYPE=RECORD, UNIND=Y, SORT=NAME,A; * * DATM:DSORG=IS, CREATE-YES, CATLG=NO, UNIT=2314, DSNAME=CSIE166B, ; #KEYNAME=NAME, LRECL=132, RECFM=FB, BLKSIZE=1320, ; #ALLOC=CYL, SPACE=1, INDXSEP=NO, INDXSIZE=O, NTM=1, ; #INDOFL=O, CYLOFL=1, VDLUME=SER=GISPCK; * * FLD:NAME=POSCODE, LENGTH=4; DECD:TYPSPC=LKUP, LGTHA=4, LGTHF=10, EEDVAL=1234,PROGRAMMER,2234,ANALYST ,; #5678, INSTRUCTOR; * FLD:NAME=SALARY, LENGTH=7, JUST=R; EDIT:TYPSPC=RNGE, LGTHA=7, CONVA=N, ERR0RD=E, EEDVAL=0500D00,6500000; MASK: PATTRN=$ZZ,ZZZ.ZZ; * SEGM:NAME=JOBDATA, LEVEL=1, TYPE=TRAILR, UNIND=Y, OPTION=CNT, ; #OPTFNM=PAY, SORT=DATE,A,POSCOD ,A; * * END: 

Here is an example of a procedure to create a file:

//GISMAG JOB (ACCOUNTING INFORMATION) //X EXEC GIS,PARM.GISFP=3,DDT='CSIEDDT' //SYSIN DD * CREATE PERSONEX FROM SOURCE2 STRUCTURE JOBDATA FROM CARD3 EQUATE MARSTAT TO MARITAL END EQUATE INSERT JOBDATA / * //GISFP.FPSYSIN DD DATA //GISMAGB JOB (ACCOUNTING INFORMATION) AAARON, EDITH B. WIDOWED F205... B2310 22ND NORTHPORT C1100000010170 D1234 A B C Repeat Cards for Each Record D . . . /* 

Here is an example of a query, it produces a list of females with a salary between $10,000 and $12,000, sorted by name:

//GISMAG JOB (ACCOUNTING INFORMATION) //X EXEC GIS,PARM.GISFP=3,DDT='CSIEDDT' //SYSIN DD * QUERY CSIE166C LOCATE RECORD LOCATE JOBDATA(LAST) WHEN SEX EQ'F' ADD SALARY BT 1000000,1200000 HOLD HOLDFL1 NAME,SALARY EXHAUST JOBDATA EXHAUST RECORD SORT HOLDFL1 NAME QUERY HOLDFL1 LOCATE RECORD LIST RECORD EXHAUST RECORD END PROCEDURE /* //GISFP.FPSYSIN DD DATA //GISMAG2 JOB (ACCOUNTING INFORMATION) /* 

Here is an example of a single job which starts with using GIS to query data out of a database, then passes the query results on to SAS for statistical analysis:

//GISMAGA JOB (1550,DBCA,O,2,2),'MAGRIFFIN',CLASS=M,MSGLEVEL=(1,0) //X EXEC GIS,PARM.GISFP=3,DDT='CSIEDDT' //SYSIN DD * * QUERY CSIE166C LOCATE RECORD LOCATE JOBDATA (LAST) HOLD HOLOFL1 SALARY, SEX, MARSTAT EXHAUST JOBDATA OR 1 EXHAUST RECORD * SORT HOLDFL1 SEX, MARSTAT * QUERY HOLDFL1 DEFINE VARIABLE1=0,7 VARIABLE2=0,1 END DEFINE LOCATE RECORD LIST RECORD CHANGE VARIABLE1 TO SALARY CHANGE VARIABLE2 TO MARSTAT * LINK LINKRT USING VARIABLE1,VARIABLE2,SEX /* EXHAUST RECORD END PROCEDURE * //GISFP.FPSYSIN DD DATA //GISMAGB JOB (1550,DBCA,1,3,2),'MAGRIFFIN',CLASS=M //GISTEP03.SASIN DD DSN=&SASIN,DISP=(NEW,PASS), // SPACE=(TRK,(5,5)),UNIT=2314,DCB=(LRECL=255, // BLKSIZE=255,RECFM=F),VOL=SER=SCRTO1 * // EXEC SAS //SAS.DDCAROI DD OSN=&SASIN,DISP=(OLD,DELETE) //SAS.STSIN DD * TITLE 'LINKING FROM GIS TO LINKRT TO SAS' ; DATA: INPUT DDNAME=DDCARD1 SALARY 10-16 2 MARSTAT 32 SEXY $ 33; PROC PRINT; PROC MEANS; BY SEXY MARSTAT: PROC ANOVA; CLASSES MARSTAT SEXY; MODEL SALARY=MARSTAT SEXY; PROC DUNCAN; CLASSES MARSTAT SEXY; /* 

It refers to this specific IBM manual: Generalized Information System, Version 2 (GlSI2) Program Description Volume 3, Procedural Language, SH20-1033-1 – which can be found in the above bibliography.

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.