目录 1
第一章 编写一个PL/1程序 1
1.1 PL/1编译程序的作用 1
1.2 基本的指令型式 3
1.2.1 程序区的定义 3
1.2.2 变量的定义 3
1.2.3 数的内部处理 4
1.2.4 输入-输出语句 8
1.2.5 程序举例 10
1.2.6 控制和判断语句 12
1.3 程序的执行 18
习题 20
重要术语小结 23
补充读物 25
第二章 程序的开发和执行 26
2.1 程序的开发 26
2.2 程序开发中的辅助工具 35
2.2.1 源程序,清单 35
2.2.2 交叉引用指导 36
2.2.3 诊断信息 39
2.3 源程序格式规则的总结 42
习题 43
重要术语小结 45
补充读物 45
第三章 数值数据的形式 46
3.1 数的基本种类 46
3.1.1 基数 46
3.1.2 记数法 46
3.1.3 型式 47
3.1.4 精度 47
3.2 数字值的表达 49
3.2.1 十进制常数的表达形式 49
3.2.2 二进制数 51
3.3 基数和记数法的选择 52
习题 56
重要术语小结 57
补充读物 57
第四章 数字变量的说明和使用 58
4.1 说明 58
4.1.1 属性的组合 58
4.1.2 隐含 58
4.1.3 说明的简化格式 59
4.1.6 改变隐含 60
4.1.5 隐含说明 60
4.1.4 INITIAL属性 60
4.2 数字变量的使用 62
4.2.1 定点十进制变量 62
4.2.2 定点二进制变量 63
4.2.3 浮点变量 63
4.2.4 数字变量的输入和输出 63
4.2.5 复数 66
4.2.6 精确性和舍入 70
习题…… 71
重要术语小结 73
补充读物 74
第五章 非数字数据 75
5.1 字符串 75
5.1.1 字符串的表示法 75
5.1.2 字符串变量的说明 75
5.1.3 字符串的输入和输出 78
5.1.4 赋值语句 79
5.1.5 并置 80
5.1.6 在判定结构中字符串的使用 80
5.2 串的另一种描述:PICTURE属性 84
5.2.1 PICTURE变量的说明 84
5.2.2 数字型PICTURE变量的输入和输出 85
5.2.3 非数值串的PICTURE描述 87
5.2.4 其它的描述手段 90
习题 91
重要术语小结 93
补充读物 94
第六章 数组 95
6.1 基本的构造特点 95
6.1.1 数组的维数 95
6.1.2 一维数组 96
6.1.3 二维数组 96
6.1.4 高维数组 97
6.2 数组的说明 98
6.2.1 给数组赋属性 99
6.2.2 数组的内部组织 99
6.2.3 数组的置初值 100
6.2.4 特种下标 101
6.3 数组的内部处理 102
6.3.1 对整个数组的操作 102
6.3.2 涉及多个数组的操作 103
6.3.3 用变量作下标 103
6.3.4 部分数组的处理 106
6.4.1 整个数组的传送 113
6.4 数组的输入和输出 113
6.4.2 部分数组的输入和输出 114
6.5 数组的其它特性 116
6.5.1 数组的多重名字 116
6.5.2 具有可变大小的数组 121
习题 122
重要术语小结 125
补充读物 126
第七章 结构 127
7.1 结构的定义 127
7.1.1 结构中级号的分配 129
7.1.2 结构中元素的命名 131
7.1.3 子结构的命名 133
7.1.4 LIKE属性 133
7.2 结构的输入和输出 134
7.3 结构的内部处理 134
7.4 BY NAME 可选项 136
7.5 数组和结构的相互作用 139
7.5.1 在结构中包含数组 139
7.5.2 结构数组 140
习题 142
重要术语小结 144
第八章 数据流的传送 146
8.1 表式数据流的传送:GET/PUT LIST语句 147
8.1.1 GET LIST语句 147
8.1.2 PUT LIST语句 148
8.2 数据定向传送:GET/PUT DATA语句 150
8.2.1 GETDATA语句 150
8.2.2 PUT DATA语句 152
8.3 编排式的数据传送 153
8.3.1 编排式的输入:GET EDIT语句 153
8.3.4 GET EOIT语句的操作 158
8.3.3 空格数据 158
8.3.2 重复说明 158
8.3.5 各种数据集合的编排式输入 159
8.3.6 格式能力的扩展 160
8.3.7 编排式的输出:PUT EDIT语句 165
8.3.8 P格式说明(形象格式说明) 168
8.4 内部编辑:STRING可选项 175
8.4.1 GET STRING语句 175
8.4.2 PUT STRING语句 176
习题 177
重要术语小结 181
9.1.1 算术运算的优先级 183
9.1 算术表达式的求值 183
第九章 内部的算术操作 183
9.1.2 混合运算表达式内的转换 184
9.1.3 转换结果的精度 185
9.1.4 算术运算的精度规则 187
9.2 用于算术运算的内部函数 189
9.2.1 供单值变量用的函数 189
9.2.2 用于数据集合的内部函数 195
9.3 计算中的一些难点 196
习题 198
重要术语小结 201
补充读物 202
第十章 字符串操作 203
10.1 字符串表达式的形式 203
10.1.1 串的并置 203
10.1.2 字符串的抽取和分解 205
10.2 字符串的检查 209
10.2.1 INDEX函数 209
10.2.2 VERIFY函数 210
10.3 和其它数据形式的关系 211
10.3.1 在算术表达式中的字符串 211
10.3.2 字符串表达式中的算术运算 212
习题 214
重要术语小结 215
补充读物 216
第十一章 位串 217
11.1 位串数据的描述 217
11.2 位串数据的输入和输出 217
11.2.1 表式和数据定向式的转送 217
11.2.2 编排式的传送 219
11.3 内部处理 219
11.3.1 逻辑运算 220
11.3.2 和一位长度位串有关的表达式 223
11.3.3 包含有逻辑运算符和比较运算符的一般表达式 224
11.3.4 位串和IF语句 225
11.3.5 位串的内部函数 225
习题 229
重要术语小结 231
补充读物 231
第十二章 在一个过程中对操作顺序的控制 232
12.1 IF语句的扩充使用 232
12.1.1 THEN IF子句 232
12.1.2 ELSE IF子句 234
12.2 DO语句 236
12.2.1 DO组的嵌套 236
12.2.2 DO循环 237
12.2.3 多重DO循环 243
12.2.4 多维数组的传送 246
12.3 语句标号变量 249
12.3.1 使处理效率提高的标号变量说明 250
12.3.2 标号变量的数组 250
习题 251
重要术语小结 252
补充读物 253
13.1 分程序的种类 254
第十三章 PL/1程序结构的控制 254
13.1.1 过程 255
13.1.2 BEGIN分程序 257
13.1.3 在程序中各分程序之间的关系 257
13.1.4 PROCESS语句 259
13.2 在过程之间控制的传送 260
13.2.1 函数过程 260
13.2.2 子[例行]程序 266
13.2.3 内部过程的激活 268
13.3 过程之间的信息传送 270
13.3.1 数字信息的传送 271
13.3.2 算术表达式作为自变量 272
13.3.3 GENERIC属性 273
13.3.4 非数字的自变量 273
13.4 在一个程序中名字的识别 278
13.4.1 STATIC和AUTOMATIC属性 279
13.4.2 作用域的扩充:EXTERNAL和INTERNAL属性 281
13.4.3 BEGIN分程序 283
13.5 递归的过程 284
习题 285
重要术语小结 289
补充读物 290
第十四章 数据记录,数据集和数据文件 291
14.1 数据集的结构 292
14.1.1 记录的内部构造 292
14.1.2 基本的文件说明 293
14.1.3 传送的方向 293
14.1.4 数据传送的属性 295
14.2 对数据记录的存取方式 296
14.2.1 SEQUENTIAL属性 296
14.2.2 DIRECT属性 299
14.2.3 文件说明的隐含部分 299
14.3.1 文件和数据集 300
14.3.2 记录和块 300
14.3 ENVIRONMENT说明 300
14.3.3 缓冲区的说明 303
14.3.4 数据集的结构 304
14.4 文件和外部存贮设备之间的相互关系 309
14.5 文件的活化 310
14.5.1 TITLE可选项 311
14.5.2 文件变量 313
14.5.3 PRINT文件的附加可选项 313
14.5.4 和OPEN,CLOSE语句有关的一些附注 314
习题 314
重要术语小结 314
补充读物 316
第十五章 文件和数据集的处理 317
15.1 READ语句 318
15.1.1 KEYTO可选项 321
15.1.2 KEY可选项 321
15.1.3 IGNORE属性 323
15.1.4 带缓冲区的文件 324
15.2 WRITE语句 328
15.2.1 KEYFROM可选项 328
15.2.2 LOCATE语句 330
15.2.3 穿卡输出 331
15.3.1 REWRITE语句 332
15.3 修改文件的处理 332
15.3.2 记录的删除和增加 333
15.4 文件名用作自变量 335
习题 335
重要术语小结 336
补充读物 337
第十六章 执行的控制 338
16.1 服务操作 339
16.1.1 一般的辅助功能 339
16.1.2 与操作员通讯 339
16.1.3 输入输出服务 340
16.2 中断处理 342
16.2.1 计算方面的条件 343
16.2.2 输入和输出中断条件 346
16.2.3 中断作为调试手段 348
16.2.4 由程序员指定的中断 355
16.2.5 启动和禁止中断条件 356
16.2.6 中断条件的作用域 357
16.2.7 条件前缀的作用域 359
重要术语小结 361
补充读物 362
17.1.1 有基变量的说明 363
17.1 有基变量 363
第十七章 存贮控制 363
17.1.2 有基变量的分配 364
17.1.3 指针定位符 367
17.1.4 指针变量的基本性质 367
17.1.5 AREA属性 371
17.1.6 释放有基变量 374
17.2 表处理 375
17.2.1 表的组织 377
17.2.2 表的处理 378
17.2.3 表和区域 381
17.3.1 受控变量的特殊性质 383
17.3 受控存贮区 383
17.3.2 受控变量的星号表示法 385
习题 386
重要术语小结 389
补充读物 390
第十八章 编译控制 391
18.1 编译时语句 392
18.1.1 编译时变量的激活与再激活 392
18.1.2 连续替换和再次扫描 393
18.1.5 编译时判断语句 395
18.1.4 编译时赋值语句 395
18.1.3 编译时的说明语句 395
18.1.6 SUBSTR作为编译时的内部函数 397
18.1.7 %INCLUDE语句 398
18.2 编译时的过程 402
习题 404
重要术语小结 404
补充读物 404
第十九章 异步处理 405
19.1 任务的概念 405
19.1.1 TASK可选项和TASK属性 405
19.1.2 任务的建立和结束 406
19.2 事件和事件变量 407
19.2.1 事件的说明 407
19.2.2 事件值的设置 407
19.3 任务的同步 408
19.3.1 WAIT语句 408
19.3.2 DELAY语句 410
19.4 异步处理中的优先级 410
19.4.1 设置任务的优先级 410
19.4.2 PRIORITY函数 411
19.4.3 任务建立期间优先级的使用 411
19.5.2 文件处理中EVENT可选项的使用 412
19.5.1 记录的锁定和解锁 412
19.5 在异步处理中文件的处理 412
重要术语小结 413
补充读物 414
附录A 流程图 415
附录B 数据转换 418
B.1 转换部位 420
B.1.1 赋值 420
B.1.2 自变量 420
B.1.3 下标、格式和可选项 420
B.1.4 表达式 420
B.2.1 算术运算的转换 421
B.2 源和目标属性的确定 421
B.2.2 关系操作数的转换规则 422
B.2.3 逻辑运算符时的转换 423
B.2.4 并置时的转换 423
B.3 转换的机构 423
B.3.1 算术转换 423
B.3.2 数字字符与算术值之间的转换 425
B.3.3 位串与算术值之间的转换 425
B.3.4 字符串和算术类型之间的转换 425
B.4.1 定点溢出 426
B.4 共同的问题及问题的避免 426
B.3.6 数字字符和字符串之间的转换 426
B.3.5 数字字符和位串之间的转换 426
B.3.7 字符串与位串之间的转换 426
B.4.2 错误的结果 427
B.4.3 把算术值转换成字符串的困难 427
附录C 字符集的整理顺序 428
附录D PL/1编译程序 431
D.1 背景 431
D.1.1 IBM PL/1-F编译程序 431
D.1.2 PL/C编译程序 431
D.1.3 PLUTO编译程序 431
D.1.6 PLAGO和PL/1装入并执行 432
D.1.7 其它编译程序 432
D.1.4 IBM优化和校验编译程序 432
D.1.5 IBM子集编译程序 432
D.2 语言差别上的论述 433
D.2.1 语句类型 433
D.2.2 属性 436
D.2.3 内部函数 438
D.2.4 伪变量 440
D.2.5 ON条件 441
附录E PL/1关键字的缩写形式 442