RPGLeを使ってリフレクションができたらいいのにと思います。つまり、「実行時にオブジェクトの機能を決定するプロセスまたはメカニズム」です。
このデータ構造があると想像してください:
D DS_Format DS Qualified Based(pDS_Format)
D Type 20I 0 Inz(1)
D Label 50A Inz('myLabel')
D Description 5000A Inz('myDescription')
リフレクション API を使用すると、次のことができます。
Reflection_ListSubfields(DS_Format);
=> 次の配列を返します: { 'Type', 'Label', 'Description' }
そして、私はできる:
Reflection_GetSubfield(DS_Format : 'Label'); => return 'myLabel'
私もこれができたらいいのに:
Reflection_GetSubfieldType(DS_Format : 'Label'); => return 'A'
Reflection_GetSubfieldLength(DS_Format : 'Label'); => return 50
Reflection_GetSubfieldPrecision(DS_Format : 'Type'); => return 0
これで、次のようなことができると思います(少し作業します):
SerializeXml(DS_Format); //I build xml with one line of code !
そして得る:
<DS_Format>
<Type>1</Type>
<Label>myLabel</Label>
<Description>myDescription</Description>
</DS_Format>
逆に DeserializeXml(myXml); を使用すると、
リフレクションは、本当にクールな API を構築するのに役立ちます。方法はありますか?