Hypertext Preprocessor 开源通用脚本语言基本语法知识点总结

时间:2024.5.2

PHP编程入门的基本语法知识点总结

一、何为php

PHP,即“PHP: Hypertext Preprocessor”,是一种被广泛应用的开源通用脚本语言,尤其适用于 Web 开发并可嵌入 HTML 中去。它的语法利用了 C、Java 和 Perl,易于学习。该语言的主要目标是允许 web 开发人员快速编写动态生成的 web 页面,但 PHP 的用途远不只于此。

简单来说,就是php是一种脚本语言,可以做很多事情。①服务器端脚本 ②命令行脚本 ③编写桌面程序

二、开始php

(1)下载php解释器,其实win下面,最简单的还是wamp这个软件,下载下来什么都有了...

(2)win下面貌似还需要,mscvr110.dll 这个链接库,vc2012运行库,安装即可

(3)ide,无耻的使用了 phpStorm,等哥有钱了一定给你补回来, so...

User: newasp

License:

===== LICENSE BEGIN =====

14617-12042010

00001xrVkhnPuM!Bd!vYtgydcusnqt

mM!hZWoGg"DprWxZCBwsy8T91O7MRu

NVHtrbzv8O9mmoLvtijcHSSE7i5Jr!

===== LICENSE END ====

三、入门引导

(1)简单的输出

<?php

/**

* Created by PhpStorm.

* User: LENOVO

* Date: 2014/9/28

* Time: 14:51

*/

// 输出PHP详细信息

echo phpinfo();

//C:\php-5.6.1-Win32-VC11-x86\php.exe D:\dizzy\php_test\index.php

//phpinfo()

//PHP Version => 5.6.1

//

//System => Windows NT LENOVO-PC 6.1 build 7600 (Windows 7 Ultimate Edition) i586

//Build Date => Sep 24 2014 18:54:12

//Compiler => MSVC11 (Visual C++ 2012)

//Architecture => x86

//Configure Command => cscript /nologo configure.js "--enable-snapshot-build" "--disable-isapi" "--enable-debug-pack" "--without-mssql" "--without-pdo-mssql" "--without-pi3web"

"--with-pdo-oci=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared"

"--with-oci8-12c=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared" "--enable-object-out-dir=../obj/" "--enable-com-dotnet=shared" "--with-mcrypt=static" "--without-analyzer" "--with-pgo"

//Server API => Command Line Interface

(2)简单的表单处理

// 一个简单的html表单

<form action="action.php" method="post">

<p>姓名: <input type="text" name="name" /></p>

<p>年龄: <input type="text" name="age" /></p>

<p><input type="submit" /></p>

</form>

// action.php 接收表单数据, 使用超全局变量

%_POST["name"]

%_POST["age"]

<?php echo htmlspecialchars($_POST['name']); ?>

<?php echo (int)$_POST['age']; ?>

// 这便是最简单的表单提交,及数据接收

四、基本语法

(1)PHP标记

<?php

echo "Hello World!";

// 当文件为纯PHP时,最好在末尾删除PHP结束标记

//?>

(2)从HTML中分离

// 在一对开始和结束之外的内容,都会被PHP解释器忽略。也就是html标签和PHP代码混合的那种,跟jsp,asp一样...

<p>This is going to be ignored by PHP and displayed by the browser.</p>

<?php echo 'While this is going to be parsed.'; ?>

<p>This will also be ignored by PHP and displayed by the browser.</p>

// 使用条件,高级分离

<?php if ($expression == true): ?>

This will show if the expression is true.

<?php else: ?>

Otherwise this will show.

<?php endif; ?>

(3)指令分隔符,注释

PHP需要在每个语句后面用分隔符结束指令。

注释: // 或 /* ... */ 但是,*/ 会匹配最近的那个,切记!切记!

五、类型

PHP支持8种原始数据类型。

四种标量类型:boolean(布尔型),integer(整型),float(浮点型,double),string(字符串) 两种复合类型:array(数组),object(对象)

两种特殊类型:resource(资源),NULL(无类型)

<?php

$a_bool = TRUE; // a boolean

$a_str = "foo"; // a string

$a_str2 = 'foo'; // a string

$an_int = 12; // an integer

echo gettype($a_bool); // prints out: boolean

echo gettype($a _str); // prints out: string

// If this is an integer, increment it by four

if (is_int($an_int)) {

$an_int += 4;

}

// If $bool is a string, print it out

// (does not print out anything)

if (is_string($a_bool)) {

echo "String: $a_bool";

}

?>

(1)Boolean 布尔类型

可以为TRUE或FALSE,不区分大小写。

一般非0,即为TRUE。

(2)Integer 整型

整型可以使用十进制,十六进制,八进制或二进制表示。八进制前面必须加0(零),十六进制加0x,二进制加0b。

如果给定的一个数超出了interger的范围,将会被解释为float。同样运算结果超出integer范围,同样如此。

php没有整除运算符,1/2 将产生出 float 0.5。可以强制转换为integer 或使用round() 更好的四舍五入。

echo (int)2.9; // 输出 2

echo round(2.555, 2) // 输出 2.56

// 决不要将未知的分数强制转换为 integer,这样有时会导致不可预料的结果。

<?php

echo (int) ( (0.1+0.7) * 10 ); // 显示 7!

?>

(3)Float 浮点型(double)

浮点型,也叫浮点数float,双精度double, 实数real。

<?php

$a = 1.234;

$b = 1.2e3;

$c = 7E-10;

?>

(4)String 字符转

一个字符串string,就是由一系列的字符组成,其中每个字符等同于一个字节。这就意味着php只能支持256个字符集,因此不支持Unicode。

string最大可以达到2GB。

<?php

$a = 123;

echo '$a'; // 输出 $a

echo "$a"; // 输出 123, 转义字符 '\'

$str = <<<'EOD'

Example of string

spanning multiple lines

using nowdoc syntax.

EOD;

?>

(5)Array 数组

php中的数组,实际上是一个有序序列。映射是把values关联到keys的类型。 由于数组元素的值也可以说是另外的数组,树形结构和多维数组也是允许的。 <?php

$array = array(

"foo" => "bar",

"bar" => "foo",

);

// 自PHP 5.4 起

$array = [

"foo" => "bar",

"bar" => "foo",

]

// key 可以是 integer 或 string 类型

// key 值为可选项, 如果未指定,则使用之前用过最大的integer键名加上1作为新键名 ?>

// 要修改某个值,通过其键名给该单元赋一个新值。

// 要删除某个键值对,对其调用 unset() 函数。

使用 unset() 需要注意,此时数组不会重建索引。需要重建索引,可以使用 array_values() 函数。 数组计算总数: 使用 count() 函数

(6)Object 对象

<?php

class foo{

function do_foo(){

echo "Doing foo.";

}

}

// 用 new 实例化一个类

$f = new foo;

$f->do_foo;

(7)Resource 资源类型

资源 resource 是一种特殊的变量,保存了到外部资源的一个引用。资源是通过专门的函数来建立和使用的。

(8)NULL

特殊的NULL 表示一个变量没有值。NULL类型唯一可能的值就是NULL。

可被认定为NULL的变量:①被赋值为NULL ②尚未被赋值 ③被unset

(9)Callback 回调类型

自PHP5.4 起,可以使用 callable 类型 指定回调类型 callback。

六、变量

php中变量用一个美元符号 $ 后面跟变量名来表示的。区分大小写。 变量默认总是传值赋值。

<?php

$a = 1;

// 值传递赋值

$b = $a

// 引用赋值

$c = &$a

// global 关键字

global ; $GLOBALS


第二篇:Cobol基本语法总结


コボル基本語法

コボル基本語法

一、COBOL基本語法

compla項目使用的Cobol是Micro Focus 公司生产的Cobol,采用在HP-UNIX上运行。

一、cobol的书写格式(每行)

1、 前6列为序号区(一般不编辑)

2、 第7列为标示列,仅可以写如下几个标示符。

a. “*” 注释符(注释当前行的代码)

b “/“ 注释符(注释当前行的代码,程序编译时,强制程序清单另起一页,不建议使用)

c “-“ 字符串连接符

d “D” DEBUG行标示符(程序为DEBUG模式时,标有该标示符的语句行代码执行,否则和注

释行效果一样)

3、第8列---11列为A区,包括以下内容。

a 部、节名。

b 层号01

4、第12列---72列为B区,过程部的程序必须写在B区中。

5、第72以后部分不能编辑。

二、cobol的语法结构 (几大部分)

1、 标示部(IDENTIFICATION DIVISION):提供程序的一般性文档说明,本项目只保留程序名

(PROGRAM-ID)一项。

2、 环境部(ENVIRONMENT DIVISION): 提供程序外部有关的项目。

a. 配置节(CONFIGURATION SECTION)

①.指定源计算机(SOURCE-COMPUTE).

②.目标计算机(OBJECT-COMPUTE).

③.设置debug模式(SOURCE-COMPUTE H9000V WITH DEBUGGING MODE)

④. 指定读环境变量设置.

SPECIAL-NAMES.

ENVIRONMENT-VALUE IS CNS-ENV-PARM

ENVIRONMENT-NAME IS CNS-ENV-NAME.

b. 输入输出节(INPUT-OUTPUT SECTION).

文件的物理路径的定义。

方法一:(写死文件路径)

SELECT FILE-LOG ASSIGN

"/usr3/WSI/commonlog/WSI1101.log"

ORGANIZATION IS LINE SEQUENTIAL.

方法二:(过程部中动态指定文件)

SELECT FILE-LOG ASSIGN TO SELECT-FILE

ORGANIZATION IS LINE SEQUENTIAL.

在数据部定义字符串变量SELECT-FILE,在文件FILE-LOG打开前动态指定文件路径。 方法三:(环境变量中动态指定文件)

1

コボル基本語法

SELECT FILE-LOG ASSIGN TO EXTERNAL EXTFILELOG

ORGANIZATION IS LINE SEQUENTIAL.

在该程序运行前,设置环境变量:

setenv dd_ EXTFILELOG /usr3/WSI/nco035/lsc/tstlog/WSIXXXX.log

3、数据部(DATA DIVISION)。

程序中的变量都在数据部中定义,Cobol中没有全局变量和局部之分。(变量的类型结构参照5.变量类型)

a. 文件节(FILE SECTION)

给环境部定义的文件指定一个RECORD变量,读写文件用:

FD FILE-LOG.

01 RECORD-LOG PIC X(2000).

b. 工作存储节

定义程序中用到的临时变量。

a) COBOL变量定义需要加层号(表示层次关系),

· 层号从01开始

如: 01 I PIC X(10).

· 组合项

如: 01 WORK-AREA.

05 NUM-1 PIC 9(09).

05 STR-1 PIC X(10).

b) 层号依次排列顺序为:01 ,05,10,15,20,30 ·······

c. 连接节

子程序的参数的定义。

4、 过程部(PROCEDURE DIVISION)

程序的主体:程序的逻辑运算在此操作。

a、 每个程序分为四大节(模块),

· 前处理(初始化变量,设定初始值等)

· 主处理(程序业务处理部分)

· 后处理(程序正常结束时的出口)

· 错误处理(程序异常结束时的出口)

b、 对于子程序,PROCEDURE DIVISION 后应列出LINK节中定义的参数。

如: PROCEDURE DIVISION USING LINK-INPUT-DATA LINK-OUTPUT-DATA.

c、 程序结束。

· 主程序 STOP RUN.

· 子程序 GO BACK.

5、变量类型

COBOL程序的基本变量类型分为两大类字符串型(X)、数值型(9)。

a 字符串型

01 STRING-A PIC X(100).

100个字符长的变量,程序可以局部操作一个变量( STRING-A(start: length)如:

MOVE ALL “X” TO STRING-A(2:10)

2

コボル基本語法

(将变量STRING-A第2位开始10长度的内容全赋为”X”字符)

b 数值型

Cobol基本语法总结

3

コボル基本語法

注: 1、对于出力型数值变量,可以用9代替Z,它们的区别是:

结果为零的整数部高位: Z型变量用空格显示,9型变量用零显示

2、COBOL语言中数值型变量种类很多,针对不同的要求有不同的数值类型。

c、在COBOL变量定义时,可以加入格式字符串字符。

d、不同类型变量间赋值。

整数

1、 字符串中数值部分可以作为对应长度的DISPLAY型变量给其它各种数值型变量。

2、 DISPLAY型变量(包括出力型变量)被赋值时,超出它表示范围的数可以被接受,但截去超出的高位。

3、 COMP型变量被赋值时,超出它表示范围的数不能被接受。

小数

1、 DISPLAY型变量(包括出力型变量)被赋值时,超出它表示范围的数可以被接受,但整数部截去超出的高位,

小数部截去低位。

4

Cobol基本语法总结

コボル基本語法

2、 COMP型变量被赋值时,整数部超出它表示范围的数不能被接受,小数部超出它表示范围的数可以被接受,

但小数部截去低位

注: 以上所述赋值变量为任何类型的数值型变量(经过严格测试得出结论)。

e、字符型比较。

· 字符串比较时,系统自动截去尾部空格(如 “a “ = “a” )。

· 数字的数值形式和数字字符形式相等(如 “1234567890” = 1234567890)

· 综合以上两点, 有 “12 “ = 12

二、 基本语法:

1、赋值语句MOVE。

a、 将一个变量赋给另个变量

move a to b.

b、将一个变量同时赋给另外两个变量。

Move a to b c .

c、将一个变量全部赋为某个字符

move all “x” to a.

d、对于赋值溢出,截取的方式为.

· 字符型变量截去右边的溢出部分。

· 数值型变量截去整数部高位、小数部低位的溢出部分。

e、 组和项传送,它们的数据结构 必须相同

f、 对于组合项成员的局部引用,应该如下:

01 A-AREA.

05 STR-1 PIC X(10).

05 STR-2 PIC X(10).

01 B-AREA.

05 STR-1 PIC X(20).

05 STR-2 PIC X(10).

MOVE STR-1 OF A-AREA(1:4) TO STR-1 OF B-AREA(1:4).

2、显示语句DISPLAY

a. 向控制台打印显示的信息(如果程序基于opentp1环境,该信息将写到opentp1的log文件中).

DISPLAY “DISPLAY RESULT:” STR-1 “@@”.

b、输出一个环境变量名。

DISPLAY WK-ENV-NAME UPON CNS-ENV-NAME.

3、 接受语句ACCEPT

a、 接受从控制台上的输入值。

b、 接受环境变量值。

ACCEPT WK-ENV-PARM FROM CNS-ENV-PARM

ON EXCEPTION

·············

NOT ON EXCEPTION

·············

5

コボル基本語法

END-ACCEPT.

4、 四则运算

原则上,四则运算不用助记符语句,但对于简单运算( ++,--),可采用助记符语句。

a、 加法( ADD 1 TO NUM-1)

b、 减法(SUBTRACT 1 FROM NUM-1)

c、 其它所有运算均采用COMPUTE 语句

COMPUTE NUM-1 = NUM-2 + NUM3 * 10

运算符如下:

+ 加

- 减

* 乘

/ 除

** 指数

在COMPUTE语句中,变量和运算符间至少留有一个空格。

5、 重定义语句REDEFINES(数据部中使用)

01 A PIC X(10) VALUE SPACE.

01 B REDEFINES A PIC 9(10).

变量A,B使用同一个空间,重定义时,重定义变量必须紧跟着被重定义变量后面,并且在字符串同数值一起重定义时,如果对变量进行初始化,变量会初始化为空格。

6、 数组关键词OCCURS

OCCURS 整数 TIMES.

a.简单数组

01 A OCCURS 10 PIC X(30).

b. 组合项数组

01 A.

05 B OCCURS 10.

10 C PIC X(10).

10 D PIC X(20).

注意:引用数组中某一元素如下

DISPLAY C OF B(1) OF A.

7、 检查替换语句INSPECT.

INSPECT A TALLYING N FOR ALL ‘X’.

· 计算字符串A中含有‘X’字符的个数,结果赋给N.

INSPECT A REPLACING ALL ‘X’ BY ‘A’.

·将字符串A中所有的‘X’字符用‘A’代替.

8、 连结语句STRING

STRING A, B, C DELIMITED BY SIZE INTO D .

6

コボル基本語法

·将字符串A, B, C按它们定义长度连接赋给变量D. STRING A, B, C DELIMITED BY SPACE INTO D . ·将字符串A, B, C连接赋给变量D,去掉中间所有的空格. STRING “AAAAAAA”

DELIMITED BY SIZE

“BBBBBBB ” DELIMITED BY SIZE B

DELIMITED BY SIZE

INTO D .

·将字符串和字符串变量连接赋给变量D. 9、 IF语句

IF 语句包含以下三种: · IF ( 条件 )

THEN

语句 (无 “.”结束)

END-IF. · IF ( 条件 )

THEN

语句 (无 “.”结束)

ELSE

语句 (无 “.”结束) END-IF. · IF ( 条件 )

THEN

语句 (无 “.”结束)

ELSE

IF ( 条件 ) THEN

语句 (无 “.”结束) END-IF END-IF.

注: IF 语句最多只能使用三层嵌套,条件用括号括起来。 10 关系运算符

Cobol基本语法总结

注:

7

コボル基本語法 判断字符串能否转换为数字。

A1 IS NUMERIC

A1 IS NOT NUMERIC

11、PERFORM 语句

PERFORM XXX-RTN.

· 调用子节,直到遇到第一个只包含EXIT语句的段中止,回到该调用语句的下一条语句。 EXIT只与它搭配有效。

所以节的定义规定如下:

XXX-RTN SECTION.

语句块 ········

XXX-EXT.

EXIT.

PERFORM XXX-RTN N TIMES.

· 循环调用子节N次

PERFORM XXX-RTN UNTIL N> 30.

· 循环调用子节,直到N 大于30。

PERFORM UNTIL 表达式

语句 ·······

END-PERFORM.

· 循环调用语句块,表达式判断在语句块前进行。

PERFORM VARYING X FROM A BY B UNTIL X > 12 语句 ·······

END-PERFORM.

· 循环调用语句块,相当于FOR 循环。

12、EVALUATE 语句

EVALUATE 变量、常量、表达式

WHEN ANY

TRUE

FALSE

(NOT) 常量1 THRU (THROUGH) 常量2

WHEN OTHER .

END – EVALUATE

· ANY :任何变量、常量值

· TRUE、FALSE :关系表达式的结果

· (NOT) 常量1 THRU (THROUGH) 常量2: 值(不)在常量1和常量2 构成的闭区间 · 另外,在WHEN 后面可以包含简单的关系表达式。

如:

EVALUATE A

WHEN => 10

8

コボル基本語法 EVALUATE B

WHEN = 1 OR = 2 OR = 3

语句 ····

WHEN OTHER

语句 ····

END-EVALUATE

WHEN OTHER

语句 ····

END-EVALUATE.

13、另外,不同的COBOL系统提供了不同内部函数,建议少用内部函数,以下提供几个通用的内部函数 · ORD 取得字符的ASICII码 如:

MOVE FUNCTION ORD (“A”) TO NUMBER.

? UPPER-CASE 字母小写转换成大写 如:

MOVE FUNCTION UPPER-CASE (STRING(START:1)) TO STRING(START:1) · LOWER -CASE 字母小写转换成大写 如:

MOVE FUNCTION LOWER-CASE (STRING(START:1)) TO STRING(START:1) · REVERSE 对字符串中所有字符进行倒序 如:

MOVE FUNCTION REVERSE(STRING-1) TO STRING

· LENGTH 取得变量的定义长度,如:

COMPUTE LEN = FUNCTION LENGTH(STRING)

9

コボル基本語法

二、PRO*COBOL基本語法

COMPLA使用的PRO*COBOL是ORACLE公司提供的在COBOL程序中嵌入SQL语句的一种方法,使得程序方便地访问操作ORACLE数据库;PRO*COBOL程序经过ORACLE提供的预编译器预编译生成中间COBOL程序后,程序中所有的SQL语句直接调用ORACLE库函数,再经过COBOL编译器同一般COBOL程序一样编译生成各种可执行模块,由于程序中直接调用ORACLE库函数,所以它们访问操作ORACLE数据库的速度很快,基本语法如下。

一、特点。

· 所有的SQL或数据库操作相关语句均被括在” EXEC SQL” 和 “END-EXEC”之间,并且它们只能包含一条语

句,如:

EXEC SQL

SQL语句

END-EXEC.

· 所有访问操作数据库的变量都必须是主变量。

· “EXEC SQL” ,”END-EXEC’及其包含的语句都必须从12列或12列以后开始。

三、 数据部内容。

· 引用两个对象SQLCA, ORACA.

EXEC SQL INCLUDE SQLCA END-EXEC.

EXEC SQL INCLUDE ORACA END-EXEC.

· 主变量定义。

EXEC SQL BEGIN DECLARE SECTION END-EXEC. (主变量定义开始)

EXEC SQL END DECLARE SECTION END-EXEC.(主变量定义结束)

·· 主变量都必须定义在这里,具体定义和一般的COBOL变量一样。

·· VARCHAR型变量(可变长度).

该变量定义就是在X型变量后加关键字VARYING.如:

05 STRING PIC X(100) VARYING.

它实际包含两部分(预编译后的中间COBOL程序可见)

05 STRING.

06 STRING-LEN PIC S9(4) COMP.

06 STRING-ARR PIC X(100).

STRING-LEN 表示字符串的实际长度,STRING-ARR 表示字符串的实际内容。

SQL语句中,只能用STRING.

从表中得到值时,STRING-LEN 自动被赋值。

向表中写入值时,STRING-LEN 需要手工指定长度,SQL将STRING(1:STRING-LEN)部分有效字符串写到表中。 定义主变量时,引用COPY句: EXEC SQL INCLUDE WSIT1101.cpy END-EXEC.

· 游标的定义可以放在数据中。

四、 数据部中SQL语句的基本语法

1)、错误扑获

ORACLE错误扑获是一个全局性的标志,在一个事务(在PRO*COBOL中,ORACLE事务以COMMIT或ROLLBACK为分割点)中,后一个错误扑获会覆盖前一个错误扑获设置。

· 遇到SQL警告(SQLCODE > 0 )继续

EXEC SQL WHENEVER SQLWARNING CONTINUE END-EXEC.

10

コボル基本語法

· 遇到SQL错误(SQLCODE < 0 )继续

EXEC SQL WHENEVER SQLERROR CONTINUE END-EXEC.

· 遇到SQL错误(SQLCODE < 0 )跳转

EXEC SQL WHENEVER SQLERROR GOTO ORA-ERROR END-EXEC.

2)、 数据连接

数据库连接在一般的项目开发中用不到,只用于测试程序ドラバ中(不连接外部数据库)

· 方式一(USERNAME 和PASSWORD分开,如:USERNAME = “OPS$LAPROC51” PASSWORD = “LAPROC”)

EXEC SQL

CONNECT :USERNAME IDENTIFIED BY :PASSWD

END-EXEC.

· 方式二(USERNAME 和PASSWORD合并,如:UID = “OPS$LAPROC51/LAPROC”)

EXEC SQL

CONNECT :UID

END-EXEC.

3)、 静态SQL语句

· 单条记录的检索

EXEC SQL

SELECT ENAME,

SAL,

COMM

INTO :HST-EMP-NAME,

:HST-SALARY,

:HST-COMMISSION:HST-COMM-IND

FROM EMP

WHERE EMPNO = :HST-EMP-NUMBER

END-EXEC.

注: 上例中的COMM-IND为指示变量,在检索操作中每个接受主变量都可指定一个指示变量(9(04) COMP型),它

用来判断主变量是不是接受到一个空值(NULL)(主变量不能接受空值),当指示变量为-1时,表示对应的主变量应该接受到一个空值(主变量自己表示不出来)

· 多条记录的检索(CURSOR 游标)

·· 游标的定义

EXEC SQL

DECLARE CUR_NAME CURSOR FOR

SELECT MSG_CD ,

MSG_1,

MSG_2

FROM WWWTMSG1

END-EXEC.

游标的定义:将SQL查询语句声明为一个游标,不调用ORACLE库函数,不会更新SQLCODE的值。

·· 游标的打开

11

コボル基本語法

EXEC SQL

OPEN CUR_NAME

END-EXEC.

游标的打开:用游标定义的SQL语句检索数据库,将检索结果生成一个游标对象,(此时游标指针在第一条

记录前一位置,无法确定游标中有没有记录)。

·· 游标中记录的抽取

EXEC SQL

FETCH CUR_NAME

INTO : HST-MSG-CD ,

: HST-MSG-1,

: HST-MSG-2

END-EXEC.

游标中记录的抽取:将游标中的记录抽取到相应的主变量中,一次抽取一条。

·· 游标的关闭

EXEC SQL

CLOSE CUR_NAME

END-EXEC.

游标的关闭: 将现有的游标对象释放,游标再次打开前,必须关闭。

· 更新

EXEC SQL

UPDATE WWWTMSG1

SET MSG_1 = : HST-MSG-1,

MSG_2 = : HST-MSG-2

WHERE MSG_CD = : HST-MSG-CD

END-EXEC.

· 删除

EXEC SQL

DELETE FROM WWWTMSG1

WHERE MSG_CD = : HST-MSG-CD

END-EXEC

· 插入

EXEC SQL

INSERT

INTO WWWTMSG1(MSG_CD,

MSG_1,

MSG_2)

VALUES (:HST-MSG-CD,

:HST-MSG-1,

:HST-MSG-2)

END-EXEC

12

コボル基本語法 · 事务的提交

·· 方式一(释放连接)

EXEC SQL COMMIT WORK RELEASE END-EXEC.

·· 方式二(不释放连接)

EXEC SQL COMMIT WORK END-EXEC.

· 事务的回滚

·· 方式一(释放连接)

EXEC SQL ROLLBACK WORK RELEASE END-EXEC.

·· 方式二(不释放连接)

EXEC SQL ROLLBACK WORK END-EXEC.

· 典型的SQLCODE值

·· SELECT

1403 : 没有检索到记录

·· FETCH(游标中记录的抽取)

1403 : 游标指针FETCH到游标的尾部

·· UPDATE

1403 : 没有更新的记录

-60 : 死锁

-2049: 由于死锁导致系统超时

·· DELETE

1403 : 没有删除的记录

-60 : 死锁

-2049: 由于死锁导致系统超时

·· INSERT

-1 : 插入的记录已存在

-60 : 死锁

-2049: 由于死锁导致系统超时

· 典型ORACLE内部变量

SQLCODE : SQL语句运行后得到的返回值

SQLERRMC: SQL语句运行后得到的返回信息

SQLERRD(3): SQL语句运行处理的记录条数

4)、动态SQL语句

· 动态一(直接执行SQL字符串)

·· 方式一

MOVE "INSERT INTO DYN1 VALUES ('TEST')" TO DYNSTMT.

EXEC SQL EXECUTE IMMEDIATE :DYNSTMT END-EXEC.

·· 方式二

EXEC SQL EXECUTE IMMEDIATE

"INSERT INTO DYN1 VALUES ('TEST')"

13

コボル基本語法

END-EXEC.

动态一:只用于没有任何参数和返回结果的SQL语句操作

· 动态二(用于非检索SQL语句)

·· 方式一(带参数)

MOVE "INSERT INTO EMP (EMPNO, DEPTNO) VALUES (:V1, :V2)"

TO DYNSTMT-ARR.

EXEC SQL PREPARE S FROM :DYNSTMT END-EXEC.

EXEC SQL EXECUTE S USING :EMPNO, :DEPTNO1 END-EXEC.

其中V1,V2为形参,S为PREPARE生成的临时对象

·· 方式二(不带参数)

STRING "INSERT INTO " DELIMITED BY SIZE

"EMP (EMPNO, " DELIMITED BY SIZE

"DEPTNO) " DELIMITED BY SIZE

"VALUES ( '" DELIMITED BY SIZE

EMPNO DELIMITED BY SIZE

"' , '" DELIMITED BY SIZE

DEPTNO1 DELIMITED BY SIZE

"' ) " DELIMITED BY SIZE

INTO DYNSTMT.

EXEC SQL PREPARE S FROM :DYNSTMT END-EXEC.

EXEC SQL EXECUTE S END-EXEC.

· 动态三(用于检索SQL语句)

·· 方式一(带参数)

MOVE "SELECT ENAME FROM EMP WHERE DEPTNO = :V1"

TO DYNSTMT.

EXEC SQL PREPARE S FROM :DYNSTMT END-EXEC.

EXEC SQL DECLARE C CURSOR FOR S END-EXEC.

EXEC SQL OPEN C USING :DEPTNO END-EXEC.

EXEC SQL FETCH C INTO :ENAME END-EXEC.

EXEC SQL CLOSE C END-EXEC.

·· 方式二(不带参数)

STRING "SELECT ENAME FROM " DELIMITED BY SIZE

"EMP WHERE DEPTNO = '" DELIMITED BY SIZE

DEPTNO DELIMITED BY SIZE

"' " DELIMITED BY SIZE

INTO DYNSTMT.

EXEC SQL DECLARE C CURSOR FOR S END-EXEC.

EXEC SQL OPEN C END-EXEC.

EXEC SQL FETCH C INTO :ENAME END-EXEC.

EXEC SQL CLOSE C END-EXEC.

14

コボル基本語法 所有的检索SQL语句都必须采用游标方式。

三、开发环境

一、概要

Cobol基本语法总结

Compla项目的开发环境

· 以HP UNIX B.11.11 为操作系统

· 以 OPENTP1 SERVER(日立制品)为APPLICATION SERVER,COMPLA所有的程序都基于

OPENTP1.

· 以MQ SERVER(INFOR STAR MQ ,IBM MQ的改造品)完成异步通信方式。

· 以 ORACLE SERVER 为数据库系统

二、通信处理方式

Compla项目采用两种处理方式RPC(同步),MQ(异步).

· MQ(Message Queue)方式

15

コボル基本語法

MQ 發信MQ受信處理示意圖

如上图所示,AP制御以SUP的方式常驻于OPENTP1下,监视受信MQ SERVER,受信MQ SERVER中一有MQ数据,AP制御就取出来,传给DB同期更新程序进行处理,更新关联

Cobol基本语法总结

DB,发信方和受信方以受信MQ SERVER隔离,互相不影响,完成异步处理,在项目开发中,主要开发DB同期更新,不涉及具体环境。

· RPC (Remote Process Call )方式

RPC方式为OPENTP1 SERVER 提供的进程间访问方式,由SUP( Service Use Process) 和 SPP ( Service Provide Process)组成。Compla项目就是制作若干SPP,常驻于OPENTP1中,供其它系统调用。如下具体介绍SUP 和 SPP的基本结构和基本函数.

·· SUP (服务使用者)

··· RPC OPEN (アプリケーションプログラムの開始)

01 RPC-OP-ARG.

02 REQEST PIC X(8) VALUE 'OPEN '.

02 STATUS-CODE PIC X(5) VALUE SPACE.

02 FILLER PIC X(3).

02 FLAGS PIC S9(9) COMP VALUE ZERO.

CALL 'CBLDCRPC' USING RPC-OP-ARG.

进入OPENTP1 环境

··· RPC ADM(ユーザサーバの開始処理完了の報告)

01 ADM-ARG.

16

Cobol基本语法总结

コボル基本語法

02 REQUEST PIC X(8) VALUE 'COMPLETE'.

02 STATUS-CODE PIC X(5) VALUE SPACE.

02 FILLER PIC X(3).

02 FLAGS PIC S9(9) COMP VALUE ZERO.

02 FILLER PIC X(3).

CALL 'CBLDCADM' USING ADM-ARG.

如果SUP常驻OPENTP1下,该函数向OPENTP1报告注册信息。(不常驻OPENTP1下的SUP程序不调用该函数)

··· RPC CALL (遠隔サービスの要求)

01 RPC-CALL-ARG1. (CALL-MAIN)

02 REQEST PIC X(8) VALUE 'CALL '.

02 STATUS-CODE PIC X(5) VALUE SPACE.

02 FILLER PIC X(3).

02 FLAGS PIC S9(9) COMP VALUE ZERO.

02 DESCRIPTOR PIC S9(9) COMP VALUE ZERO.

02 S-NAME PIC X(32) VALUE SPACE.

02 G-NAME PIC X(32) VALUE 'WSISPPSV'.

01 RPC-CALL-ARG2. (INPUT-DATA)

02 INDATA-LENG PIC S9(9) COMP VALUE ZERO

02 INDATA PIC X(40) VALUE SPACE.

01 RPC-CALL-ARG3. (OUTPUT-DATA)

02 OUTDATA-LENG PIC S9(9) COMP VALUE ZERO

02 OUTDATA PIC X(40) VALUE SPACE..

CALL 'CBLDCRPC' USING RPC-CALL-ARG1 RPC-CALL-ARG2 RPC-CALL-ARG3.

调用OPENTP1下注册的指定组(G-NAME)内的指定服务(S-NAME)。注意在SUP程序中调用前必须指定入力デー

タ的长度(INDATA-LENG)和出力データ的长度(OUTDATA-LENG)

··· RPC CLOSE

01 RPC-CL-ARG.

02 REQEST PIC X(8) VALUE 'CLOSE '.

02 STATUS-CODE PIC X(5) VALUE SPACE.

02 FILLER PIC X(3).

02 FLAGS PIC S9(9) COMP VALUE ZERO.

CALL 'CBLDCRPC' USING RPC-CL-ARG

退出OPENTP1环境

·· SPP (服务提供者)

17

コボル基本語法

如图所示,一个SPP Module 由 一个SPP MAIN ,多个SPP SERVICE ,一个SPP SERVICE DEFINE 三部分组成。一个SPP Module 在OPENTP1下以一个组的方式注册。

··· SPP MAIN

RPC OPEN (アプリケーションプログラムの開始)

01 RPC-OP-ARG.

02 REQEST PIC X(8) VALUE 'OPEN '.

02 STATUS-CODE PIC X(5) VALUE SPACE.

02 FILLER PIC X(3).

02 FLAGS PIC S9(9) COMP VALUE ZERO.

CALL 'CBLDCRPC' USING RPC-OP-ARG.

进入OPENTP1环境

RPC MAINLOOP (SPPのサービス開始)

01 RSV-ARG.

02 REQUEST PIC X(8) VALUE 'MAINLOOP'.

02 STATUS-CODE PIC X(5) VALUE SPACE.

02 FILLER PIC X(3).

02 FLAGS PIC S9(9) COMP VALUE ZERO.

CALL 'CBLDCADM' USING ADM-ARG.

该SPP MODULE 中所有的SPP SERVICE 都完成初始化(完成数据部前的运行),进入监视状态。

RPC CLOSE

01 RPC-CL-ARG.

02 REQEST PIC X(8) VALUE 'CLOSE '.

02 STATUS-CODE PIC X(5) VALUE SPACE.

02 FILLER PIC X(3).

02 FLAGS PIC S9(9) COMP VALUE ZERO.

CALL 'CBLDCRPC' USING RPC-CL-ARG

18

Cobol基本语法总结

コボル基本語法 退出OPENTP1环境

SPP MAIN 只调用相关的OPENTP1或其它库函数,创建RPC环境,和SPP SERVICE 及其其它应用程序不存在任何调用关系。

··· SPP SERVICE

SPP SERVICE 和一般子程序基本上一样,主要区别在于SPP SERVICE 的接口形式固定。

入力データ

INPUT-DATA

INPUT-DATA-LENGTH

出力データ

OUTPUT-DATA

OUTPUT-DATA-LENGTH

(データ、データ长度的位置关系和SUP中RPC CALL的データ、データ长度的位置关系不同)

··· SPP SERVICE DEFINE

该文件只包含如下一行内容。

entry “SPP SEVICE NAME ”;

·· 另外将SUP或SPP常驻OPENTP1下还需以下内容

··· ユーザーサービス定義ファイル(文件名不带任何后缀,并且不超过8个字母)

SPP ユーザーサービス定義ファイル

set module = "SPPMD"

set service_group = "SPPGP"

set service = "SPPSV1=SPPSV1P","SPPSV2=SPPSV2P" ·····

其中SPPSV1 ,SPPSV2 为向OPENTP1注册的SERVICE名,SPPSV1P ,SPPSV2P为对应SPP SERVICE 程序的

PROGRAM-ID.

SUPユーザーサービス定義ファイル

set module = "SUPMD"

以上是两种ユーザーサービス定義ファイル的基本内容,实际项目中还包含许多环境设置。

··· 相关命令

# 将编译生成的 MODULE拷贝到/opt/betran50/aplib/ 或 /opt/debug/WSI/exe/中。

# 将编辑好的ユーザーサービス定義ファイル以betran50用户置于/opt/betran50/conf内

# 可以使用以下命令启动,停止等服务。

## dcsvstart -u ユーザーサービス定義名 启动指定服务

## dcsvstop ユーザーサービス定義名 停止指定服务

## dcsvstop -f ユーザーサービス定義名 强制停止指定服务

## prcls 当前启动中的所有服务列表

## tail -f /tmp2/betran50.log 跟踪OPENTP1的LOG文件

19

更多相关推荐:
C语言总结复习参考20xx-5

C语言程序设计考试要求(20xx-20xx学年第2学期)一、教学内容第1章程序设计概述1.1程序设计语言1.2算法1.3程序设计与实现1.4C语言程序的基本结构第2章简单程序设计2.1printf()函数输出数…

C语言总结之基本结构

基本控制结构这里列出C语言的各种控制结构,并给出简短的解释。复合语句:在形式上是一对花括号,其中可以有一系列的定义或说明,后跟一系列的语句。这两部分都可以没有。(3.1)条件语句:if(表达式)语句1if(表达…

按任意键结束_c语言总结

1、按Esc键结束程序让一个C语言的循环程序不是在等待输入,而是正在运行中,在这期间按任意键就能跳出循环,请问高手们如何实现?#includebios.h#defineEsc0x11b/*这两句加在程序头部*/…

第六章C语言总结

第六章循环控制6.3用while实现循环While语句用来实现‘当型’循环。一般形式:while(表达式)语句While语句先判断、后执行当表达式值为真时,执行后面的语句注意:循环体中若包含多个语句,用花括号括…

C语言总结之编程风格

c语言的编程风格第一章:缩进格式Tab是8个字符,于是缩进也是8个字符.有很多怪异的风格,他们将缩进格式定义为4个字符(设置为2个字符!)的深度,这就象试图将PI定义为3一样让人难以接受.理由是:缩进的大小是为…

c 语言总结

C语言总结一:循环语句1.关键字forFor循环包括:循环初始化条件,循环条件,持续循环条件,循环体。2语句格式For(循环初始化条件,循环条件,持续循环条件){循环体;}格式二:循环初始化条件For(循环条件…

c语言总结

C语言实训总结一.实训的前期准备(一)本次实训的主要目的与计划目标本次实训周活动的对象是机械设计制造及其自动化四年制本科081016班的学生,他们本学期学习了C语言的课程,因此组织开展本次实训活动的主要目的一方…

C语言总结

C语言总结一数据类型运算符与表达式11数据类型短整型shortint整形基本整型int长整型longint字符型char单精度类型float基本整型浮点型双精度类型double长双精度型longdouble枚举...

C语言总结

一常量数字常量普通数字13527ii指数形式245e2等价于245102注意e大小写皆可e前面的数字不能省就算是1也不能省后面的数字一定要是整数iii长整型单精度浮点型3235L325F分别表示3235是长整型...

C语言总结

类型转换隐式类型转换整型实型和字符型数据之间可以混合运算例如10a1587651234b不同数据类型之间运算会进行自动类型转换强制类型转换一般形式类型名表达式例intxyintxydouble32int36说明...

C语言知识点总结【完美版】

C语言最重要的知识点总体上必须清楚的1程序结构是三种顺序结构选择结构分支结构循环结构2读程序都要从main入口然后从最上面顺序往下读碰到循环做循环碰到选择做选择有且只有一个main函数3计算机的数据在电脑中保存...

C语言知识点总结

备注这不是我们学校老师做的总结所以里面有些地方说那个知识点是重点的不要完全相信因为每个学校的侧重点不同而且有些我们是没有学过的希望这份东西对大家有用明天就要考试了看试题已经没有多大作用了因为试题是看不完的而且只...

c语言总结ppt(30篇)