4gl

DATABASE ds
 
GLOBALS "../../config/top.global"
 
DEFINE g_curs_index           LIKE type_file.num10
DEFINE g_row_count           LIKE type_file.num10
DEFINE g_imas                    INTEGER
DEFINE g_ima                      INTEGER
DEFINE g_sure                     STRING
DEFINE g_ima121                INTEGER
DEFINE g_ima122                INTEGER
DEFINE g_ima123                INTEGER
 
MAIN
   OPTIONS
        INPUT NO WRAP
   DEFER INTERRUPT
   IF (NOT cl_user()) THEN
      EXIT PROGRAM
   END IF
   WHENEVER ERROR CALL cl_err_msg_log
   IF (NOT cl_setup("AZZ")) THEN
      EXIT PROGRAM
   END IF
   CALL cl_used(g_prog,g_time,1) RETURNING g_time
   OPEN WINDOW p_zz_w WITH FORM "azz/42f/p_test" ATTRIBUTE(STYLE=g_win_style CLIPPED)
   CALL cl_ui_init()
   LET g_action_choice = ""
   DISPLAY base.Application.getProgramName() TO name
   INITIALIZE g_imas TO NULL
   LET g_sure="N"
   CALL test_menu()
   CLOSE WINDOW p_zz_w
      CALL  cl_used(g_prog,g_time,2) RETURNING g_time #No:MOD-580088  HCN 20050818  #No.FUN-6A0096
END MAIN
 
FUNCTION test_count()
  WHILE TRUE
     INITIALIZE g_ima121 TO NULL
     INITIALIZE g_ima122 TO NULL
     INITIALIZE g_ima123 TO NULL
     CLEAR FORM
     MESSAGE ''
     DISPLAY g_sure TO s123
     INPUT  g_ima121,g_ima122 FROM ima121,ima122
         LET g_ima123=g_ima121+g_ima122
         LET g_ima=g_ima123
     IF INT_FLAG THEN
               MESSAGE "crash!!"
               LET INT_FLAG = 0
               EXIT WHILE
     END IF
     LET g_imas=g_ima
     DISPLAY g_ima121 TO ima121
     DISPLAY g_ima122 TO ima122
     DISPLAY g_ima123 TO ima123
     IF g_ima123 IS NULL THEN
            CONTINUE WHILE
     ELSE
            MESSAGE "count successfully!!" ATTRIBUTE (YELLOW)
     END IF
   EXIT WHILE
  END WHILE
END FUNCTION
 
FUNCTION test_menu()
  MENU ""
        BEFORE MENU
           CALL cl_navigator_setting(g_curs_index, g_row_count)
        ON ACTION insert
            LET g_action_choice="insert"
                 CALL test_count()
        ON ACTION query
            LET g_action_choice="query"
        ON ACTION sure
           CALL test_sure()
        ON ACTION modify
            LET g_action_choice="modify"
            IF g_sure MATCHES "[Y]" THEN
                MESSAGE "can't not change"
            ELSE
                 CALL test_sq()
            END IF
        ON ACTION invalid
            LET g_action_choice="invalid"
        ON ACTION exit
            LET g_action_choice = "exit"
            EXIT MENU
        ON ACTION controlg
            CALL cl_cmdask()
        ON ACTION locale
            CALL cl_dynamic_locale()
          CALL cl_show_fld_cont()                   #No:FUN-550037 hmf
        ON IDLE g_idle_seconds
           CALL cl_on_idle()
           CONTINUE MENU
      ON ACTION about         #MOD-4C0121
         CALL cl_about()      #MOD-4C0121
        COMMAND KEY(INTERRUPT)
             LET INT_FLAG=FALSE         #MOD-570244    mars
           LET g_action_choice = "exit"
           EXIT MENU
         ON ACTION related_document    #No:MOD-470515
           LET g_action_choice="related_document"            
    END MENU
END FUNCTION
 
FUNCTION test_sq()
     MESSAGE ''
     LET g_imas=0
     IF g_ima MATCHES "[0]" OR g_ima IS NULL THEN
          MESSAGE "!g_ima123=0"
     ELSE
           LET g_ima121=g_ima
           LET g_ima122=g_ima
           LET g_imas=g_ima121*g_ima122
           DISPLAY g_ima121 TO ima121
           DISPLAY g_ima122 TO ima122
        DISPLAY g_imas TO ima123
        LET g_ima=g_imas
     END IF
END FUNCTION
 
FUNCTION test_sure()
  IF g_sure="N" THEN
    IF g_imas IS NULL OR g_imas MATCHES "[0]" THEN
        MESSAGE "g_imas is null !!"
    ELSE
        LET g_sure="Y"
      DISPLAY g_sure TO s123
      MESSAGE ''
    END IF
  ELSE
      MESSAGE "Have been identified!"
  END IF
END FUNCTION

4fd

<?xml version="1.0" encoding="UTF-8" ?>
<Form CHECKSUM="-1" browserStatus="true" database_name="ds" fourSTFile="" gstVersion="11401" height="25" lstrtext="false" lstrtoallcomment="false" lstrtoallitem="false" lstrtoalltext="false" lstrtoalltitle="false" name="p_test" posX="0" posY="0" spacing="normal" text="p_test" width="91">
<Grid fontPitch="default" height="16" hidden="--------" hrecindex="-1" lstrcomment="false" name="gr16" posX="1" posY="1" width="74">
<Text height="1" hrecindex="-1" name="text38" posX="16" posY="1" text="這是手寫的第一個簡單的不能再簡單的,簡單的甚至都不叫做4gl的4gl" width="34"/>
<Text height="1" name="text40" posX="25" posY="3" text="下面將實現一個簡單的計算器功能" width="15"/>
<FormField colName="ima121" fieldtype="FORM_ONLY" name="ima121" sqlDBName="formonly" sqlTabName="formonly">
<Edit autoNext="--------" case="NONE" century="R" color="black" colorCondition="black" data_type="INTEGER" fontPitch="default" formfieldname="formfield0" height="1" hidden="--------" invisible="--------" justify="none" lstrcomment="false" name="ima121" noEntry="--------" notNull="--------" posX="26" posY="5" required="--------" reverse="--------" scroll="--------" sizePolicy="initial" tabIndex="1" verify="--------" width="8"/>
</FormField>
<FormField colName="ima122" fieldtype="FORM_ONLY" name="ima122" sqlDBName="formonly" sqlTabName="formonly">
<Edit autoNext="--------" case="NONE" century="R" color="black" colorCondition="black" data_type="INTEGER" fontPitch="default" formfieldname="formfield1" height="1" hidden="--------" invisible="--------" justify="none" lstrcomment="false" name="ima122" noEntry="--------" notNull="--------" posX="26" posY="7" required="--------" reverse="--------" scroll="--------" sizePolicy="initial" tabIndex="2" verify="--------" width="8"/>
</FormField>
<Text height="1" name="text26" posX="9" posY="5" text="num1" width="4"/>
<Text height="1" name="text27" posX="9" posY="7" text="num2" width="4"/>
<FormField colName="name" fieldtype="FORM_ONLY" name="name" sqlTabName="formonly">
<Edit autoNext="--------" case="NONE" century="R" color="black" colorCondition="black" data_type="VARCHAR" fontPitch="default" formfieldname="formfield0" height="1" hidden="--------" invisible="--------" justify="none" lstrcomment="false" name="name" noEntry="--------" notNull="--------" posX="5" posY="3" required="--------" reverse="--------" scroll="--------" sizePolicy="initial" tabIndex="5" verify="--------" width="17"/>
</FormField>
<Label color="black" colorCondition="black" flag_text_changed="TRUE" fontPitch="default" height="1" hidden="--------" justify="none" lstrcomment="false" lstrtext="false" name="lb15_1" posX="9" posY="11" sizePolicy="initial" text="確認碼" width="6"/>
<FormField colName="s123" fieldtype="FORM_ONLY" name="s123" sqlDBName="formonly" sqlTabName="formonly">
<Edit autoNext="--------" case="NONE" century="R" color="black" colorCondition="black" data_type="INTEGER" fontPitch="default" formfieldname="formfield2" height="1" hidden="--------" invisible="--------" justify="none" lstrcomment="false" name="s123" noEntry="--------" notNull="--------" posX="26" posY="11" required="--------" reverse="--------" scroll="--------" sizePolicy="initial" tabIndex="4" verify="--------" width="8"/>
</FormField>
<FormField colName="ima123" fieldtype="FORM_ONLY" hrecindex="-1" name="ima123" sqlDBName="formonly" sqlTabName="formonly">
<Edit autoNext="--------" case="NONE" century="R" color="black" colorCondition="black" data_type="INTEGER" fontPitch="default" formfieldname="formfield0" height="1" hidden="--------" invisible="--------" justify="none" lstrcomment="false" name="ima123" noEntry="--------" notNull="--------" posX="26" posY="9" required="--------" reverse="--------" scroll="--------" sizePolicy="initial" tabIndex="3" verify="--------" width="18"/>
</FormField>
<Text height="1" name="text5" posX="9" posY="9" text="num3" width="4"/>
</Grid>
</Form>

文章来源: 放牛娃blog | 个人技术小站

尝试写一写4gl与4fd的更多相关文章

  1. 不管你以后写不写JS,都应该学会这种思考方式

    昨天在网上看到了一篇文章说程序员写不过35这种说法,但事实上,确实并不能每个人都像我一样,在写JS中找到乐趣,就乐意写这东西直到50岁眼瞎为止. 那肯定有人要问,也许我不仅写JS写不到35,可能我连3 ...

  2. 开发(ASP.NET程序)把写代码写至最有面向对象味道

    前几天,搬房子时又拿起<重构----改善既有代码的设计>这本书来随便翻来看下,重构Refactoring在开发时,是时常也经常会使用得到. 她确实教我们怎样把写程序写简洁,清楚 好明白,好 ...

  3. Swift 函数调用到底写不写参数名

    最近真正开始学 Swift,在调用函数的时候遇到一个问题:到底写不写函数名? 我们来看两个个例子: // 1 func test(a: Int, b: Int) ->Int { return a ...

  4. 回写盘写速度被限速为10M左右

    问题现像如下图所示: 用hd-speed等测试虚拟盘速度都能达到90M/s左右,但复制文件到虚拟盘速度最高只有10M/s 原因:由于客户机开机加载这个随机驱动和随机进程后,会对磁盘启动进程等有扫描检查 ...

  5. CS代码代写, 程序代写, java代写, python代写, c/c++代写,csdaixie,daixie,作业代写,代写

    互联网一线工程师程序代写 微信联系 当天完成特色: 互联网一线工程师 24-48小时完成.用心代写/辅导/帮助客户CS作业. 客户反馈与评价 服务质量:保证honor code,代码原创.参考课程sl ...

  6. Kotlin尝试之一:写代码前的准备

    Kotlin是一种静态类型的编程语言,可在Java虚拟机上运行,也可以编译为JavaScript源代码. 其主要发展来自位于俄罗斯圣彼得堡的JetBrains程序员团队. 虽然语法与Java不兼容,但 ...

  7. 用CIL写程序:写个函数做加法

    前言: 上一篇文章小匹夫为CIL正名的篇幅比较多,反而忽略了写那篇文章初衷--即通过写CIL代码来熟悉它,了解它.那么既然有上一篇文章做基础(炮灰),想必各位对CIL的存在也就释然了,兴许也燃起了一点 ...

  8. 写js写傻了,明天研究一下异步

    在html某元素上绑定一个click事件,该事件是一个执行事件很长的函数,比如执行几十亿或几百亿次加法,那么在这个函数执行的过程中,其他元素绑定的事件,是如何触发的呢,异步触发还是同步,触发时是怎么执 ...

  9. PHP_Bibel阅读学习(一)——看书看经典,写文写代码

    基础快速再看一下,然后每天有新的好玩的看. 这本书,反正好评不少,就是`PHP和MySQL Web开发`,机械工业出版社,澳洲人写的,红皮,有兴趣的可以看一下. 第一篇 使用PHP 一.入门 5分钟翻 ...

随机推荐

  1. list 和 [ ] 的功能不相同

    对于一个对象: list(对象) 可以进行强制转换 [对象] 不能够进行强制转换,只是在外围加上 [ ] 列表推导式中相同   2020-05-06

  2. Springboot+Mybatis+Clickhouse+jsp 搭建单体应用项目(一)

    一.服务器安装clickhouse服务 参阅 :https://www.cnblogs.com/liuyangfirst/p/13379064.html 二.连接数据库 成功 三.新建库 CREATE ...

  3. PHP mysqli_real_escape_string() 函数

    转义字符串中的特殊字符: <?php 高佣联盟 www.cgewang.com // 假定数据库用户名:root,密码:123456,数据库:RUNOOB $con=mysqli_connect ...

  4. 6.28 NOI模拟赛 好题 状压dp 随机化

    算是一道比较新颖的题目 尽管好像是两年前的省选模拟赛题目.. 对于20%的分数 可以进行爆搜,对于另外20%的数据 因为k很小所以考虑上状压dp. 观察最后答案是一个连通块 从而可以发现这个连通块必然 ...

  5. 一本通 高手训练 1788 爬山 dp 斜率 凸包

    LINK:爬山 很早以前看的题目 发现自己想的完全不对 这道题还是比较有价值的. 先不考虑走的路线问题 考虑某个点能看到的最高的山. 分左边和右边来考虑 考虑左边 利用单调栈存长度单调递减的山 不能直 ...

  6. 虹软人脸识别—版本升级接口修改说明(C#)

    自虹软发布了免费.离线版本人脸识别SDK,在Github上陆续分享了各个版本对应的 C# Demo.因为公司项目一直在使用虹软的SDK,因此每当虹软官网有新版本发布,我都会进行了解,并结合Demo进行 ...

  7. python 把多个list合并为dataframe并输出到csv文件

    import pandas as pd a = [1,2,3] b = ['a','b','c'] test = pd.DataFrame({'a_list':a,'b_list':b}) 将两个列表 ...

  8. CF习题集三

    CF习题集三 一.CF8C Looking for Order 题目描述 \(Lena\)喜欢秩序井然的生活.一天,她要去上大学了.突然,她发现整个房间乱糟糟的--她的手提包里的物品都散落在了地上.她 ...

  9. Dropzone.js文件拖拽上传提示Dropzone already attached 解决

    最近收到客户的反馈,在操作上传文件有时会出现没有任何.大部分时间是正常. 重现问题后,f12打开后台控制台发现如下提示: Uncaught Error: Dropzone already attach ...

  10. 网络安全传输系统-sprint1传输子系统

    一.产品规划与设计 二.传输子系统 基本框架:(1)不带安全功能的传输系统 (2)安全加密功能 part1:基本传输子程序设计(不带安全加密功能) 客户端 服务器 int main(int argc, ...