最初のページに戻ります。

総合の目次があるページに戻ります。

よく使うマニュアルです

Wiki

updated on 2004.06.23

17.19.ウルトラC仕様書

[ Previous ] [ HOME ] [ Upper ] [ Next ]


サイクルと仕様書

本来、サイクルは、仕様書の「裏」で働く、ロジックですが、イメージしづらいので、ここからお話しすることは、以下の構造を頭にたたき込んでからにしてください。

入力レコード →

入力(i仕様書)
明細演算(c仕様書)
合計演算(c仕様書)
出力(o仕様書) → 出力レコード

いままで、i仕様書とo仕様書は、やってきましたよね。ここで、サイクルのお話をひとまず、置いておいて、いよいよ、c仕様書へ突入します。プログラムがプログラムたる所以(ゆえん)でもある、とも言えるほど、c仕様書は大事です。いわゆるプログラムの命令や計算を記述するものです。プログラムのエンジン部分とでもいうのかなぁ。

覚えていますか(復習のコーナー)

RPGのプログラムの仕様書を全部言えますか?

H仕様書

F仕様書

E仕様書

L仕様書

i仕様書

C仕様書

o仕様書

でしたね。

c仕様書の構造

c仕様書は、大きく分けて、「明細サイクル部分」と、「合計サイクル部分」と「サブルーチン部分」に分かれます。この順序通りに、入力しないと、コンパイルエラーで、プログラムを作れませんので、この順番も覚えて下さい。

c仕様書 明細演算部分
合計演算部分
サブルーチン部分

たとえば、以下のようになります。

H仕様書
     H            Y/                                    1     
F仕様書
     FBALLP   IP  E           K        DISK
     FQPRINT  O   F     132     OF     PRINTER                  
i仕様書
     IBALLR       01
     I                                              COLOR L1   
C仕様書 明細演算部分
     C                     ADD  1         O1CNT   50       
     C*                                                    
     C   OF                EXCPT#HED                       
     C                     EXCPT#DTL                        
合計演算部分
     CL1                   EXCPT#TOL                       
     CLR                   RETRN                            
サブルーチン部分
     C           *INZSR    BEGSR                           
     C                     TIME           O1TIME  60       
     C                     EXCPT#HED                       
     C                     ENDSR                             
o仕様書
     OQPRINT  E  101           #HED
     O                                    1 'H'
     O                                   26 'NUMBER OF BALLS BALLR4'
     O                                   43 '実行日付:'
     O                         UDATE Y   52
     O*
     O        E  1             #HED
     O                                    1 'H'
     O                                   43 '実行時間:'
     O                         O1TIME    52 '0 :  :  '
     O*
     O        E  1             #DTL
     O                                    1 'D'
     O                         COLOR     10
     O*
     O        E  1             #TOL
     O                                    1 'T'
     O                         O1CNT JB  20             

それから、全手順の場合(つまり、サイクルを使わないプログラムの場合)は、合計演算部分はありません。したがって、全手順の場合は、「明細演算部分」と「サブルーチン」だけになります。

3つの部分の区別の仕方

明細演算

仕様書のコード「C」の後(7、8桁)に、Lxが無い。(大抵は空白)

合計演算

仕様書のコード「C」の後(7、8桁)に、Lxが有る。(Lxは、L1からL9及びLR)

b_add.gif (360 バイト) ※もし、RPGサイクルを使わない(全手順)場合、この合計演算は記述しません。

サブルーチン

BEGSRENDSRに挟まれている。

間違った指定の例

L1合計演算が、明細演算の前にあるので、間違い。

     CL1                   EXCPT#TOL                        
     C                     ADD  1         O1CNT   50       
     C*                                                    
     C   OF                EXCPT#HED                       
     C                     EXCPT#DTL                        
     CLR                   RETRN                            
     C           *INZSR    BEGSR                           
     C                     TIME           O1TIME  60       
     C                     EXCPT#HED                       
     C                     ENDSR                            

サブルーチンが、c仕様書の最後に無いので、間違い。

     C                     ADD  1         O1CNT   50       
     C*                                                    
     C   OF                EXCPT#HED                       
     C                     EXCPT#DTL                       
     C           *INZSR    BEGSR                           
     C                     TIME           O1TIME  60       
     C                     EXCPT#HED                       
     C                     ENDSR                            
     CL1                   EXCPT#TOL                       
     CLR                   RETRN                            

c仕様書の骨組み

大まかにc仕様書の構成を覚えてしまいましょう。この方が、覚えやすいのでは無いでしょうか?

A + B = C
項目1 命令 項目2 結果

「項目x」は、正しくは、「演算項目x」です。「命令」は正しくは、「演算命令」です。「結果」は正しくは、「結果のフィールド」です。これが基本的な骨組みです。「命令」の部分には、四則演算の他に、ファイルへのアクセス命令や、その他のオブジェクトの制御、他、たくさんの命令コードが入ります。

c仕様書のレイアウト

さらに、細かくc仕様書を見ておきましょう。この章での、ポイントである、「標識」とつく部分をよく見ておいてください。

6 7 〜 8 9 〜 17 18 〜 27 28 〜 32 33 〜 42 43 〜 48 49 〜 51 52 53 54 〜 59 60 〜 80
名前 仕様書コード 制御レベル 条件付け標識 演算項目1 演算命令 演算項目2 結果フィールド フィールドの長さ 小数部分の桁数 命令拡張 結果の標識 注記
記入項目 C ブランク,

L0 ,L1 〜L9,

LR,

(SR ,AN、OR)

ブランク,

01 〜 99 ,

KA 〜 KN、KP 〜 KY ,

L1 〜 L9,

LR,

MR,

H1 〜 H9,

RT,

U1 〜 U8,

OA 〜 OG、OV

記号名

またはリテラル,

フィールド名

命令コード 記号名

またはリテラル,

フィールド名

フィールド名 ブランク,

数字フィールドの長さ=1 〜 30,

文字フィールドの長さ1 〜 256

ブランク,

0 〜 9

ブランク,

H,N,P

ブランク,

01 〜 99,

KA 〜 KN、KP 〜KY,

H1 〜 H9,

L1 〜 L9,

LR,

OA 〜 OG、OV,

U1 〜 U8,

RT

よく使われる命令コード

ここに上げるのは、自分の会社のRPGソースを走査して、命令語の出現回数をカウントして、並び替えたものです。何かの役に立つかもしれませんね。やはりトップはMOVE命令でした。出現回数が80回以上のものは、確実に覚えて下さい。自分はここに出ている命令コードは、全てマニュアルを見ないでも、分かります。英語で言えば、基本単語です。

順位

命令コード

出現回数

順位

命令コード

出現回数

順位

命令コード

出現回数

順位

命令コード

出現回数

1

MOVE

9,294

27

ANDNE

417

53

DIV

105

79

READP

19

2

Z-ADD

7,805

28

CALL

402

54

CABNE

101

80

ORLT

17

3

END

6,083

29

READE

362

55

ORNE

97

81

ENDSL

16

4

MOVEL

4,020

30

ANDEQ

358

56

READC

94

82

REDPE

16

5

IFEQ

3,624

31

GOTO

341

57

IN

88

83

WHLT

15

6

ADD

2,389

32

MOVEA

335

58

FREE

85

84

DOWEQ

11

7

EXSR

2,245

33

CLEAR

311

59

ANDLT

78

85

ITER

11

8

PARM

2,236

34

COMP

286

60

WHGE

78

86

DOUNE

10

9

BEGSR

2,111

35

PLIST

268

61

WHLE

76

87

CABGT

9

10

ENDSR

2,111

36

DO

261

62

OPEN

72

88

MVR

7

11

KFLD

1,845

37

OREQ

260

63

ORGT

67

89

ORGE

6

12

ELSE

1,227

38

UPDAT

224

64

IFLE

66

90

SETGT

6

13

IFNE

1,132

39

LEAVE

217

65

DELET

64

91

SORTA

5

14

EXCPT

953

40

EXFMT

210

66

LOKUP

59

92

CAS

4

15

CHAIN

859

41

IFGT

197

67

SETOF

59

93

UNLCK

4

16

WRITE

717

42

CASEQ

178

68

ENDDO

46

94

XLATE

4

17

DEFN

699

43

ENDIF

164

69

CLOSE

44

95

ENDCS

3

18

WHEQ

698

44

IFLT

158

70

SUBST

43

96

TESTN

3

19

CABEQ

665

45

SELEC

153

71

Z-SUB

39

97

CASNE

2

20

CAT

645

46

MULT

152

72

ANDGE

38

98

CHEKR

2

21

KLIST

601

47

IFGE

147

73

SCAN

29

99

CABLT

1

22

TAG

591

48

READ

147

74

BITON

21

100

DOUGE

1

23

SETLL

566

49

SETON

128

75

OTHER

20

101

DOWLE

1

24

DOUEQ

493

50

ANDLE

126

76

OUT

20

102

DUMP

1

25

RETRN

466

51

SUB

117

77

ANDGT

19

103

ORLE

1

26

TIME

429

52

XFOOT

117

78

BITOF

19

104

WHNE

1

※サブルーチンの定義BEGSRとENDSRが、2111回定義されているのに、サブルーチン呼び出し命令のEXSRが2245回と、数字が違いますね。どうしてだと思いますか?そう、同じサブルーチンを複数呼び出すので、EXSRの方が多いのですね。

起立、礼、着席

1999/4/10


[ Previous ] [ HOME ] [ Upper ] [ Next ]

You are at K's tips-n-kicks of AS/400

 

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送