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

Hosted by www.Geocities.ws

1