ROBACUS
Joe Ching (郑佐)
李佳敏 (Jamie Li)
DECEMBER 2018
CONTENTS
ROBACUS INTRODUCTION
ROBACUS INSTALLATION
COMPUTING LANGUAGE
ROBACUS CURRICULUM
NAMING CONVENTION SPECS
USER INTERFACE SPECS
EDITOR SPECS
DIAGNOSER SPECS
NATURAL LANGUAGE SPECS
SOFTWARE ROBOT SPECS
FORTRAN SPECS
DATA FILE SPECS
ROBACUS VIDEO CLIPS ON YOUTUBE
ROBACUS INTRODUCTION
Abacus, slide rule, calculator and
computer have served engineers
well as valuable tools. But two
characteristics of these tools have
limited their usefulness. The first is
the private-ness, each
communicating with and serving
only one private owner. And the
second is the subservient role they
play in relation to their users.
How can we make a tool that is
public and open, and acting as a
partner rather than a servant? How
would such a tool increase our
ability to do engineering and other
analyses?
Briefly, this tool is both a translator
of engineering capabilities and a
communicator of analysis
collaborations. As a translator, it
translates language humans
understand to a language that
computers understand. But the real
advantage is its ability to burden
the difficulties in thinking for
humans.
As a communicator, it uses a
technology called software robot to
make sure that all the analyses
done by one engineer can be
understood, reused and added onto
by others. The software robots are
simply executable documentations
that allow the computer to redo
exactly what are formally
documented, on its own
independent of the engineers who
created them.
The ROBACUS project shall initiate
itself by creating a core of
developers in the academic
environment. Courseware and
software are to be passed on to
interested teaching staff. Once the
communication links are put in
place among collaborative R/D
nodes, this tool will start to grow by
being used, maintained and
developed by users.
The translator, communicator and a
third component, OUTERNET,
would be described below, with a
focus on how they would be
constructed.
I. TRANSLATOR - NATURAL
LANGUAGE PROGRAMMING
The natural-language programming
program translates user's English
answers to questions asked by the
computer into Fortran statements
that computers can understand. In
practice, a user would be
generating functional modules for
specific tasks. Eventually, the
Fortran statements would be
mostly CALL statements of modules
already constructed.
A core of software engineers would
be responsible to develop and
maintain this natural-language
programming program. But the
users of this program for
productions would contribute new
modules to it in their routine
chores.
The technical aspects of
natural-language programming
program is described in the section
on Natural Language Specs.
II. COMMUNICATOR -- SOFTWARE
ROBOTS
In ROBACUS, the user is either
engaged in the generation of a
robot or using an existing robot to
perform a prescribed task. The
variety of tasks that the robots are
capable of performing ranges from
writing a program to preparing an
input model or an output plot.
Besides documenting what the task
is, a software robot also performs
the task verbatim documented.
Thus, ROBACUS shifts the focus
from "what has been done" to
"how it is done". But the most
important impact is that now we
can communicate among ourselves
without ambiguity thru the
software robots, or more exactly,
their executions.
The technical aspect of software
robots is described in the section on
Software Robot Specs.
The spontaneous accumulation of a
knowledge and experience in the
software robots in each ROBACUS
node points to the benefits of their
shared uses. This brings us to the
concept of OUTERNET.
III. OUTERNET -- WWW OF
SOFTWARE ROBOTS
OUTERNET is a network of
distributed personal servers made
up of ROBACUS'ized home PC's. It
can be looked upon as an
encyclopidia of how-to's.
After the initial stage of
development by software experts,
the next stage could be a coming
together of generations -- the old,
previous generation and the young,
next generation.
With letters enlarged and computer
skills simplified, many of the retired
technical professionals can learn to
help develop ROBACUS. Without
the pressure of short-term returns,
the focus can be concentrated on
future. Once all the inner working
of ROBACUS is made operational
and natural, the youngsters would
be introduced by the elders to a
virtual world of computing that is
void of all the idiosyncrasies that
hallmark our irrational world of
expediencies.
The long term development of
ROBACUS would be spontaneous,
since these youngsters will find
themselves in a robotically
computerized world that they grew
up in.
ROBACUS INSTALLATION
I. Install Linux Mageia 5
Install mageia 5
0. create a user "robacus" with password "000000" (our
universal password, for authorless software)
1. choose KDE (GNOME will lock keyboard and mouse)
2. get all mageia updates and archives downloaded
3. goto Mageia Control Center(option MCC)
4. click "Install & Remove Software"
5. turn upper left option boxs to "All"
6. search for "gcc", and click to uninstall "gcc 4.82"... and click
"Apply"
7. search for "gcc" again and click "gcc3.3"(if nonexistent, then
download other config media and updates )
8. search for "tcsh" and install("Apply")(insert the dvd, but take
out after done with all the installs)
9. search for "ncurses" and click all the "libncurses*" and
install
10. search for "libx11" and click all "libx11-devel" and install
11. also install "ncftp" and "gnuplot"(which only mageia4 has)
the same way
12. quit and goto the "boot" option and select it autologin to
IceWM
13. take out the dvd and restart(be sure to get back on IceWM)
II. Install ROBACUS
0. switch to the iceWM windows manager and open a xterm
(select from(lower left corner)Tool/More/Konsole, not
"Terminal", which will hang the keyboard) in the directory
robacus.
1. get a version of "robacus.tgz" or download and save it
2. open a "Konsol,NOT "Terminal"" and enter & execute "cp
Downloads/robacus.tgz robacus.tgz"
3. "tar -xvf robacus.tgz"
4. enter "su" then password(000000)
5. enter "./instal"
6. enter a "./useint"
7. use only the [Enter] and [End] keys to see how the software
robots work
8. try the right mouse key to show robot in slow motion
9. when u r ready, u can start move the mouse and
pick ur own options
10. once u r sure of how a problem is solved, u could enter over
the yellow letters to modify the problem
11. finally, u can use the [ADD] suboption to add a new
problem/robot and answer each of the questions like how robot
does it.
Beyond this point, u have to be a developer. there u have to
learn the naming convention used by the computer, thus, also the
users. and u need know how to use the robotic editor and
diagnosing debugger.
电算盘安装
I.安装Linux Mageia 5
安装Mageia 5
0.创建一个密码为"000000"的用户"robacus"(我们
的通用密码,用于无作者软件)
1.选择KDE(GNOME将锁定键盘和鼠标)
2.下载所有mageia更新和档案
3.转到Mageia控制中心(选项MCC)
4.单击"安装和删除软件"
5.将左上角的选项框转为"全部"
6.搜索"gcc",然后单击卸载"gcc 4.82"...并单击"应
用"
7.再次搜索"gcc"并单击"gcc3.3"(如果不存在,
则下载其他配置媒体和更新)
8.搜索"tcsh"并安装("Apply")(插入DVD,但
在完成所有安装后取出)
9.搜索"ncurses"并单击所有"libncurses *"并安装
10.搜索"libx11"并单击所有"libx11-devel"并安装
11.同样安装"ncftp"和"gnuplot"(只有mageia4)
12.退出并转到"boot"选项并选择它自动登录到
IceWM
13.取出DVD并重启(务必回到IceWM)
II。 安装ROBACUS
0.切换到iceWM窗口管理器并打开一个xterm(从(左下角)Tool
/ More / Konsole中选择,而不是"终端",这将挂起键盘)在
robacus目录中。
1.谷歌"robacus下载"并下载并保存
2.打开"Konsol,NOT"终端""并输入并执行"cp Downloads /
robacus.tgz robacus.tgz"
3."tar -xvf robacus.tgz"
4.输入"su"然后输入密码(000000)
5.输入"./instal"
6.输入"./useint"
7.仅使用[Enter]和[End]键查看软件机器人的工作方式
8.尝试用鼠标右键以慢动作显示机器人
9.当你准备好了,你可以开始移动鼠标并选择你自己的
选项
10.一旦确定问题是如何解决的,你可以输入黄色字母来
修改问题
11.最后,你可以使用[ADD]子选项添加一个新问题/
机器人并回答每个问题,比如机器人如何做。
除此之外,你必须是一名开发人员。 你必须学习计算机使
用的命名约定,因此用户也要学习。 你需要知道如何使用
机器人编辑器和诊断调试器。
COMPUTING LANGUAGE
ENGLISH WORDS
英语计算机单词
EDIT,DOWN,WHAT,SINGLE,KEY,FOLLOW,
编辑, 下, 什么,单一, 键, 依照,
VANPOOL,CHANGE,ALL,SUBSEQUENT,
共乘制度, 变, 所有, 随后,
BOTTOM,AGAIN,DOWNWARD,SUBROUTIN
E,
底部, 再, 向下, 子程序,
AWAY,GET,EXTERNAL.GUIDE.THE.INSERT.JA
CK.
离开, 得到,外部. 引导; 这。 插入; 举
起;
OVER.FROM.REVERSE.MOVE.BLOCK;LINE;O
VER;
以上; 从 ; 相反 ; 移动 ; 块 ; 线 ;
以上;
TOP;PUT;QUIT;DONT;SAVE;ANY;RESTORE.
顶部; 放 ; 停止; 不要 ;保存;任何; 恢复。
ORIGIN;AFTER;BEFORE;UPWARD;CONSTRU
CT;
原点 ; 后 ; 以前 ; 上升 ; 构
造 ;
SEQUENCE;WRITE;NUMBER;BE;SPECIFY;
序列 ; 写 ; 号码 ;是; 指明 ;
》》》》》》》》》》》》》》
FARSIDE;SCROLL;TAB; EXTREME;LOCATE.
远边; 卷起; TAB键; 极值 ; 查找
HOME;FORM;WHILE;COPY;AT;COLUMN;CA
N;
家 ; 形成; 当 ; 副本; 的; 柱 ;
能; FOR;WITHOUT;IS.SET;BY;
INTERNAL;EACH;
为; 没有; 的,置;靠; 内部 ; 每 ;
DIAGNOSE;AUTOMATE;INNER;ONLINE;TRA
CK;
诊断 ; 自动化; 内 ; 在网上; 跟
踪; ALSO;MANUAL;RECOVER;
MENU;READ;
也 ; 手工的; 恢复 ; 菜单 ; 读;
METHOD; ENTER; COMMAND;CLICK; OR;
方法; 输入; 指挥 ;按下鼠标器;或;
BACKSPACE;ADD;REMOVE;MESSAGE;
退一格; 增加; 删除; 信息;
TASKS;HELP;RESEARCH;DEVELOPE;XEROX;
任务; 帮助; 研究; 发展; 复印;
WINDOW;NATURAL;LANGUAGE;PROGRAM;
窗口; 自然; 语言; 程序;
SELECT;MODEL;FOR;PROCESS; ANALYSE;
选择; 模型; 为; 进程; 分析;
WEBPAGE;DOCUMENT;OPERATE;PROCEDU
RE;
网页; 文件; 运作;
程序;
PHYSIC; SIMULATE;SPORT;HEALTH;
物理; 模拟; 体育; 健康;
PREPROCESS; GENERATE;POSTPROCESS;
预处理; 产生; 后期处理;
COMPONENT;TO;MODIFY;LIST;NONE;STRIN
G;
构成要素; 到; 改; 名单; 无; 字符
串;
SEARCH;SKIP;SAME;MARK;WITH;NEXT;OCC
UR;
搜索; 跳过; 相同; 标记; 与; 下一个; 发
生;
END;REPEAT;STATEMENT; DESCRIBE;VALUE;
结束; 重复; 陈述句; 描述; 价值;
INPUT;VARIABLE;SUBTRACT;MULTIPLY;DIVI
DE; 输入; 可变素; 减去; 乘;
除;
ARRAY;BRANCH;ANIMATE;PREPARE;
一系列; 支线; 动画; 准备;
DOCUMENT;INCREMENT;MODULE;ARITHM
ATIC
文件; 增一量; 模块; 算术;
DELETE;UPGRADE;FIRST;SECOND;THIRD;
删除; 升级; 第一; 第二; 第三;
CONFLICT; FILE;TEXT;GRAPHIC;FUNCTION;
冲突; 文件;文字; 图; 函数;
GEOMETRY;DO;YOU;WANT;SINGLE;YES;NO;
几何; 做; 你; 要; 单; 是; 不;
INTEGRATE,CHARACTER;CONVERT;MAXIM
UM;
结合; 字; 变换; 最大;
OF;TWO;VALUE;MINIMUM;A; OTHER;
的; 两个; 价值; 最小; 某一; 其他;
STRING;WHICH;PROBLEM;DISPOSE;SUBMIT;
字符串; 哪些; 问题; 处理; 提交;
DISPLAY;FLOW; CHART;ROBOT;MAIN;TIME;
显示; 流动; 图; 机器人; 主; 时间;
MONTH;DAY;YEAR; DONE;DATA;BASE;
月; 日; 年; 完成; 数据; 基础;
CONTROL;NETWORK;
OPTION;SCHEDULE;ICON;
控制; 网络; 选择; 时间表;
图标;
THEIR;SUB-TASK;LIST;OUT; UP;GIVE;
他们的; 子任务; 清单; 出; 上; 给;
QUESTION;ANSWER;IF;THEN;UNIT;HOUR;W
EEK;
问题; 回答; 假如,然后;单位; 小时;
周;
PERFORM;GO;ON;RESPONSE;ACTION;THIS;
执行; 去; 在上; 响应; 行动; 这;
STEP;PARAMETER;BELOW;RADIUS; NAME;
步骤; 参数; 下面; 半径; 名;
INITIAL;EXECUTE;SPACE;NUCLEAR;DESIGN;
初始; 执行; 空间; 核; 设计;
OPTIMIZE;LOWER;LEFT;
COMPUTE;TYPE;POINT;
优化; 更低; 左; 计算; 类型;
点;
INTEREST;DRAW;FACTOR;ZOOM;IN;HERE;S
TOP;兴趣; 绘; 因子;
画面推近;在;这里; 停止;
FULL; VERTICAL,HORIZONTAL,VIEW,
满; 纵向; 横向; 看景;
BOUNDARY,GROUP,BEGIN,SCALEUP,BALL,
边界; 团体; 首先; 扩大; 球;
BOUNCE,BACKGROUND; RECTANGLE;OVAL;
弹起; 背景; 长方形; 椭圆
形;
TRIANGLE;DIMENSION;ARBITRARY;SHAPE;
三角形; 层面; 任意形; 形状;
CIRCLE;SIZE;AGAINST; SIDE;LABEL;OBJECT;
圆形; 大小;以...为背景;方面; 标记; 物体;
COORDINATE;RANDOM;VALUE;VELOCITY;
坐标; 随机; 价值; 速度;
EQUAL;NOT;GREATER;LESS;
LEFT;RIGHT;LINK;
相等; 不是; 大于; 小于; 左; 右; 链
接;
LOGICAL;CONDITION;CONTINUE;FINISH;CL
OSE;
逻辑; 情况; 继续; 完成;
关闭;
ELSE;START;NOW;
DEFINE;AVAILABLE;GRAVITY;
其他; 开始; 现在; 定义; 可有的; 地心
吸力;
ACCELERATE;INTERVAL;STEP;FLOW;TABLE;G
OLF;
加速; 间隔; 步骤; 流动;表/桌;高
尔夫;
WATER;RATE;PUMP;TOTAL;MASS;CYCLE;AR
EA;
水; 率; 抽水机; 总数; 质量; 循环; 面
积;
LENGTH;PIPE; HEIGHT;WIDTH;TAX;RETURN;
长度; 输送管; 高度; 宽度; 税; 返回;
AMOUNT;PAYMENT;BASE;INTERPOLATE;H
OW;
数额; 付款; 基础; 插算; 如
何;
MANY;ELEMENT;THESE;HUMAN;DOCTOR;
许多; 要素; 这些; 人; 医生;
PINGPONG;WIN;CONTROL;PARAMETER;US
E;IT;
乒乓; 胜; 控制; 参数; 用;
它;
SETUP;EXIST;LOSE;EXPRESS;CONSTANT;PLU
S;
设置; 存在; 失; 明示; 常数;
加;
SHOULD;AMONG;SUB-OPTION;SUB-LEVEL;
应该; 在...之中; 子选项; 子分段;
POINT;COUNT;STATISTICS;RANGE;THEY;
ARE;
点; 计数; 统计; 范围; 他们;
是;
LOW;HIGH;LIMIT;QUANTITY;SERVICE;LOWE
R;
低; 高; 极限; 数量; 服务; 更低;
HIGHER;RACKET;CHARACTER;BLOCK;
较高; 球拍; 性质; 块;
SHAKE;HAND;MATCH;STYLE;KUNGFU;LETTE
R;
握; 手; 比赛; 风格; 功夫; 信;
EMAIL; NEW;RANK;PLAYER;ADDRESS;
电子邮件; 新; 等级; 运动员; 地址;
YOURS;HANDICAPE;VIRTUAL;WEB;SHUTDO
WN;
你的; 残障比赛; 虚拟的; 网; 关机;
POWER;EXIT;
电力; 退出;
ROBACUS CURRICULUM
The following are the subject
matters to be taught in schools
from elementary schools onward:
1. Installation of ROBACUS on
mageia linux
2. Learn some computer English
3. Know the naming convention
4. User-interface
5. Robotic editor
6. Diagnostic debugger
7. Natural language
programming
8. Software robots
9. Basic fortran, unix, c
10. Data linkage
11. ROBACUS video and files
The following schedule should be
used to get students familiar with
the inner working of ROBACUS:
Grade 1 to 3:
* Learn some computer English
Grade 4:
* Know the naming convention
Grade 5 and 6:
* User-interface
* Robotic editor
* Diagnostic debugger
* Natural language
programming
* Software robots
Grade 7:
* Installation of ROBACUS on
mageia linux
Grade 8 and 9
1. Basic fortran, unix, c
2. Data linkage
3. ROBACUS video and files
In high schools onward, qualified
students will be taught to become
developers of ROBACUS. And in
colleges, the selected few will learn
the control and coordination of the
ROBACUS network, OUTERNET.
Finally the most innovative and
reasonable among the ROBACUS
developers will be recruited to
expand and maintain the Universal
Centralized Processor, UCP. But
only those among them who have
managed to dissociate themselves
from all worldly lures of money,
power and fame will be invited
onboard UCP as policy makers.
NAMING CONVENTION SPECS
Programming is essentially an
exercise in naming. If only the
computer can do the naming itself,
it could do the programming itself
also. This is where naming
convention comes in.
So, in a way, naming convention is
aimed at making the computing
environment nameless to the user
-- no files and no variables! This is
the criteria for full automation and
natural-language programming.
But, before we make computer
follow the naming convention, we
must ourselves follow it, too.
I. NAME STRUCTURE
* All names for files and variables
are 6 lettered.
* Each name is divided into two
3-letter parts, except for
single-word name, which can use its
first 6 letters, padded by 0's if
needed.
II. PROGRAM FILE NAMES
1. The first 3-letter part describes
the program, and the last
3-letter part describes the
data.
2. Program Description
(1)Each program is identified with
2-letter unique prefix. It will be
chosen from the first 2 letters of
the program name, on a first come
first use basis, and also special
priority may be given to important
programs to use their first 2 letters
(see file, namrec).
(2)The types of processors for all
programs are identified in the third
letter as follows:
* i = input processor
* e = execution processor
* o = output processor
* 1 = generator of preprocessor
* 0 = postprocessor generator
* l = library source
* m = menu files (robmen) for
processors possessing robots
* r = reserved for hardwired menus
3. Data Description
* The file type is identified in the
fourth letter by:
* r = robot file (robcod=list of code
robots)
* i = input file
* e = execution file
* o = output file
* u = update source listing of
processor
* s = schematic boxes representing
components in a model that
processing can be skipped to
* f = figure schematics of
components
* g = graphics data
* m = menu file(men)(mencod=list
of code menus)
* h = how files
* a = absolute module of machine
instructions
* l = library or base module of
machine instructions
* p = plot data file
* b = box data file for selection
* t = tabulated data file or tree
structure
* d = data files summary listing out
all the linking data files named with
the 4th letter, d, replace by 0 thru 9
and their respective data argument
list and any format(if not binary).
(1)The last two letters are used to
uniquely identify the problem
model, which is formed by the 1st
letter of the 1st 2 keywords of the
model description, unless conflict
with other models occurs.
(2)Listings of identifiers(to avoid
conflicts) for files are
automatically kept in files:
* namrec = names of programs and
their prefixes
* menrec = menu names and
descriptions structure(updated
manually)
* rob*** = names of robots for a
prefix(***) for duplication check
* men*** = names of menus with
prefix(***) of processors possessing
robots
* ***nam = code subroutine names
and description
* **dvar = code variable
names( only available for generated
programs)
* mailog = names of current file
being
editted or diagnosed,etc.
* namlog = name of file being
processed
* roblog = robot name file being
processed
* autlog = automation control file
for demonstration
* collog = color identification
numbers for menu display
* ibmlog = 0 if PC or IBM
workstation, 1 if SUN
(4)VARIABLE NAMES and UTILITY
FILES
* Two key words are to be picked
from the description of the file or
variable. When picked
automatically by the computer,
either the first 2 words or words
preceded by an extra blank are
considered key words.
* Names are formed with the first 3
letters of the first key word and
first 3 letters of the second key
word. If only one key word is
available, use it as is with '0'
padding or truncate it to 6 letters if
longer than 6.
* Temporary or local names have
repeated letters such as "nnn",
instead of "num"ber or "vvv",
instead of "var"iable.
* Temporary, dummy indices use
"i", "j", "k", "l", "m" or "n".
* Temporary, dummy real variables
use "x", "y", "z", "u", "v" or "w".
5. MAJOR SOFTWARE LIBRARIES
AND FILES
* iolupd = i/o library source
routines in c-language and
Xwindows calls
* useupd = user interface fortran
source
* edeupd = editor fortran source
* dieupd = diagnoser fortran source
* ge1upd = code generator fortran
source
* na1upd = natural-language
programming program fortran
source
* pauupd = to pause the user
interface by showing the
background output
* ???lin = the linking file where ???
are 'use', 'ede', 'die', 'na1' and
'pau'.
* anrmen = the main menu
* edev?? = built-in hardwired
editor's robots where "?" typically
represents the basic command, but
can be easily expanded to include
combination or vanpool of
commands.
6. FORTRAN GRAMMAR
* limit statement length to 40
columns
* use statement numbers ending in
'0' for DO loops
* use statement numbers ending in
'5' for GOTO/CONTINUE statements
* the rest(1 to 4 and 6 to 9) are
used for ending FORMAT
statements
* for diagnostic debugging
statement's formats, use 4 digits
starting with '9'
* dont use any fortran rules that
are not specified in file forrul.html
7. I/O FILE UNIT NUMBERS
* 1 = for the major output
generated, such as the generated
fortran program, the input data
deck from preprocessor, or
debugging source files, etc
* 2 = the major input file
* 50 = the input robot file
* 60 = the output robot file
* 70 = the debugging output,
normally at the start and end of
subroutines executed
8. QUESTION/ANSWER routines
with robot
-reading and -writing capabilities
*QUEREA/QUEINT/QUEALP/QUEST
A/QUESTC/QUEMST
... are, respectively, for answers in
real, integer, alphanumerical,
statement, capital-letter statament,
multiple statements...
9. Menu selection routines(calling c
routine, selop?):
* MODSEL = select from a menu
* SELMEN = select from internally
described options
* MENPR? = menu processing used
in the user interface
10. Writing out statements:
* WRIMEG = writing out long
messages in one or multiple
windows
* WRISTA = writing out direct onto
terminal screen
11. Debugging considerations
* The following statements are
placed, respectively, at beginning
and end of a subroutine:
IF(LOGBUG.GE.1)WRITE(LOGDEB,90
01)...
CALL BUGFLU
9001 FORMAT('$$$ ENTERING
SUBROU')
IF(LOGBUG.GE.1)WRITE(LOGDEB,99
99)...
CALL BUGFLU
9999 FORMAT('$$$ ENTERING
SUBROU')
along with the COMMON/AUTDAT/
in which contains the control
variables, LOGBUG and LOGDEB.
The BUGFLU routine is used to flush
out the debugging statement right
after they are written, in case the
code bombs out unexpectedly.
* Other normal debugging write are
done with such statement as:
IF(LOGBUG.GE.2)WRITE(LOGDEB,99
11)...
And for long output, use
IF(LOGBUG.GE.3)...
* When debugging the editor, the
output unit should be the same as
the editor robot, or 60.
USER INTERFACE SPECS
User interface is a graphic display
using plain English that are
originally created by users. The user
interface provides the major
categories of analysis. Click to
invoke the particular category of
interest. You can also type in 1,2,3...
for the 1st, 2nd, 3rd ... category.
Pressing the [Enter] key invoke the
robot value, which is indicated by
where the mouse pointer is
situated.
The super-options at the upper
corners, Edit and Diagno, can be
clicked or invoked by entering 'e
filnam' and 'd', respectively.
Simply entering an 'e' edits the
previously edited file. Similarly, the
sub-options at the bottom can be
invoked by clicking or the first letter
of the option name.
Besides the e and d, and other
sub-option commands, you can set
up (3-letter) alias by entering
ALI=actual command, which can be
either ROBACUS or unix command
strings. Enter an = will display all
available alias. Doing an ALI= will
delete the "ALI" command.
Pressing [Backspace] brings you to
the background terminal display,
which is just the unix environment
showing the processing of
ROBACUS. Pressing [Enter] brings
back to the user interface.
[Ctrl+C], [Esc] or [Tab] closes the
user interface. "u" will restart it.
When processing is deep into an
actual analysis, the press of the
right button of the mouse will cause
the execution to perform on its own
automatically, with possible user
intervention by clicking the mouse
at a specific step.
The use interface is invoked by file
'useint', which iteratively execute
file 'tooexe' and 'useabs'. 'tooexe'
contains the next process requested
by the user, and 'useabs' is just the
absolute module of the user
interface program, which also does
automated bug check to see if the
process runs successfully. If not, it
proceeds to do automatic
debugging.
EDITOR SPECS
Today's editors, though useful, still
carry much unnecessary baggage.
The extra pressing of the [Ctrl] and
[Enter] keys are a truly waste for a
multitude of users. Unreasonable
designations of commands put a
strain on the brain, not to mention
the mistrust it contributes to the
users toward computing.
And finally the future of editing is
forever doomed, in that we will be
doing editing forever into the
future, as manual editing is in
essence a bottle neck for software
automation. The ultimate objective
of a good editor is doing away with
editing altogether.
ROBACUS' editor is designed to be
an extension of our hands, and
possibly also that of our brain. For
example, it's made as much
case-insensitive as possible. Also, it
is testing out a feature in which
typing of a string would mean
automatic search of the string
without first to have to type the
searching command -- kind like the
editor will go whereever the user is
thinking to.
This editor is robotic so that
eventually all editing sessions can
be performed by editing software
robots that can perform the
necessary string manipulation or
even programming thru editing, all
transparent to the users. In short,
this editor's mission is to make
itself disappear.
Another indispensable function of
the editing robot is in debugging.
The robot can be made to provide
as extensive a record as a user
wants of what truly occurred under
the hood, with the help of the
diagnoser's command option that is
set beforehand.
The use of the mouse is avoided as
much as possible, even though
some features have been
programmed in it. Any user, who
wants to use the mouse, needs to
make a strong argument to
reactivate these features. Thus, it's
deemed the mouse is too clumsy
for ultra-fast computing that
ROBACUS is designed for. On the
other hand, whenever the mouse
click is the most natural way to go,
ROBACUS go to extra effort to
provide equivalent key press
whenever possible.
So, as expected, this editor, during
its development, can be as handy as
it's unstable, much like our own
hands. The debugging can also
become extremely uncanny, much
like diagnosing our own brain.
However, this is the only way to
avoid the dead end to automation
mentioned above. The users
definitely need a lot of patient with
many of its defects. Why, it's only
human.
The editing commands are
presented and explained below:
I.HELP commands
h=summary list of commands
?=summary list of vanpool, or
users-generated string of,
commands
II.POSITION commands
[Page Down],[Page Up], up,
down, left and right arrows
[Tab] first go to middle of nonblank
part of the statement, second
pressing to end of line, then bottom
of page, then top of page
t=Top of file and search in
downward mode.
Second pressing of a 't' will display
the
top-down tree structure of the
subroutine
name entered.
b=Bottom of file and search in
upward mode.
Second pressing will display of
bottom-up tree structure of the
subroutines name entered.
d=Downward search to the string,
which is entered immediately
afterward
u=Upward search to the string,
same as in 'd'
&=Repeat previous search in
downward direction
^=Repeat search in upward
direction
n=Number of the line to go to,
2nd 'n' gives current line number,
and
next 'n' gives total number of lines
in the file
s=Go to start of subroutine
e=Go to end of subroutine
l=List of subroutines is displayed to
go to
c=Repeat previous string change
command in its next occurrence.
The old string is first searched to,
and then it is being typed over in a
uniquely defined area by the new
string with the use of left/right
arrows, Insert/Delete and
Backspace keys. The typing is
terminated by End or Enter keys.
r=Restore original line after
unwanted change with 'c'
a=Change all occurrences following
the current statement(caution, the
changed string must be made
unique)
[End]=Move the cursor to leftmost
so that
single-key command can be entered.
Also
in combination with first [Home] to
forms a
block of coding to be moved,
inserted or
deleted, written out, with,
respectively [Ins], [Del] and 'w' key
pressing.
[PgUp],[Pgdn]=In column > 1,
allows search up or down. But next
pressing gives the desired intends.
The above 1-letter command used
with
an [Enter] is also applicable when a
question is asked to prompt a
command or a string. In column>1
mode, any command can
be invoked by simultaneous
pressing of the [Ctrl] key. A better
way is the use of [PgUp] and [PgDn]
first.
The far right - and + can be used to
scroll the screen, respectively.
III. MODIFICATIONS
1. REPLACE
Simply type over the
characters to be replaced.
The entire string
surrounded by the leftmost
and rightmost characters typed
will be considered
as the replacement segment.
This replacement can be
repeated to other string in the
previously specified direction
by entering a 'c' in column 1.
End the replacement with
[Enter] or [End].
Enter an 'a' in column 1 will
change all occurrences
following the current
statement.
[Ctrl/] deletes everything to the
left, then moves down 1 line
[Ctrl\] deletes everything to right,
then moves straight down 1 line
2. INSERT
(1) New Text - start with 'i' and end
with [End].
[Space] means blank line.
(2) Imbedded String - start with [Ins]
and end with any arrow or [End]
(3) z=Zero in on a FORTRAN
statement to write out all of its
variables for future debugging
write.
3. DELETE
(1) Delete a Line -- [Backspace] in
column 1
(2) Delete a Character -- [Del] in
column > 1
(3) Delete a Block - - [Del] in column
1
VI. END SESSION
f=Finish and save
q=Quit and discard change(note:
the robot recording is saved,
however, to be used later if
needed.)
V.BLOCKING
1. Create a block by typing [Home],
then reposition and end with [End].
2. Immediately after forming a
block, a question will be asked for
the file name to which the block
can be extracted and appended
(same as 'w'riteout command). But
single-key command with [Enter] is
also allowed here.
3. Use [Ins] and [Del]
to insert and delete the block (no
[End]ing
is necessary, as it would be
automatically inserted by the Insert
and Delete command.
4. [Home] and [Insert]
duplicate the line, same as 'x'erox
command.
5. m=Move the block to the current
position
6. g=Get external file
7. j=Jack a subroutine from other
ROBACUS update source files.
8. w=Write out the block to
external file
9. p=Print block as hardcopy( no
[End]ing the block is necessary)
VI. SPECIAL FEATURES
A. ROBOTICS
1. All editing actions are recorded
2. The last editing session can be
reenacted out a line at a time with
the [Enter] key
3. The default action activatable by
[Enter] is displayed at the top of the
page
4. '$%' causes the robot to perform
rest of the editing (To enter a
character '$', enter '$' twice)
5. The robot file can be shifted up
or down with '$^' and '$&' to align
with the current editing
B. VANPOOL COMMAND
1. v=create vanpool, or
combination of, commands and
make them available to be invoked
by a digit.
The '?' gives description of available
vanpool commands and '#' for
deleting existing commends.
First "v" is used to start forming the
vanpool COMMAND, when
done specifying all editing
commands, a second "v"
terminated the process.
2.Digits "0" to "9" (and letters "a"
to "z", though not recommended)
can be used for vanpool
commands for used as "[1-letter]"
3.*=a variable command inside a
vanpool command
4. Vanpool commands, once
created, can be manipulated
externally and issued to perform a
capsulated task(to be completed in
a background batch mode).
C. ZERO IN ON A STATEMENT
The "z" command writes debugging
statements around the statement
to be zeroed in on and causes a
pause after the execution of the
statement and writing out of the
debugging statements.
D. FAST-TYPING SEARCH
COMMAND(temporarily disabled
due to varying speed of the
computer.)
An automatic search command is
invoked when the first two letters
are entered in rapid succession in
column 0 or in full screen editing
mode during a searching processing.
This feature needs more work to
eliminate the risk of unintentional
editing and timing adjustment of pc
of varying processing speeds.
E. KNOW VARIABLE DESCRIPTIONS
IN A STATEMENT
The "k" command would give the
description of each variable in the
statement, if a 'variable description'
section is available. This file is
automatically generated in
natural-language programming by
the software generator.
A 2nd "k" would explain the fortran
rule used.(i forget what the 3rd "k"
does。 go try it out yourself.).
F. YANK IN AN EXISTING
SUBROUTINE CALL STATEMENT
The "y" command provides easy
accessing of available library and
program subroutine modules.
G. JACK OVER A SUBROUTINE
FROM AN EXTERNAL FILE
The "j" command jacks a subroutine
over from another file.
H. EXTRACT COMPILATION AND
LINKING BUGS
The "x" command xtracts the bugs
occurred during compilation and
linking if the execution is submitted
to be offline in the background. The
editing robot that performs this
debugging exercise also can display
the actual error message by
'i'nserting the statement when the
[Enter] key is pressed after the bug
position is located.
I. BRACKET A BLOCK OF CODING
AND MAKE IT A SUBROUTINE
The 'o' command converts a block
of coding into a subroutine or
object and replace the block with a
CALL statement to the subroutine.
VII.EDIT TIPS
Some simple rules to remember
are:
* Ctrl+letter, when entered
anywhere, is the basic editor
command. But the most handy way
to use the editor is to avoid the Ctrl
key. Instead, make a habit of
pressing the [End] key after a full
screen edit sequence, so that the
1-letter command can be issued
from column 0.
* Once in column >0 full screen
editing is invoked(with space, right
arrow or tab keys)
* column 0 and after every
question(in combination with
[Enter] key) will honor the 1-letter
command.
* [Enter], [Home], [End] and moving
to column 0 cause editing to
leave full screen mode
* When it is important to keep a
record of the editing session for
someone else to see, "q"uit out the
edit session so the robot can be
used to repeat verbatim every step
of the session by simply pressing
the [Enter] keys, or '$%' to do it all
at once.
VIII. EDITOR DEBUGGING
* The editor is debugged by writing
debugging statements into the
robot(60).
* An old file 'edeabo' should be
copied from the
current 'edeabs' so that it can be
copied
back in case the editor is disabled
after
modification.
* For extensive modification,
relevant
subroutines should be moved to
the
small 'na1uuu, from which the
editor can
be modified at a faster speed.
IX. FINAL WORD
* This editor is handy and
powerful, rather than complex and
stable, in order to relieve the mind
to think about the problem at hand.
* To let computer do as much of the
work as possible, the user needs to
adjust to a bilateral interaction with
the computer. In practice, the user
needs to do more anticipating than
dictating.
Remember: The scenarios we
anticipate are those we set up for
ourselves, not that dictated by the
computer.
* The ultimate goal for ROBACUS is
to make editing unnecessary. This
can be realized once we identify all
the individual and combinatorial
functions that the editor performs.
All we need to do then is to
transparently send the robot to
perform those functions we desire.
The full-screen data entry as if one
is filling a standard form is an
example of the application of
the editor.
IX.PLANNED MODIFICATIONS
When running into a bug in editor,
the user can send for help, by
providing either the file fil060, if
bomb out unexpectedly, or the file
eder??, where ?? is the prefix of the
file being editted, if the editting
session ends normally.
* implement the fast-typing, direct
search(without typing the "d" or
"u")
* clean up full screen editing
involving
multiple use of [Ins] and [Del]
in one line
* clean up [Ins] and [Del] of
[linefeed](or [Enter]) at the end
of statement
* catch a scenario in which the
editor mysteriously inserts a "C" or
some Cntrl* in column 1
* why does repeated [Ins] of a block
at different locations produces
infinite loops?
* "o" option lacks some external
files
* block changed by deleting( or
inserting) lines
* move block addresses to new
locations with insert, move, and get
* use '*' as wildcard letters in
search
* 'c'hange move to 1st character
changed(use ctrl+c afterwards)
* automatic paging
* automatic inserting of
[linefeed] at column 41
* dont cover the top or bottom line
with question, such as "SEARCH...?"
* e at bottom of file goes to end of
last subroutine(above the job
control statements)
* "c" should change upward if
previous search is ^ or ctrl ^
DIAGNOSER SPECS
Debugging can be as nerve racking
as programming can be fun.
ROBACUS tries to balance the two
by put enough discipline in
programming that debugging
becomes manageably predictable.
In fact ROBACUS has made
debugging so systematic that it can
be fully automated.
ROBACUS' commitment to full
automation, when it applies to
debugging, however, represents by
far the greatest challenge
undertaken by any software group
in the world of computing. This is
where software robots become
indispensable.
We just need to create some real
hardworking robots to handle the
works that are too cumbersome to
do manually. The time-consuming,
iterative nature of debugging fits
nicely with the emerging, new,
processing-hungry computers.
The basis of debugging is diagnosis.
We simply let the bug reveal itself
by revealing the processing around
it.
This is done by systematically
putting
"IF(LOGBUG.GE.1)WRITE(LOGDEB,9.
..)..." statements at the start and
end of each subroutine, as well as:
"IF(LOGBUG.GE.2)WRITE(LOGDEB,9.
..)..." in places relevant to the
troubled area, where LOGBUG can
be set to 1,2 or 3 and LOGDEB can
be set to 70 or 6 or, 60 for editor.
Pushing this to the limit, ROBACUS
actually perfected a scheme where
every statement is written out
dynamically in the path of the
subroutine's execution. This allows
revealing of the execution flow
path and pinpointing the statement
where the execution gets bombed
out.
To diagnose/debug, simply enter:
'd' or click the Diagno button at the
upper right. Then select one of the
following option:
1. TRACK ROUTINES
2. ALSO INTERNAL VARIAB
3. MANUAL DEBUG AND TRACK
4. AUTO DEBUG COMPILE EXE
5 LINE TRACK OF ROUTINE
These are 5 levels of background
tracking of the execution.
In the case of the editor, we can
also take advantage of the robot
file that keeps a log of all the
commands issued. In this robot file,
we could also write in it via unit 60
all the debugging statements, and
when intermingled within the
sequences of editing command, it
gives a clear picture of what's going
on during the editing session.
The diagnoser will set up two
update source files that contain
debugging statements. The first file,
codu0c, where 'cod' is just the
3-letter ID of the code, does a full
compilation of all the subroutines
to generate the new library for
linking. The second file, codu0d,
then can be used iteratively to only
modify and compile the troubled
subroutine.
The line-by-line tracking is pretty
much a full-brute-force, fool-proof
way of tracking down the bug. It
guarantees to pin down where the
bug occurs and the
statement-by-statement execution
that leads to it. But this process
may be very lengthy, so it will be
automated soon.
In the automated debugging
process, the diagnoser would
automatically bring you to editing
the troubled statement, inside the
troubled subroutine, and also make
it ready to be submitted and
executed again.
The detailed auto debugging
strategy is described below:
1. search out in which subroutine
the bug exits
2. search out at which statement
the bug exits
3. the file containing the subroutine
is edited and the subroutine and
then the statement are searched so
that the cursor will end up at the
bug position
4. this file can be modified and
recompiled iteratively until the bug
is resolved
The automated process involving:
* read the last record of unit
70(fort.70) to see if the
"SUCCESS..." statement
exits(written out in SUBROUTINE
AUTPUT) that indicates no bug
occurred
* if SUCCESS is nonexistent, then
unit 70 is searched backward to
locate the 1st 'ENTERING...' that
does not have a matching
'EXITING...' statement for the
particular subroutine. This indicates
a subroutine, that has been entered,
but never exit, thus, contains the
bug.
* generate codu0c and codu0d for
the file that contains the bug
subroutine.
* codu0c is compiled to produce an
executable that produce a
line-by-line tracking, capable of
pin-point the line at which the
execution bombs out.
* problem is automatically
re-executed by the problem's
software robot using codu0c's
executable
* the bug statement will be read as
the last statement in the debugging
output
* codu0d is then edited by an
'edirob' which robotically search for
the bug statement.
* if the nature of the bug is known,
a bug-fixing robot will be used to fix
it automatically.
* otherwise, codu0d can be used
iteratively to fix the bug.
* if the same kind of bug is
expected to occur in the future, an
editing robot can be constructed to
fix the bug automatically. A
search and selection scheme is also
constructed to selectively activate
the bug-fixing feature during
automated debugging.
NATURAL LANGUAGE SPECS
Natural language is the most
natural way to express a physical
phenomenon or an operational
procedure, through native language,
which we should use an
abbreviated set of English that we
call universal language.
"Natural", however, does not imply
natural only to human, although it
intends to mean ultimately the
most natural to humans. This is
because many of what humans
consider to be natural are really
what are only most familiar to them.
It is therefore only making sense
that humans should give
themselves ample chances to
become familiar with new
environments that are potentially
more natural such as a fully
automated computing platform in a
logical society.
And also, the computer does have
its preferred ways of behavior and
the human can definitely benefit
from learning and appreciating
some of them before deciding what
is natural.
In fact, being not aware of the
better ways, with which computer
could perform certain tasks, has
been the downfall of previous
attempts to naturalized
programming language. In a way,
natural language is built upon the
foundation of computer intelligence,
rather than human artificial
intelligence.
Practically, the whole effort is one
in which we are trying to shift the
burden of thinking from human to
the computer. It is hoped that once
the difficult work of thinking is
taken over by the unlimited
capacity of the computer, the
limited precious resources of the
human brain could be put to more
high-quality, specialized uses.
So what are natural? Let's count the
ways.
First, in all derivations in the
solution of a problem, the starting
point should be the question for the
final answer. Once the human
describes the answer he is seeking,
the computer would take over the
line of questioning. Leading the
human down a structured and
disciplined way of answering the
questions, the computer would lead
the human on a logical path of
processing while, at the same time,
carrying on the cumbersome chore
of bookkeeping the variables and
the conditions, or equations,
toward bring in the solution to a
close.
Once the computer determines that
the problem is solved, it would flip
the whole processing procedure
upside down and translate them
into computer coding, which we
shall make it universally Fortran,
plus some c-language whenever
necessary.
In converting operational
procedures to computer programs,
the natural language programming
program simply guides the user in a
structured way down the
procedures. In this case the
computer would track all branch
points and, in turn, bring each to
termination.
In graphics and animations, most of
the programming should be built-in.
User should be facilitated to pick
and choose from a self-sufficient
set of features, which could be
generated either manually or by
natural language beforehand.
Eventually all programming will be
done with the natural-language
programming language. And as
much as possible everything will be
vocalized, instead of using
keyboard and mouse control.
The natural language programming
has thus far tried to address all the
basic areas in computer analyses.
These include:
1. Analysis automation is
achieved with the help of
preprocessors and
postprocessors. The
automation loop is completed
when the preprocessors and
postprocessors themselves are
generated in natural language.
2. Operation procedures are
automated by using a systematic
and versatile truth-table
constructor. The result is a
graphics-driven operational
procedure that can be generated
and executed in the same session.
3. Flow network of various types of
components, such as those found in
piping system and any dynamic
structure, can be set up to produce
the graphic analysis model for large
production codes or built into such
codes themselves.
4. Schedulings of projects and
inventory control are hardwired
into the natural language program
based on previously constructed,
natural language programs.
5. Multi-level-menu driven
modeling of various physical or
social phenomena, such as health
care and sport analysis, have been
naturalized to allow an expert in
certain field to computerize his
knowledge and experience without
having to know anything about
computer.
6. Simulation of general physical
phenomena, often via animation,
will be the major thrust of the
natural language programming
effort. The goal is to rewrite in
natural language all the existing
simulation programs that have
been written in computer
languages.
Extensive benchmarking efforts
need to be carried out between the
natural-language programs and
those of the computer language, as
well as with experimental data. This
would be the only way that the
computing community can free
itself from the restriction by the
large sizes of the programs and the
large numbers of programmers that
can be involve in its development.
Natural language programming,
with the aid of software robots, is
designed for collective
programming that would be
comprehensible to all the
programmers, whose number,
therefore, can be unlimited.
SOFTWARE ROBOT SPECS
All the processing on ROBACUS are
recorded into verbatim document
files. These files are called software
robots, as they can re-enact the
processing on their own.
To invoke robot processing, simply
click the option down the
processing route you want, Or use
the [Enter] key to accept the robot
default value and mouse
click(indicated by the mouse
pointer). Clicking the left mouse
button invokes the step-by-step
processing. Clicking the right button
invokes automated processing by
robot. You can always interrupt and
take over the control by clicking the
left button. At that point, you can
just modify the processing by
entering new data.
For lengthy processing, a schematic
is displayed at the beginning of the
processing that contains all the
components of the processing. By
clicking a component box will direct
the robot to execute to that
component offline, so that the user
can start processing at that
component. A clicking of the right
button would again direct the robot
to execute automatically to the end
of processing, unless interrupted by
a left button press. Press the [End]
key would take a user directly to
the end results.
The robot file is named with the
fourth letter being 'r'. The first 2
letters indicate the program. The 3rd
indicates type of processing - input,
output, generation, preprocessing
and post-processing. The 5th and
6th letters indicate the problem
model. In certain cases it is possible
to modify the robot file directly to
make the desired modification to
the problem. But this does not
guarantee the processing will be
consistent and correct. So such
practice is not recommended.
FORTRAN SPECS
FORTRAN is used to develop
ROBACUS because of its simplicity.
In fact, only a subset of FORTRAN is
allowed to be used to achieve
maximum simplicity. All English
alphabets are capitalized for easy
visibility. Furthermore, a variable
naming convention and strict
grammar is followed to allow users
to expect maximum consistency
and structure in the program
modules. All this is extensively
planned out in preparation for the
ultimate aim of finally passing all
the programming to the computer.
The FORTRAN rules are described
with the help of actual sample
statements. The naming of variable
and FORTRAN grammar are
explained in the naming convention
file, namspe.html.
1. Comments are precede by a "C"
in column one:
C*** EXECUTION FLOW CONTROL
***
2. Subroutine statement with name,
SUBNAM, starting in column 7, with
arguments, ARGNA1 and ARGNA2,
which are passed between the
subroutine and its calling routine:
(6 spaces)SUBROUTINE
SUBNAM(ARGNA1,ARGNA2)
3. Character strings are declared for
argument and other variables with
length=40.
(6 sp)CHARACTER*(*) ARGNA1(1)
(6 sp)CHARACTER*40 TITLES,QUESTI
where the character length for a
string only needs to be declared as
'*(*)' and the size of an array as (1).
4. the RETURN/END statements are
used to end a subroutine
(6 sp)RETURN
(6 sp)END
5. Calling statement of this
subroutine:
(6 sp)CALL
SUBNAM(ARGNA1,ARGNA2)
6. Dimension statement declare
array
dimension:
(6 sp)DIMENSION REAARR(10)
7. Integer variables are prefixed by I,
J, K, L, and M. All else are real
variables.
8. Common block, AUTDAT,
declares common use of variables
in different subroutines. Any
numbers enclosed in
parentheses(see rule 7) are the
number of elements in the arrays:
(6sp)COMMON/AUTDAT/LOGAUT,
NUMAUT,LOG
9. Continuation signal is a '+' in
column 6:
(5sp)+COL(20),LOGBUG,LOGVER,IDE
AUT(1050)
10. Character string operation
where the resultant string is equal
to 1st NUMCHA characters
combined with the segment
between 5th and 10th character
and attached by the last LASCHA
characters of, respectively, RESSTR,
STRONE and STRTWO.
(6 sp)CHARACTER*40
RESSTR,STRONE,STRTWO
...
(6sp)RESSTR=RESSTR(:NUMCHA)//S
TRONE(5:10)
(6 sp)+//STRTWO(LASCHA:)
11. Assign a string value to QUESTI
(6 sp)QUESTI='TIME INCREMENT?'
12. Initialization of variables is done
with DATA statements:
(6 sp)CHARACTER*6 ANIFIL(2)
(6 sp)DATA
ANIFIL/'table0','boubal'/
13. GOTO statement goes to a
CONTINUE statement:
(6 sp)GOTO 155
...
155 CONTINUE
14. IF/THEN/ENDIF block enclose a
contingent execution process:
(6 sp)IF(LOGFIR.EQ.1)THEN
...
(6 sp)ENDIF
15. DO loop indexes sequential
execution involving elements of
arrays:
(6 sp)DO 100 I=1,IM
(6 sp)SUMVAL=SUMVAL+EACVAL(I)
100 CONTINUE
16. Arithmatic operators are:
+,-,*,/,** for add, subtract, multiply,
divide and raising to the power,
with precedence start with:
(**),(/,*),and (+,-) ,and parentheses
can be used to force the operations
enclosed to be executed as a group
prior other executions.
* Relational operators are:
.EQ.,.NE.,.GT.,.GE.,.LT.,.LE.,.AND.
and .OR. for equal, not equal,
greater than, greater and equal,
less than, less or equal, logical AND
and logical OR.
* External files can be OPENed
with:
(6 sp)OPEN(11,FILE='extfil')
where both '11' and 'extfil' can be
replaced by an integer and a
character variables, respectively.
17. READ and WRITE statements are
used to read in data from
keyboard(on unit 5), robots(50),
and other files, and write out data
to screen(6),robots(60), debugging
file(70, except editor on 60), and
other files:
(6sp)WRITE(NUMINP,1111)REAVAR,
INTVA1,
(5sp)+INTVA2,CHAVAR
1111 FORMAT('REAL
VARIAB=',1PE12.4/
(5sp)+'INTEGE VARIABS=',2I5/
(5sp)+'CHARAC VARIAB=',A40)
18. Unformatted READ(N)/WRITE(N)
can also be done without specifying
a format number.
19. Where the format statement
1111 FORMAT specifies the format
of the variables to be outputted,
with real number formats being the
floating format, 1PE12.4, meaning 1
non-zero digit to the left of decimal,
a total of 12 spaces and 4 spaces to
the left of the decimal, and also the
fixed-point format, F10.2, with
similar meaning except the
exponential part,...E0?, absent.
2I5 means 2 integer variables in 5
spaces and A40, 40 spaces.
The single quotes are used to
enclose string to be directly
displayed in the output. Double
quotes can also be used when
single quotes are to be displayed.
20. A check for the end of file can
be included in a READ statement:
(6sp)READ(11,1111,END=185)STATE
M
...
185 CONTINUE
21. Files can be released or deleted,
respectively, by:
(6 sp)CLOSE(11)
(6 sp)CLOSE(12,STATUS='delete')
22. Main-program subroutine does
not need a subroutine statement
C***** MAIN PROGRAM
********** C SUBROUTINE MAIN
23. The execution can be stopped
by:
(6 sp) STOP
DATA FILE SPECS
ROBACUS would have a difficult
time understanding the big fuss
people made about data base. This
is because ROBACUS never needs to
be conscientious about the
existence of a data base. Everything
is done in the natural course of
action, with data files automatically
managed by ROBACUS via a
unambiguous naming convention
built into the software modules.
The only time things becomes
nontrivial is when data files are
used to link independent processing.
Yet, still, everything is in the names.
We need a versatile naming
convention with a file bookkeeping
system that is clearly understood by
all ROBACUS modules.
As described in the file
namspe.html, or naming
convention html file, the file
bookkeeping is done by the data
file that has the alphabet, 'd', as the
4th letter. This data file summarizes
all the linking data files named with
the 4th letter, d, replaced by 0 thru
9 and their respective data
argument list and any format(if not
binary).
At the beginning of a processing
where data or graphics files are
generated, the user would be asked
whether where each of the files is
linked to. This and other
information about the file would be
stored in the file, ???d??, where the
1st 3 '?'s are the prefix and type of
the processing module to be linked
and the last 2 '?'s identifies the
problem modeled of the linked
processing.
Specifically, after prompting for the
information about ???d??, a check
of the file would be performed to
see if the generated file is already
listed in the ???d?? file to
determine if writing it in is needed.
Then at the beginning of the linked
processing, a check would again be
made of the existence of the ???d??
file. If it does, the data file names
would be read off and provided for
selection by the user during the
processing. In the menu for the
selection of all the files in ???d??,
an option for removal of a
particular file should be provided in
case a file is found that is now
useless.
ROBACUS VIDEO CLIPS
ON YOUTUBE
ROBACUS DEMOS FOR BALL DROP
AND SPACE NUCLEAR REACOR
DESIGN
https://www.youtube.com/watch?v
=jzEj6rQOWfU
ROBACUS song -- RObotic aBACUS,
in Chinese
https://www.youtube.com/watch?v
=nGoMIqJx120
ROBACUS song -- RObotic aBACUS,
in English
https://www.youtube.com/watch?v
=_8SqrU4nfeo
Video presentations of ROBOCOM,
predecessor of ROBACUS
ROBOCOM PREFACE -- Robotic
Computing
https://www.youtube.com/watch?v
=aUhNe1l6spc
ROBOCOM Overview -- Part I
https://www.youtube.com/watch?v
=jr91NedvVV4
ROBOCOM -- Overview -- Part II
https://www.youtube.com/watch?v
=4EKZNTOK6vM
ROBOCOM -- Introduction -- Part I
https://www.youtube.com/watch?v
=QXRn-agiIeo
ROBOCOM -- Introduction -- Part II
https://www.youtube.com/watch?v
=H_XcpqtU6-I
0:03 / 5:18
ROBOCOM Development -- Part I
https://www.youtube.com/watch?v
=p9X4iS6xW-I
ROBOCOM Development -- Part II
https://www.youtube.com/watch?v
=BNYeaOj-6Ak
THE DREAM MACHINE, the ultimate
computer game for materialist
https://www.youtube.com/watch?v
=RmvitF6LEss
Major program sources of ROBACUS:
iolupd = c-language program(with
xwindows system) for i/o and windows
management
na1upd = natural-language
programming language in fortran,
interpreted by f2c
edeupd = robotic editor(use "e filename"
to edit filename) enter "h" to get help
dieupd = diagnostic debugger
useupd = user interface controller