RXS_ComposeJsonNumber()

This subprocedure is used to add a JSON number element to a parent JSON Object or Array. The numeric data must be passed as an RPG character field, or converted by %Char().

Subprocedure Prototype

D RXS_ComposeJsonNumber...
D                 PR                  Extproc('RXS_ComposeJsonNumber')
D                                     Opdesc
 
D  pName                              Const Like(RXS_Var64Kv_t)
D                                     Options(*Omit:*Varsize)

Name to assign to JSON numeric data element. If being added to an array, the value of this parameter should be *OMIT.

D  pNumberAsString...
D                                     Like(RXS_Var1Kv_t) Const
D                                     Options(*Varsize)

Data to assign to JSON numeric data element. Data should be provided in a character field or converted by %Char().

Example: '1234', '1.76', '-2'

D  pStructureDS                       Const LikeDS(RXS_JsonStructureDS_t)

RXS_JsonStructureDS_t data structure containing a parent JSON Object or Json Array.

Example Code

*--------------------------------------------------------------
* This example creates a simple JSON object, adds a numeric
* data field to it, retrieves the created JSON, and then calls
* RXS_DestroyJson() to clean up.
*--------------------------------------------------------------
H DFTACTGRP(*NO) BNDDIR('RXSBND') ACTGRP(*CALLER)

 /copy QRPGLECPY,RXSCB

D JSON            S                   Like(RXS_Var64Kv_t)

D CreateJsonDS    DS                  LikeDS(RXS_CreateJsonDS_t)
D RootDS          DS                  LikeDS(RXS_JsonStructureDS_t)
D itemprice       S              5P 2
 /free
   RXS_ResetDS( CreateJsonDS : RXS_DS_TYPE_CREATEJSON );
   RXS_ResetDS( RootDS : RXS_DS_TYPE_JSONSTRUCTURE );
   
   CreateJsonDS.JsonStructureType = RXS_JSON_STRUCTURE_OBJECT;
   RootDS = RXS_CreateJson( CreateJsonDS );

   RXS_ComposeJsonNumber( 'id' : '7' : RootDS );

   itemprice = 12.50;
   RXS_ComposeJsonNumber( 'price' : %Char(itemprice) : RootDS );

   JSON = RXS_GetJsonString( CreateJsonDS );
   // JSON looks like:
   //
   // { "id": 7, "price": 12.50 }

   RXS_DestroyJson( CreateJsonDS );

   *INLR = *ON;
 /end-free
*--------------------------------------------------------------
* This example creates a simple JSON array, adds 5 numeric data
* fields to it, retreives the created JSON, and then calls 
* RXS_DestroyJson() to clean up.
*--------------------------------------------------------------
H DFTACTGRP(*NO) BNDDIR('RXSBND') ACTGRP(*CALLER)

 /copy QRPGLECPY,RXSCB

D JSON            S                   Like(RXS_Var64Kv_t)

D CreateJsonDS    DS                  LikeDS(RXS_CreateJsonDS_t)
D RootDS          DS                  LikeDS(RXS_JsonStructureDS_t)
D i               S              3U 0
 /free
   RXS_ResetDS( CreateJsonDS : RXS_DS_TYPE_CREATEJSON );
   RXS_ResetDS( RootDS : RXS_DS_TYPE_JSONSTRUCTURE );
   
   CreateJsonDS.JsonStructureType = RXS_JSON_STRUCTURE_ARRAY;
   RootDS = RXS_CreateJson( CreateJsonDS );

   for i = 1 to 5;
     RXS_ComposeJsonNumber( *OMIT : %Char(i) : RootDS );
   endfor;

   JSON = RXS_GetJsonString( CreateJsonDS );
   // JSON looks like:
   //
   // [1,2,3,4,5]

   RXS_DestroyJson( CreateJsonDS );

   *INLR = *ON;
 /end-free
*--------------------------------------------------------------
* This example creates a simple JSON object, adds a numeric
* data field to it, retrieves the created JSON, and then calls
* RXS_DestroyJson() to clean up.
*--------------------------------------------------------------
H DFTACTGRP(*NO) BNDDIR('RXSBND') ACTGRP(*CALLER)

 /define RXSV6R1
 /copy QRPGLECPY,RXSCB

D JSON            S                   Like(RXS_Var64Kv_t)

D CreateJsonDS    DS                  LikeDS(RXS_CreateJsonDS_t)
D RootDS          DS                  LikeDS(RXS_JsonStructureDS_t)
D itemprice       S              5P 2
 /free
   RXS_ResetDS( CreateJsonDS : RXS_DS_TYPE_CREATEJSON );
   RXS_ResetDS( RootDS : RXS_DS_TYPE_JSONSTRUCTURE );
   
   CreateJsonDS.JsonStructureType = RXS_JSON_STRUCTURE_OBJECT;
   RootDS = RXS_CreateJson( CreateJsonDS );

   RXS_ComposeJsonNumber( 'id' : '7' : RootDS );

   itemprice = 12.50;
   RXS_ComposeJsonNumber( 'price' : %Char(itemprice) : RootDS );

   RXS_GetJsonString( JSON : CreateJsonDS );
   // JSON looks like:
   //
   // { "id": 7, "price": 12.50 }

   RXS_DestroyJson( CreateJsonDS );

   *INLR = *ON;
 /end-free
*--------------------------------------------------------------
* This example creates a simple JSON array, adds 5 numeric data
* fields to it, retreives the created JSON, and then calls 
* RXS_DestroyJson() to clean up.
*--------------------------------------------------------------
H DFTACTGRP(*NO) BNDDIR('RXSBND') ACTGRP(*CALLER)

 /define RXSV6R1
 /copy QRPGLECPY,RXSCB

D JSON            S                   Like(RXS_Var64Kv_t)

D CreateJsonDS    DS                  LikeDS(RXS_CreateJsonDS_t)
D RootDS          DS                  LikeDS(RXS_JsonStructureDS_t)
D i               S              3U 0
 /free
   RXS_ResetDS( CreateJsonDS : RXS_DS_TYPE_CREATEJSON );
   RXS_ResetDS( RootDS : RXS_DS_TYPE_JSONSTRUCTURE );
   
   CreateJsonDS.JsonStructureType = RXS_JSON_STRUCTURE_ARRAY;
   RootDS = RXS_CreateJson( CreateJsonDS );

   for i = 1 to 5;
     RXS_ComposeJsonNumber( *OMIT : %Char(i) : RootDS );
   endfor;

   RXS_GetJsonString( JSON : CreateJsonDS );
   // JSON looks like:
   //
   // [1,2,3,4,5]

   RXS_DestroyJson( CreateJsonDS );

   *INLR = *ON;
 /end-free

Data Structures

D RXS_JsonStructureDS_t...
D                 DS                  Qualified Template Inz
 
D   ReturnedErrorInfo...
D                                     LikeDS(RXS_ReturnedErrorInfoDS_t) Inz
 
D   DataStructureType...
D                                5I 0 Inz(RXS_DS_TYPE_JSONSTRUCTURE)

Internal use only

D   OnErrorMessageType...
D                                5I 0
 
D   JsonStructureType...
D                                 N   Inz(RXS_JSON_STRUCTURE_OBJECT)

Internal use only

D   JsonStructure@...
D                                 *   Inz(*Null)

Internal use only

D   InputCcsid...
D                               10I 0 Inz(RXS_CCSID_JOB)

Specifies the CCSID of the data being passed into the JSON composition subprocedures. Default is job CCSID.

D   OutputCcsid...
D                               10I 0 Inz(RXS_CCSID_JOB)

Specifies the CCSID that the JSON will be output as from RXS_GetJsonString(). Default is job CCSID.