GASS Operations
Thanks you very much for using MSI.
HINTS FOR GASS PROGRAMMERS
THE FIRST HINT THAT I HAVE FOR GASS PROGRAMMERS IS TO PLAN, PLAN, PLAN.
MOST OF THE WORK OF PROGRAMMING CAN BE HANDLED AT THE PLANNING STAGE, BEFORE
YOU START CODING. SCREEN SEQUENCES AND REPORTS MUST BE DRAWN UP, THE DATA BASE
DESIGN AND TABLE ALLOCATIONS MADE, MENUS FLOW-CHARTED, AND A LIST OF THE
REQUIRED REPORTS AND THEIR FUNCTIONS SHOULD BE HANDY FOR THE PROGRAMMER WHILE
HE/SHE IS CODING THE REPORTS. THIS IS ALWAYS IMPORTANT IN ANY LANGUAGE, BUT
THE LACK OF AN ASSEMBLER FOR GASS MAKES THIS EVEN MORE IMPORTANT DUE TO THE
DIFFICULTY OF MAKING CHANGES WITHOUT INTRODUCING MAJOR BUGS.
FIELD SIZES:
IN PLANNING REPORTS AND SCREEN SEQUENCES, KEEP IN MIND THAT GASS USES
16-BIT COMPUTERS, SO THE SMALLEST A-FORMAT FIELD IS 2 CHARACTERS (BYTES), NOT
1. ALL A-FORMAT FIELDS WITH AN ODD NUMBER OF CHARACTERS ARE STORED IN THE NEXT
EVEN-SIZED NUMBER OF BYTES. FOR EXAMPLE AN A25 FORMAT WILL ACTUALLY BE STORED
AN THE DATABASE AS AN A26, SO THERE IS NOTHING TO BE GAINED BY USING FORMATS
WITH AN ODD NUMBER OF CHARACTERS.
OTHER STORAGE SIZES USED BY THE SYSTEM ARE: INTEGER IN 2 BYTES, FLOATING
POINT IN 4 BYTES, AND DOUBLE-PRECISION IN 8 BYTES. THE SYSTEM WILL STORE ONLY
WHOLE FIELDS IN A RECORD, AND IS ABLE TO USE 508 BYTES OF ANY DISK RECORD, THE
OTHER 4 BYTES ARE RESERVED FOR THE POINTER TO THE NEXT RECORD OF A CHAIN AND
THE SYSTEM JULIAN DATE ON WHICH THE RECORD WAS LAST WRITTEN. THIS IS
ESPECIALLY IMPORTANT TO KNOW IN PLANNING A-FORMAT TABLE SIZES, SINCE SOME
COMMONLY USED FIELD SIZES ARE FAIRLY INEFFICIENT IN THEIR USE OF DISK SPACE.
FOR EXAMPLE, A78 TABLES ONLY USE 468 BYTES OF THE AVAILABLE 508 TO STORE
SIX ROWS (6 X 78 = 468; 7 X 78 = 546) PER RECORD. THIS WASTES ALMOST 8% OF THE
AVAILABLE STORAGE ON DISK. A MORE EFFICIENT FORMAT IS A72, WHICH USES 504
BYTES PER RECORD TO STORE 7 ROWS - A 17% INCREASE IN THE NUMBER OF ROWS WHICH
MAY BE STORED FOR AN 8% TRADEOFF IN THE NUMBER OF CHARACTERS PER ROW.
THE BEGINNING GASS PROGRAMMER MAY WANT TO WRITE A REPORT WHICH WILL SHOW
HIM THE DISK EFFICIENCIES OF VARIOUS-SIZED A-FORMAT FIELDS. THE PROGRAMMING
EXPERIENCE WILL PROBABLY HELP, AND THE TABLE WILL BE A VALUABLE REFERENCE FOR
LATER SYSTEM PLANNING.
THREE SIDES:
A GASS SYSTEM HAS THREE SIDES, OR PROCESSING TYPES. THE EDITOR SIDE HAS
THE FACILITIES TO ENTER AND/OR EDIT NEW FORMATS, THE GEN SIDE HAS FACILITIES
FOR PROCESSING REPORTS, AND THE PRINT SIDE HAS FACILITIES TO OUTPUT DATA
STORED AS REPORT DATA TO EITHER CRTS OR PRINTERS, WITH OPTIONAL SEARCH AND
SORT FILTERS. SOME OPERATIONS CONTROL THE GEN SIDE AND SOME ONLY CONTROL THE
PRINT SIDE. PRINT-SIDE OPERATIONS MAY BE RECOGNISED BY THEIR NEED TO BE THE
FIRST OPERATION IN THE FIELD, SINCE THAT IS THE ONLY OPERATION IN A FIELD
WHICH THE PRINT SIDE LOOKS AT. OPERATIONS ARE NOT USED TO CONTROL THE EDITOR
SIDE; ALL CONTROL THERE IS PROVIDED BY THE SYSTEM MENUES.
FORMS CONTROL IS PROVIDED BY THE SYSTEM FOR THE PRINT SIDE USING THE \ OR
^ PORTION OF THE FIELD'S FORMAT. GEN SIDE FORMS CONTROL, WITH A FEW EXCEPTIONS
(OPS.139 & 140) IS UP TO THE APPLICATIONS PROGRAMMER, SINCE MOST DATA RETURN
OPERATIONS DEFAULT TO TRAILING LF/CR. OPERATION 196 MAY BE USED TO DISABLE
THIS DEFAULT.
THE RUN-TIME IS OFTEN THE MOST CONVENIENT AND CONTROLLABLE MEANS OF
PROVIDING PRINTED REPORTS. REPORTS WRITTEN TO VIEW THEIR DATA ON THE SCREEN
WILL ALSO RUN ON THE PRINTERS, BUT MAY NOT ASK FOR DATA THERE, SINCE THERE IS
NO KEYBOARD ENTRY ALLOWED (OR POSSIBLE) ON PRINTERS.
THE RUN-TIME:
AT RUN-TIME, THE SYSTEM WILL BE PROCESSING YOUR REPORT AS WRITTEN. YOUR
FORMAT IS ACTUALLY BEING INTERPRETED AT RUN-TIME, RATHER LIKE INTERPRETED
BASIC. YOU SHOULD KNOW WHAT FACILITIES THERE ARE FOR YOUR USE AT RUN-TIME. A
DISCUSSION FOLLOWS:
EACH DEVICE ON A GASS SYSTEM OCCUPIES AT LEAST ONE "ENVIRONMENT", WHICH
IS THE SECTION OF MEMORY WHICH IS SET ASIDE FOR THE SYSTEM FOR THE DEVICE TO
USE. THERE ARE A LIMITED NUMBER OF ENVIRONMENTS ON ANY SYSTEM, BUT THIS NUMBER
VARIES ACCORDING TO THE PARTICULAR VERSION OF GASS WHICH YOU ARE USING. A GOOD
RULE OF THUMB IS TO ASSUME THAT THERE ARE ABOUT THREE "LEVELS" (AVAILABLE
ENVIRONMENTS) FOR EACH POSSIBLE DEVICE YOUR SYSTEM HAS.
EACH CRT THAT IT IS POSSIBLE FOR YOUR SYSTEM TO HAVE WILL OCCUPY ONE
ENVIRONMENT AT START-UP TIME, AND MAY CALL OTHER ENVIRNMENTS FROM THE POOL OF
AVAILABLE ENVIRONMENTS. PRINTERS ONLY OCCUPY ENVIRONMENTS WHEN THEY ARE
ACTIVE, SINCE THEY DO NOT HAVE TO BE ABLE TO RECEIVE DATA FROM A KEYBOARD WHEN
THEY ARE IDLE.
WHEN A DEVICE CHANGES LEVEL THERE IS A SIGNIFICANT OVERHEAD INCURRED, DUE
TO THE NEED TO MOVE ABOUT 6000 BYTES OF DATA WHICH COMPRISE THE ENVIRONMENT,
AND THEN TO INITIALISE PORTIONS OF THE ENVIRONMENT. LEVELS ARE CHANGED ON
OPERATIONS WHICH GO TO OTHER REPORTS, SUCH AS OPS. 35, 37, 52, 53 AND OTHERS.
THE USE OF THESE OPERATIONS ALLOWS A PROGRAMMER TO PARTITION HIS/HER CODE AND
TO CONTROL A SEQUENCE OF DEPENDENT JOBS, BUT YOU SHOULD BE AWARE OF THE
PERFORMANCE PENALTY INCURRED. THERE WILL ALSO BE ADDITIONAL DISK TIME USED
BECAUSE OF THE NEED TO READ THE FORMAT INTO THE NEW ENVIRONMENT. EXTRA
ENVIRONMENTS AND THE OVERHEAD THEY INCURR ARE ALSO USED BY THE PRINT SIDE OF
GASS WHEN PROCESSING OPS. 1, 2, 36, 56, ETC.
THE ENVIRONMENT CONSISTS OF AN ARRAY OF 150 INTEGER FIELD REGISTERS, AN
ARRAY OF 150 DOUBLE-PRECISION REGISTERS, THE DEVICE MEMORY ARRAY OF 256 BYTES,
THE DEVICE'S REGISTERS FOR OPS 38, 51, 81, 83, DISK BUFFERS, AND OTHER SYSTEM
DATA STOREAGE REQUIRED. THE FIXED SIZE OF THE NUMERIC ARRAYS GIVES RISE TO THE
FACT THAT WE MAY DO ARITHMETIC WITH A FIELD NUMBER WHICH DOES NOT APPEAR IN
OUR FORMAT, AND ALSO TO THE MAXIMUM LIMIT ON THE NUMBER OF FIELDS IN ANY ONE
REPORT.
DEVICE MEMORY IS KEPT WHEN GOING DOWN-LEVEL ON PROCESSING AN OP.35 (FOR
EXAMPLE) AND IS RESTORED TO ITS STATE BEFORE THE OP.35 WHEN RETURNING FROM THE
LOWER-LEVEL REPORT. THIS MEANS THAT YOU CAN USE DEVICE MEMORY TO PASS
PARAMETERS TO SUBROUTINES IN LOWER-LEVEL REPORTS, BUT THEY CANNOT USE DEVICE
MEMORY TO RETURN THEIR RESULTS IF ANY. DISK MAY OF COURSE BE USED TO TRANSFER
DATA FROM ANY PROCESS TO ANY OTHER, BUT IS VERY SLOW COMPARED TO OTHER SYSTEM
DATA STOREAGE LOCATIONS.
SYSTEM MEMORY WAS IMPLEMENTED TO ALLOW DATA TO BE PASSED FROM PROCESS TO
PROCESS WITHOUT CONCERN FOR RELATIVE LEVELS, BUT IT IS STRICTLY GLOBAL
AND SOME CARE MUST BE TAKEN IN USING ANY GLOBAL VARIABLE IN A MULTI-USER
SYSTEM. IT IS UP TO THE PROGRAMMER TO HAVE A CARE TO THE INTEGRITY OF DATA IN
A MULTI-USER SYSTEM. GASS WILL NOT DO IT FOR YOU!!
Gass Index