Chapter 1: My Career Gone
Footnote: Bespoke Software Projects [1976-91]
In March 1978, Sparshatts of Kent Ltd needed to automate their accounting. They asked me to help. Being a relatively new and small Mercedes-Benz commercial vehicle dealer, they had a limited budget. Since this was just before microcomputers appeared on the market, the only options were either a Burroughs-type accounting machine or a large programmable calculator. The latter was chosen because it could be soft-programmed thus allowing full functional flexibility. The configuration below was supplied and implemented completely by me through my own business.
The PC2600 had little memory and no disk operating system. Sharp and its third party providers could offer only trivial software with totally inadequate functionality for the purpose in hand, although the hardware had all functionality and performance necessary to do the job. Between March 1978 and April 1982, I wrote all the system software and the following application software:
Payroll: Data entry and validation prior to automatic pay run. Bespoke reports giving departmental labour cost analysis, tax and NI to be paid, and a special workshop labour cost analysis giving cost per man-hour and per employee with percentages. Independent functions for maintaining fixed and semi-fixed employee and statutory data.
Sales Ledger: with full transaction listing for each monthly run with running balances for net, VAT and gross, and a control totals sheet at the end. Printout of a monthly statement for each customer on company headed continuous stationery. Automatically produced credit control letters for overdue accounts. Monthly sales analysis report giving categorised parts and labour revenue in both money and percentages of total turnover. Percentage this month's business was up or down relative to the average monthly turnover for the year to date.
Purchase Ledger: inverse of sales ledger.
Warranty Ledger: produced a detailed report for Mercedes Benz giving amounts claimed, received and disputed regarding all warranty work carried out.
Contract Fleet Servicing Ledger: held details of vehicles on their contract fleet servicing scheme with monthly charges, repair/service costs and profit on each vehicle and for the scheme as a whole.
In 1980, microcomputers started to appear on the market among which was the ITT 2020 (or 'European Apple II'). At the end of March 1980, I bought two ITT 2020 microcomputers, one with a Texas Instruments 825 RO printer and one with a Centronics printer.
A A Gaffney & Sons Ltd, a toy manufacturer of Tiptree, Essex, wished to automate their payroll. They had a tradition of paying their employees by cheque which the local shops within the village would gladly take and give change in cash. I selected the following configuration for them on which to run their new payroll system:
Not having had my own ITT 2020 any length of time, I had not yet developed any software for it. I therefore bought-in a suitable payroll package which I adapted to print employee pay directly onto pre-printed continuous stationery cheques. These I designed myself and had them printed by a specialist printer. Over the next few years, I updated their payroll fixed data.
The management of Jaguar Communications plc wanted clear tabular and graphical representations of their sales orders for the current month, financial year to date and the trailing 12-month period. The software was to run on a Novell-based network of IBM compatible PCs. The required sales order information was available as a printed report which listed the details of each individual sales order for the period concerned. The report was a normal output from the accounting package they used called MicroFACTS.
I wrote a program module to extract the values of the required sales orders from a text file image of the MicroFACTS printed sales orders report. This required scanning the text for strings such as column headings or constant annotations from which each necessary value-field could be located and captured. The program then accumulated these values in a 3-dimensional array file of which the three axes were: product type, market sector, and sales rep. I then wrote other program modules which extracted the accumulated sales order values from the array file and displayed - in tabular and percentage bar-chart form - the order revenue, number of units ordered and profit for:
- each market sector for a chosen sales rep
- each market sector for a chosen product type
- each product type for a chosen sales rep
- each product type for a chosen market sector
- each sales rep for a chosen market sector
- each sales rep for a chosen product type
An example of the kinds of displays produced is shown below. A printed analytical management report combining all the above was also provided.
Jaguar Communications plc needed an Equipment Register to create a permanent record for each equipment unit received into stock, allowing it to be continually updated to reflect the unit's status throughout its entire operational life with details of its sale, installation, maintenance, repairs, enhancements and modifications during its warranty period and beyond. The system also had to provide criteria-selectable management reports and was to run on a Novell-based network of IBM compatible PCs to replace a dBase III system which was far too slow and cumbersome to handle this mission-critical function. I designed and implemented this system as outlined below:
The following management reports were provided and can be set to be restricted to a specified Model Code, Customer, Site, Date-of-origin range, in-house location, allocation, condition, and reason received back (if applicable).
- Selective Equipment Listings
Prints a wide one-line entry for each unit on the register showing Serial Number, Bin Number, Mfgr's Serial Number, Model Code, Description, Supplier, Location, Allocation, Condition, Why Received, Last Diary Entry, Customer Name, Customer Site, Order Number, Invoice Number.
- Selective Stock Valuation Reports
Prints a wide one-line entry for each Model Type including Product Description, Supplier, Cost Price and separate figures for stock allocated to Maintenance, Engineering, Demonstrations, Rental Schemes and Contingency, then the total stock and its value. A summary table at the end of each report compares the actual and budgeted stock values found in each allocation category. A separate report gives the value of products which have been flagged as slow-movers.
The client (News Technology Ltd) had produced a stock management system for a large news wholesaler on an HP3000 minicomputer and wanted to automate the gathering, processing and reporting of stock information directly from the news retailers served by their client - the wholesaler. The client asked me to produce IBM PC & Psion Organiser software to achieve this objective within the configuration shown below:
Psion Organiser Software
After learning the Psion Organiser's programming language, OPL, I wrote programs to allow a news agent or rep to: view a file of all the magazine titles carried by the wholesaler, enter and amend the Week Number and the end-of-day unsold quantity for each magazine flagged for stock monitoring, and transmit these quantities via a modem when called each night by the wholesaler's remote PC. I then wrote and implemented PC software in QuickBASIC to do the following:
Import a titles text file produced by the HP3000 into a formal 'Titles Master File' file within the PC base-station.
Display/print the Titles Master File showing each title's reference number, name, period, price, and class of readership, and allow titles to be marked or unmarked for special stock monitoring.
Import a formal News Agent/Rep Master File from a text file of current news agents/reps downloaded from the HP3000 stock system.
Display the News Agent/Rep Master File showing the Box Number, Run Number and name of each news agent/rep and the telephone number the PC must dial to retrieve automatically the day's 'unsolds' figures from the news agent's/rep's Psion Organiser, plus the date and week number of the latest 'unsolds' figures received.
Transpose the current 'unsolds' figures received from each news agent/rep into the order needed for a Titles Availability report. This involved a vast file-based 'matrix inversion' process.
Display/print this report showing - for each title which is currently marked for stock monitoring - the current numbers supplied and returned unsold by each news agent or rep.
Dial-up automatically each news agent's or rep's Psion Organiser in turn overnight and upload the 'unsolds' figures for the latest day's trade.
The client required a means of viewing (in real-time) the variation with time of day of the data traffic on the four trunks connected to any 4-way X25 data switch in a large private network. A permanent record of this information had to be provided so that it could be analysed later off-line. I wrote the software in Microsoft Quick BASIC.
My design made full use of the multi-tasking Finite State Machine programming model with which I had become familiar from my work in the public switching industry. The software was implemented on an IBM PS/2 with an X25 expansion card. Software drivers were provided with the card. The essence of the design is shown below:
The network address, location, device-type and the speeds of the attached trunks are entered into the Device Data File - and thereafter kept up to date - via the Device Data Editing Window. The Test Call Sequencer may then be activated to make X25 test calls automatically to each device on the network in turn to align each device's on-board clock to the PS/2's system time, test for alarm conditions and gather traffic data.
If the Device Data Editing Window is open while the test call sequencer is running, then as each test call is made, the device currently being tested is indicated. If an alarm condition occurs during that test call, a warning 'siren' sounds and the device's details become highlighted in red. Also an alarm window appears showing the date, time and nature of that plus the previous 11 alarm events relating to that device. Through the Device Data Editing Window, the user can then 'acknowledge' the alarm whereupon the 'siren' stops and the highlighting turns to yellow. The user may then, when appropriate, clear the alarm.
When the Device Data Editing Window is not in view, it is replaced by two other windows: a Site Status Window which shows the name of each site and whether or not all the equipment there is currently alarm-free; and a Test Call Phase Window which indicates the current phase of the current test call. The possible phases are: prompting: the device to be called, connecting an X25 call to it, testing the device for alarms or traffic, and clearing the call.
The Test Call Sequencer makes test calls to each network device on a continuous cycle to gather information from which it calculates and stores in the Traffic Data File the mean and peak percentages of trunk loading and logical X25 channel occupancy for each of the 1440 1-minute sampling periods in each 24-hour day. Comprehensive VGA graphics-based display and print functions allow the user to view this data in a variety of clear and concise ways.
The mean/peak percentage traffic loading on each of a data switch's 4 trunks for each of 288 5-minute sampling periods throughout a 24 hour day is displayed in a different colour. The part of the day so far gone is shown on a grey background with the plots in bright colour. The remainder has a black background and shows in dull colour the plots for that part of 'yesterday'. Once the graph is displayed, it is automatically updated in real-time as new test calls are being made. This illustration shows the percentage occupancy of a trunk throughout a 24 hour period with the 11am and 3pm 'busy hours' clearly visible.
Another form of display is the adjacent bar-chart showing the 'Top 10' most heavily loaded trunks on the network and gives the network manager warning as to which links of his network may need extra capacity installed. There are both screen & printed versions of these reports. A 'system heartbeat' - a heart symbol which alternates bright and dull red every ½ second - indicates when the graphical display is being updated in real-time from live input data. Annotated 'LEDs' are provided to show X21 signal states on the trunks connected to the device and also to show X25 call phases.
I wrote a special dual-port serial I/O function to allow COM1 and COM2 to be used concurrently - one by the Test Call Sequencer to make its on-going test calls to all devices on the network, and the other by a specially-written independent terminal window which allows more detailed tests to be made on any individual device and the capture of the whole session automatically in a capture file for later study.
Parent Document |
©April 1994 Robert John Morton