学习笔记(三)

源代码结构包括数据定义和处理块两部分;

数据定义部分包含整个程序中可见的全局数据类型和数据对象,选择屏幕元素以及对象中自定义的类和接口;

处理块是程序的主要结构单元,定义了程序在不同状态下执行的具体功能,在程序编译运行过程中,每个块都是一个独立的实体,在程序中,数据(包括选择屏幕元素)定义和声明语句是独立于任何处理块的,其他所有语句则都必须隶属于某个处理块;

除程序本身的数据定义之外,其他均为各自独立的处理块,系统按照事件触发顺序和调用规则执行;

处理块分为三类:事件块、对话块、过程;

事件块,每个事件都需要有一个事件关键字引导,这些事件关键字单独构成一个语句,其后续语句隶属于该关键字代表的事件块,知道下一个事件关键字出现(或整个程序代码结束)为止,该事件块自动结束,因此没有显示的事件块结束关键字。事件块包括报表事件、列表事件和屏幕事件(又称对话事件,由屏幕流逻辑语句结构)等类型,比如在一个报表中,用户输入某些选择标准并运行程序,就可能触发定义在报表程序中的INITIALIZATION(初始化)、START-OF_SELECTION(数据选择开始)以及ATLINE-SELECTION(列表行选择)等一系列事件,在用户屏幕中,有PROCESS BEFORE OUTPUT(屏幕输入前处理)、PROCESS AFTER INPUT(屏幕输入后处理)等事件,系统将根据特定的事件来触发来执行定义于相应事件块中的代码;

对话模块,这种处理代码部分的开始和结束都有相关的关键字作为标志,是相对独立的程序单元,对话模块往往用于用户对话程序(事务)设计中,从隶属于对话事件(即屏幕的PBO、PAI等事件),在对话事件块内部被调用;

过程,代码部分的开始和结束也有相关的关键字作为标志,是相对独立的程序单元,过程则包括功能模块和子程序,以及对象中的类方法,可以被其他的模块调用,以及实现程序模块化和代码复用;

在这些处理块中,过程可以拥有自己的局部数据,其他两种处理块中定义的数据则为全局数据定义,不属于相关处理块的内部代码。一个程序可以包含何种类型的处理块和程序类型有关,程序运行时,所有的处理块都将被编译,并组成了程序的处理逻辑(根据用户或系统行为触发不同的代码单元),除数据定义和声明语句之外的所有代码都应是某个处理块的一部分,在报表程序中,出现在数据定义语句和其他处理块之间的、没有显示的声明任何事件块关键字的代码将被系统分配到START-OF-SELECTION事件块;

处理块是程序代码模块,也是运行期间的单元,在程序运行过程中,这些处理块按照预定义好的一定规则被调用,其具体出现的顺序与其在程序代码中的先后顺序无关,有些处理块也可以反复被调用;

处理块可以在程序外部(例如通过用户行为触发的事件块)或内部(例如调用一个功能模块或子程序,此时的处理块调用语句本身就是另一个处理块的一部分)被调用,对话模块和事件块是在程序外部调用,过程则是通过程序语句内部调用。而在每一个具体的处理块中,程序则是按照语句代码的控制流程逐步执行的,由分支控制(IF、CASE)和循环控制(DO、WHILE)语句实现,这种控制是在处理块内部进行的,例如一个子程序中的DO语句作用范围决不能超越该子程序代码段的范畴;

在各种处理模块中,系统对事件块的调用过程有其特殊性:其调用总是与某事件的发生相关,因而也往往被称为事件的触发,这些事件包括用户在报表选择屏幕和列表输出屏幕中的行为以及系统运行环境中的事件(如选择屏幕的显示等),在程序设计过程中,应该只设计希望系统进行相应的特定事件块,这样就可以通过定义或不定义该事件块代码,控制程序对某事件进行响应与否;

从系统角度分析,在程序运行时内,系统将通过调度机(Dispatcher)把应用程序的各个代码模块分解成许多对话步骤,并通过工作过程(Work Processes,是系统的软件元素)在系统的应用层的虚拟机上进行处理,这保证了程序运行时的系统硬件平台无关性,各种软件元素分别处理对话步骤的不同类型任务,程序中不同类型的处理块由不同的处理器调用并处理,其中屏幕处理器负责对屏幕流逻辑进行处理并将用户在展示服务器中输入的数据传递给程序,处理器负责执行程序内部处理逻辑并和数据库接口进行通信,屏幕处理器将告知程序处理器,程序的哪一部分将被处理(根据流逻辑和事件驱动原则),工作过程模型体现了系统对代码事件块的处理细节;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值