6.5.API基礎講座5 総称見出しからのデータの取り出し | |||||||||
|
まず、マニュアルを見てみましょう。
単純に言えば、ユーザー・スペースの、どこから、何バイト読むのかを指定すると、その内容が指定した長さ分、戻されるのです。 よく、わからなくなるのは、総称見出しの何バイトからどれくらいを取り出すのか、という点です。この際、じっくり見ておきましょう。 というわけで、ここでQUSRTVUSのRPGソースを掲載します。注に出ているオフセット+1は覚えておかないと、うまくいきませんよ! H Y/ 1
I******************************************************
I* D E F I N E D A T A - S T R U C T U R E *
I******************************************************
IUSRSPC DS
I 1 10 USNAME
I 11 20 USLIB
IGENHED DS
I B 1 40DTLOFS
I B 5 80LSTSIZ
I B 9 120NOENTH
I B 13 160DTLSIZ
I DS
I B 1 40USSIZE
I B 5 80LENDTA
I B 9 120STRPOS
C******************************************************
C* M A I N - R O U T I N E :
C******************************************************
C* :
C*総称見出しからデータを取り出す :
C* :
C CALL 'QUSRTVUS' 95 :
C PARM USRSPC :
C PARM 125 STRPOS :
C PARM 16 LENDTA :
C PARM GENHED :
C* :
C MOVE *ON *INLR :
C RETRN :
解説 総称見出しのレイアウトを見てください。オフセットは16進数の部分省略。(総称見出し全体のレイアウトはこちらです。)
STRPOSに125をセットして、LENDTAに16をセットしているのは、
を取り出そうとしてるからです。上記のRPGで、DSのGENHEDに、125桁めから16バイトのデータが、セットされています。このGENHEDはDSで、
に分解されます。(バイナリ定義のフィールド)。この4つが、上記の表に該当します。ここに、この後参照する、リストセクションの大事な情報が入っているのです。 もし、「見出しセクション」も見るのならば、STRPOSには、116+1で117が入って、LENDTAは4X6=24バイトとなります。 よく分かる!これがユーザースペースだ!
|
|
You are at K's tips-n-kicks of AS/400
|
|
|||
|
|