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.

Not the answer you're looking for? Browse other questions tagged .