ibmi-brunch-learn

Announcement

Collapse
No announcement yet.

Decryption API's in ILE

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Decryption API's in ILE

    Having a strange problem where Decryption is working in a batch job but not working in an interactive job. Anyone ever seen this ?

  • #2
    Re: Decryption API's in ILE

    That seems odd....What is your jobd of the batch job.....Is it different than your interactive jobd? Just thinking it may be authority related --or-- a differenct library list in your batch job and there may be multiple version of the program/file(s)

    Jamie
    All my answers were extracted from the "Big Dummy's Guide to the As400"
    and I take no responsibility for any of them.

    www.code400.com

    Comment


    • #3
      Re: Decryption API's in ILE

      checked it all. all the parameters going into the decrypt API are exactly the same for batch and interactive. all the parameters coming out of the decrypt API are exactly the same except the clear text key. it's correct for batch, incorrect for interactive.

      Comment


      • #4
        Re: Decryption API's in ILE

        Post the program (a subset) ill download recompile and see if I get the same....

        Jamie
        All my answers were extracted from the "Big Dummy's Guide to the As400"
        and I take no responsibility for any of them.

        www.code400.com

        Comment


        • #5
          Re: Decryption API's in ILE

          here you go. thanks.

          Code:
               D*------------------------------------------------------------------------*
                *
                * DATA STRUCTURE TO ENCRYPT DATA
               D                 DS
               D* clear data
               D  ED_PARM1               1   1024
               D*
               D* length of clear data
               D  ED_PARM2            1025   1028B 0
               D*
               D* clear data format name
               D  ED_PARM3            1029   1036
               D*
               D* algorithm description (see detail description below)
               D**ED_PARM4************1037   1136
               D*
               D* algorithm description format name
               D  ED_PARM5            1137   1144
               D*
               D* key description (see detail description below)
               D**ED_PARM6************1145   1244
               D*
               D* key description format name
               D  ED_PARM7            1245   1252
               D*
               D* cryptographic service provider
               D  ED_PARM8            1253   1253
               D*
               D* cryptographic device name
               D  ED_PARM9            1254   1263
               D*
               D* encrypted data (RETURNED)
               D  ED_PARM10           1264   2287
               D*
               D* length of area provided for encrypted data
               D  ED_PARM11           2288   2291B 0
               D*
               D* length of encrypted data return (RETURNED)
               D  ED_PARM12           2292   2295B 0
               D*
               D* error code
               D  ED_PARM13           2296   2315
                *
               DED_PARM4         DS
               D*
               D* block cipher algorithm
               D  ED_PARM4_1             1      4B 0
               D*
               D* block length
               D  ED_PARM4_2             5      8B 0
               D*
               D* mode
               D  ED_PARM4_3             9      9
               D*
               D* pad option
               D  ED_PARM4_4            10     10
               D*
               D* pad character
               D  ED_PARM4_5            11     11
               D*
               D* reserved
               D  ED_PARM4_6            12     12
               D*
               D* MAC length
               D  ED_PARM4_7            13     16B 0
               D*
               D* effective key size
               D  ED_PARM4_8            17     20B 0
               D*
               D* initialization vector
               D  ED_PARM4_9            21     52
               D  ED_PARM4_9_1          21     21
               D  ED_PARM4_9_2          22     22
               D  ED_PARM4_9_3          23     23
               D  ED_PARM4_9_4          24     24
               D  ED_PARM4_9_5          25     25
               D  ED_PARM4_9_6          26     26
               D  ED_PARM4_9_7          27     27
               D  ED_PARM4_9_8          28     28
               D  ED_PARM4_9_9          29     29
               D  ED_PARM4_9_10         30     30
               D  ED_PARM4_9_11         31     31
               D  ED_PARM4_9_12         32     32
               D  ED_PARM4_9_13         33     33
               D  ED_PARM4_9_14         34     34
               D  ED_PARM4_9_15         35     35
               D  ED_PARM4_9_16         36     36
               D  ED_PARM4_9_17         37     37
               D  ED_PARM4_9_18         38     38
               D  ED_PARM4_9_19         39     39
               D  ED_PARM4_9_20         40     40
               D  ED_PARM4_9_21         41     41
               D  ED_PARM4_9_22         42     42
               D  ED_PARM4_9_23         43     43
               D  ED_PARM4_9_24         44     44
               D  ED_PARM4_9_25         45     45
               D  ED_PARM4_9_26         46     46
               D  ED_PARM4_9_27         47     47
               D  ED_PARM4_9_28         48     48
               D  ED_PARM4_9_29         49     49
               D  ED_PARM4_9_30         50     50
               D  ED_PARM4_9_31         51     51
               D  ED_PARM4_9_32         52     52
                *
               DED_PARM6         DS
               D*
               D* key type
               D  ED_PARM6_1             1      4B 0
               D*
               D* key string length
               D  ED_PARM6_2             5      8B 0
               D*
               D* key format
               D  ED_PARM6_3             9      9
               D*
               D* reserved
               D  ED_PARM6_4            10     12
               D*
               D* key string
               D  ED_PARM6_5            13     36
                *
                **************************************************************************
                *
                * DATA STRUCTURE FOR DECRYPT DATA
               D                 DS
               D* encrypted data
               D  DD_PARM1               1   1024
               D*
               D* length of encrypted data
               D  DD_PARM2            1025   1028B 0
               D*
               D* algorithm description (see detail description below)
               D**DD_PARM3************1029   1079
               D*
               D* algorithm description format name
               D  DD_PARM4            1080   1087
               D*
               D* key description (see detail description below)
               D**DD_PARM5************1088   2111
               D*
               D* key description format name
               D  DD_PARM6            2112   2119
               D*
               D* cryptographic service provider
               D  DD_PARM7            2120   2120
               D*
               D* cryptographic device name
               D  DD_PARM8            2121   2130
               D*
               D* clear data (RETURNED)
               D  DD_PARM9            2131   3154
               D*
               D* length of area provided for clear data
               D  DD_PARM10           3155   3158B 0
               D*
               D* length of clear data returned (RETURNED)
               D  DD_PARM11           3159   3162B 0
               D*
               D* error code 0160.00
               D  DD_PARM12           3163   3182
                *
               DDD_PARM3         DS
                *
               D* block cipher algorithm
               D  DD_PARM3_1             1      4B 0
                *
               D* block length
               D  DD_PARM3_2             5      8B 0
                *
               D* mode
               D  DD_PARM3_3             9      9
                *
               D* pad option
               D  DD_PARM3_4            10     10
                *
               D* pad character
               D  DD_PARM3_5            11     11
                *
                * reserved
               D  DD_PARM3_6            12     12
                *
               D* MAC length
               D  DD_PARM3_7            13     16B 0
                *
               D* effective key size
               D  DD_PARM3_8            17     20B 0
                *
               D* initialization vector
               D  DD_PARM3_9_1          21     21
               D  DD_PARM3_9_2          22     22
               D  DD_PARM3_9_3          23     23
               D  DD_PARM3_9_4          24     24
               D  DD_PARM3_9_5          25     25
               D  DD_PARM3_9_6          26     26
               D  DD_PARM3_9_7          27     27
               D  DD_PARM3_9_8          28     28
               D  DD_PARM3_9_9          29     29
               D  DD_PARM3_9_10         30     30
               D  DD_PARM3_9_11         31     31
               D  DD_PARM3_9_12         32     32
               D  DD_PARM3_9_13         33     33
               D  DD_PARM3_9_14         34     34
               D  DD_PARM3_9_15         35     35
               D  DD_PARM3_9_16         36     36
               D  DD_PARM3_9_17         37     37
               D  DD_PARM3_9_18         38     38
               D  DD_PARM3_9_19         39     39
               D  DD_PARM3_9_20         40     40
               D  DD_PARM3_9_21         41     41
               D  DD_PARM3_9_22         42     42
               D  DD_PARM3_9_23         43     43
               D  DD_PARM3_9_24         44     44
               D  DD_PARM3_9_25         45     45
               D  DD_PARM3_9_26         46     46
               D  DD_PARM3_9_27         47     47
               D  DD_PARM3_9_28         48     48
               D  DD_PARM3_9_29         49     49
               D  DD_PARM3_9_30         50     50
               D  DD_PARM3_9_31         51     51
               D  DD_PARM3_9_32         52     52
                *
               DDD_PARM5         DS
                *
               D* key type
               D  DD_PARM5_1             1      4B 0
                *
               D* key string length
               D  DD_PARM5_2             5      8B 0
                *
               D* key format
               D  DD_PARM5_3             9      9
                *
               D* reserved
               D  DD_PARM5_4            10     12
                *
               D* key string
               D  DD_PARM5_5            13     36
                ************************************************************************
                *
                *PLIST DESCRIPTION:
                * KEY_E_D          'E' OR 'D' TO EITHER ENCRYPT OR DECRYPT
                * CLEAR_KEY        CONTAINS CLEAR KEY IF ENCRYPTING OR
                *                  IS BLANKS IF DECRYPTING AND WILL HAVE VALUE RETURNED
                *                  DURING DECRYPTION API HERE.
                * ENCTYPTED_KEY    CONTAINS ENCRYPTED KEY IF DECRYPTING OR
                *                  IS BLANKS IF ENCRYPTING AND WILL HAVE VALUE RETURNED
                *                  DURING ENCRYPTION API HERE.
                * CLR_KEY_LEN      CONTAINS CLEAR KEY LENGTH IF ENCRYPTING OR
                *                  IS BLANKS IF DECRYPTING AND WILL HAVE VALUE RETURNED
                *                  DURING DECRYPTION API HERE.
                * EC_KEY_LEN       CONTAINS ENCRYPTED KEY LENGTH IF DECRYPTING OR
                *                  IS BLANKS IF ENCRYPTING AND WILL HAVE VALUE RETURNED
                *                  DURING ENCRYPTION API HERE.
                * ERRORCODE        IS BLANKS INITIALLY AND WILL HAVE ERROR CODE RETURNED
                *                  IF ALI ENCOUNTERS AN ERROR
                *
               C     *ENTRY        PLIST
               C                   PARM                    KEY_E_D           1
               C                   PARM                    CLEAR_KEY      1024
               C                   PARM                    ENCTYPTED_KEY  1024
               C                   PARM                    CLR_KEY_LEN       4
               C                   PARM                    EC_KEY_LEN        4
               C                   PARM                    ERRORCODE        20
                *
                *****************************************************************
                * PROCESS IF PROGRAM NEEDS TO ENCRYPT DATA
               C     KEY_E_D       IFEQ      'E'
                *
               C                   MOVEL     CLEAR_KEY     ED_PARM1
               C                   CLEAR                   ED_PARM2
               C                   MOVE      CLR_KEY_LEN   ED_PARM2
               C                   MOVEL     'DATA0100'    ED_PARM3
               C                   CLEAR                   ED_PARM4_1
               C                   Z-ADD     22            ED_PARM4_1
               C                   CLEAR                   ED_PARM4_2
               C                   Z-ADD     32            ED_PARM4_2
               C                   MOVEL     '0'           ED_PARM4_3
               C                   MOVEL     '0'           ED_PARM4_4
               C                   MOVEL     X'00'         ED_PARM4_5
               C                   MOVEL     X'00'         ED_PARM4_6
               C                   CLEAR                   ED_PARM4_7
               C                   MOVEL     *BLANKS       ED_PARM4_7
               C                   CLEAR                   ED_PARM4_8
               C                   Z-ADD     0             ED_PARM4_8
               C                   MOVEL     X'00'         ED_PARM4_9_1
               C                   MOVEL     X'00'         ED_PARM4_9_2
               C                   MOVEL     X'00'         ED_PARM4_9_3
               C                   MOVEL     X'00'         ED_PARM4_9_4
               C                   MOVEL     X'00'         ED_PARM4_9_5
               C                   MOVEL     X'00'         ED_PARM4_9_6
               C                   MOVEL     X'00'         ED_PARM4_9_7
               C                   MOVEL     X'00'         ED_PARM4_9_8
               C                   MOVEL     X'00'         ED_PARM4_9_9
               C                   MOVEL     X'00'         ED_PARM4_9_10
               C                   MOVEL     X'00'         ED_PARM4_9_11
               C                   MOVEL     X'00'         ED_PARM4_9_12
               C                   MOVEL     X'00'         ED_PARM4_9_13
               C                   MOVEL     X'00'         ED_PARM4_9_14
               C                   MOVEL     X'00'         ED_PARM4_9_15
               C                   MOVEL     X'00'         ED_PARM4_9_16
               C                   MOVEL     X'00'         ED_PARM4_9_17
               C                   MOVEL     X'00'         ED_PARM4_9_18
               C                   MOVEL     X'00'         ED_PARM4_9_19
               C                   MOVEL     X'00'         ED_PARM4_9_20
               C                   MOVEL     X'00'         ED_PARM4_9_21
               C                   MOVEL     X'00'         ED_PARM4_9_22
               C                   MOVEL     X'00'         ED_PARM4_9_23
               C                   MOVEL     X'00'         ED_PARM4_9_24
               C                   MOVEL     X'00'         ED_PARM4_9_25
               C                   MOVEL     X'00'         ED_PARM4_9_26
               C                   MOVEL     X'00'         ED_PARM4_9_27
               C                   MOVEL     X'00'         ED_PARM4_9_28
               C                   MOVEL     X'00'         ED_PARM4_9_29
               C                   MOVEL     X'00'         ED_PARM4_9_30
               C                   MOVEL     X'00'         ED_PARM4_9_31
               C                   MOVEL     X'00'         ED_PARM4_9_32
               C                   MOVEL     'ALGD0200'    ED_PARM5
               C                   CLEAR                   ED_PARM6_1
               C                   Z-ADD     22            ED_PARM6_1
               C                   CLEAR                   ED_PARM6_2
               C                   Z-ADD     32            ED_PARM6_2
               C                   MOVEL     '0'           ED_PARM6_3
               C                   MOVEL     X'00'         ED_PARM6_4
               C                   MOVE      MK            ED_PARM6_5
               C                   MOVEL     'KEYD0200'    ED_PARM7
               C                   MOVEL     '0'           ED_PARM8
               C                   MOVEL     *BLANKS       ED_PARM9
               C                   MOVEL     *BLANKS       ED_PARM10
               C                   CLEAR                   ED_PARM11
               C                   Z-ADD     1024          ED_PARM11
               C                   CLEAR                   ED_PARM12
               C                   MOVEL     *BLANKS       ED_PARM12
               C                   MOVEL     *BLANKS       ED_PARM13
                *
               C*
               C                   CALL      'QC3ENCDT'
                *
                * CLEAR DATA
               C                   PARM                    ED_PARM1
                *
                * LENGTH OF CLEAR DATA
               C                   PARM                    ED_PARM2
                *
                * CLEAR DATA FORMAT NAME
               C                   PARM                    ED_PARM3
                *
                * ALGORITHM DESCRIPTION
               C                   PARM                    ED_PARM4
                *
                * ALGORITHM DESCRIPTION FORMAT NAME
               C                   PARM                    ED_PARM5
                *
                * KEY DESCRIPTION
                * (INCLUDES THE MASTER KEY)
               C                   PARM                    ED_PARM6
                *
                * KEY DESCRIPTION FORMAT NAME
               C                   PARM                    ED_PARM7
                *
                * CRYPTOGRAPHIC SERVICE PROVIDER
               C                   PARM                    ED_PARM8
                *
                * CRYPTOGRAPHIC DEVICE NAME
               C                   PARM                    ED_PARM9
                *
                * ENCRYPTED DATA (OUTPUT)
               C                   PARM                    ED_PARM10
                *
                * LENGTH OF AREA PROVIDED FOR ENCRYPTED DATA
               C                   PARM                    ED_PARM11
                *
                * LENGTH OF ENCRYPTED DATA RETURNED (OUTPUT)
               C                   PARM                    ED_PARM12
                *
                * ERROR CODE
               C                   PARM                    ED_PARM13
                *
               C                   MOVEL     ED_PARM10     ENCTYPTED_KEY
               C                   MOVE      ED_PARM12     EC_KEY_LEN
               C                   MOVE      ED_PARM13     ERRORCODE
                *
               C                   END
                *******************************************************
                * PROCESS IF PROGRAM NEEDS TO DECRYPT DATA
               C     KEY_E_D       IFEQ      'D'
               C*
               C                   MOVEL     ENCTYPTED_KEY DD_PARM1
               C                   CLEAR                   DD_PARM2
               C                   MOVE      EC_KEY_LEN    DD_PARM2
               C                   CLEAR                   DD_PARM3_1
               C                   Z-ADD     22            DD_PARM3_1
               C                   CLEAR                   DD_PARM3_2
               C                   Z-ADD     32            DD_PARM3_2
               C                   MOVEL     '0'           DD_PARM3_3
               C                   MOVEL     '0'           DD_PARM3_4
               C                   MOVEL     X'00'         DD_PARM3_5
               C                   MOVEL     X'00'         DD_PARM3_6
               C                   CLEAR                   DD_PARM3_7
               C                   MOVEL     *BLANKS       DD_PARM3_7
               C                   CLEAR                   DD_PARM3_8
               C                   Z-ADD     0             DD_PARM3_8
               C                   MOVEL     X'00'         DD_PARM3_9_1
               C                   MOVEL     X'00'         DD_PARM3_9_2
               C                   MOVEL     X'00'         DD_PARM3_9_3
               C                   MOVEL     X'00'         DD_PARM3_9_4
               C                   MOVEL     X'00'         DD_PARM3_9_5
               C                   MOVEL     X'00'         DD_PARM3_9_6
               C                   MOVEL     X'00'         DD_PARM3_9_7
               C                   MOVEL     X'00'         DD_PARM3_9_8
               C                   MOVEL     X'00'         DD_PARM3_9_9
               C                   MOVEL     X'00'         DD_PARM3_9_10
               C                   MOVEL     X'00'         DD_PARM3_9_11
               C                   MOVEL     X'00'         DD_PARM3_9_12
               C                   MOVEL     X'00'         DD_PARM3_9_13
               C                   MOVEL     X'00'         DD_PARM3_9_14
               C                   MOVEL     X'00'         DD_PARM3_9_15
               C                   MOVEL     X'00'         DD_PARM3_9_16
               C                   MOVEL     X'00'         DD_PARM3_9_17
               C                   MOVEL     X'00'         DD_PARM3_9_18
               C                   MOVEL     X'00'         DD_PARM3_9_19
               C                   MOVEL     X'00'         DD_PARM3_9_20
               C                   MOVEL     X'00'         DD_PARM3_9_21
               C                   MOVEL     X'00'         DD_PARM3_9_22
               C                   MOVEL     X'00'         DD_PARM3_9_23
               C                   MOVEL     X'00'         DD_PARM3_9_24
               C                   MOVEL     X'00'         DD_PARM3_9_25
               C                   MOVEL     X'00'         DD_PARM3_9_26
               C                   MOVEL     X'00'         DD_PARM3_9_27
               C                   MOVEL     X'00'         DD_PARM3_9_28
               C                   MOVEL     X'00'         DD_PARM3_9_29
               C                   MOVEL     X'00'         DD_PARM3_9_30
               C                   MOVEL     X'00'         DD_PARM3_9_31
               C                   MOVEL     X'00'         DD_PARM3_9_32
               C                   MOVEL     'ALGD0200'    DD_PARM4
               C                   CLEAR                   DD_PARM5_1
               C                   Z-ADD     22            DD_PARM5_1
               C                   CLEAR                   DD_PARM5_2
               C                   Z-ADD     32            DD_PARM5_2
               C                   MOVEL     '0'           DD_PARM5_3
               C                   MOVEL     X'00'         DD_PARM5_4
               C                   MOVE      MK            DD_PARM5_5
               C                   MOVEL     'KEYD0200'    DD_PARM6
               C                   MOVEL     '0'           DD_PARM7
               C                   MOVEL     *BLANKS       DD_PARM8
               C                   MOVEL     *BLANKS       DD_PARM9
               C                   CLEAR                   DD_PARM10
               C                   Z-ADD     1024          DD_PARM10
               C                   CLEAR                   DD_PARM11
               C                   MOVEL     *BLANKS       DD_PARM11
               C                   MOVEL     *BLANKS       DD_PARM12
                *
               C                   CALL      'QC3DECDT'
                *
                * ENCRYPTED DATA
               C                   PARM                    DD_PARM1
                *
                * LENGTH OF ENCRYPTED DATA
               C                   PARM                    DD_PARM2
                *
                * ALGORITHM DESCRIPTION
               C                   PARM                    DD_PARM3
                *
                * ALGORITHM DESCRIPTION FORMAT NAME
               C                   PARM                    DD_PARM4
                *
                * KEY DESCRIPTION
                * (INCLUDES THE MASTER KEY)
               C                   PARM                    DD_PARM5
                *
                * KEY DESCRIPTION FORMAT NAME
               C                   PARM                    DD_PARM6
                *
                * CRYPTOGRAPHIC SERVICE PROVIDER
               C                   PARM                    DD_PARM7
                *
                * CRYPTOGRAPHIC DEVICE NAME
               C                   PARM                    DD_PARM8
                *
                * CLEAR DATA
               C                   PARM                    DD_PARM9
                *
                * LENGTH OF AREA PROVIDED FOR CLEAR DATA
               C                   PARM                    DD_PARM10
                *
                * LENGTH OF CLEAR DATA RETURNED
               C                   PARM                    DD_PARM11
                *
                * ERROR CODE
               C                   PARM                    DD_PARM12
                *
               C                   MOVE      DD_PARM11     CLR_KEY_LEN
               C                   MOVEL     DD_PARM9      CLEAR_KEY
               C                   MOVE      DD_PARM12     ERRORCODE
                *
               C                   END
                *
                ********************************************************
               C*                  MOVE      '1'           *INLR
               c                   return
                ****************************************************************
               C     *INZSR        BEGSR
                *
                * MASTER KEY
               C                   CALL      'KEYMAN/KM1CC'
                *
                * MASTER KEY TO BE RETURNED
               C                   PARM                    KEYPARM        1024
               C                   PARM                    LENPARM           4
               C                   PARM                    ERRORPARM         4
                *
               C                   MOVEL     KEYPARM       MK               32
                *
               C                   ENDSR
               C
               *******
          *

          Comment


          • #6
            Re: Decryption API's in ILE

            Okay on this call

            Code:
             c                   CALL      'KEYMAN/KM1CC'                       
              *                                                                 
              * MASTER KEY TO BE RETURNED                                       
             c                   PARM                    KEYPARM        1024    
             c                   PARM                    LENPARM           4    
             c                   PARM                    ERRORPARM         4
            also on the entry PLIST always place the larger parameters on the bottom of the plist
            Code:
            c     *ENTRY        PLIST                                         
            c                   PARM                    KEY_E_D           1   
            c                   PARM                    CLR_KEY_LEN       4   
            c                   PARM                    EC_KEY_LEN        4   
            c                   PARM                    ERRORCODE        20   
            c                   PARM                    CLEAR_KEY      1024   
            c                   PARM                    ENCTYPTED_KEY  1024   
             *
            the value returned from keyparm/clearkey.....does it have garbage @ the end?
            If you would do me a test and move this parmater to the last parm in
            the call and see what happens. If this doesnt fix the problem, but there is
            still garbage at the end of the keyparm and or clear_KEY then add a parm(s) which is length of the keyparm field then do
            eval keyparm = %subst(keyparm:1:keylength) --or --

            find the first blank

            firstblank = %scan(' ' : %trim(CLEAR_KEY))

            that should clear up the garbage......
            let me know if im barking up the wrong tree...I cannot test this as I donot have source to KM1CC

            jamie
            All my answers were extracted from the "Big Dummy's Guide to the As400"
            and I take no responsibility for any of them.

            www.code400.com

            Comment


            • #7
              Re: Decryption API's in ILE

              Wow. Thank you for all your help. I made the CL changes. I am trying to use the
              %scan.
              eval clear_key = %scan(' ':%trim(dd_parm9))

              where dd_parm9 is the clear key returned after the Decrypt API.
              I am getting the error:
              *RNF7416 30 1 The types of the right and left hand side do not match in the
              EVAL operation.
              but both clear_key and dd_parm9 are defined as 1024 character.

              Comment


              • #8
                Re: Decryption API's in ILE

                Basically for the most part, we have an application that decrypts data. It seems to work fine when run in batch, but does not when run interactively. It seems to return an incorrect key when run interactively. We checked the program line by line by writing each decrypt API parameter out to a file during the batch job and the interactive job. All parameters are exactly the same (for the batch and interactive Job) before the API is called. All parameters, except the return clear key, are exactly the same after the API is called.

                Comment


                • #9
                  Re: Decryption API's in ILE

                  Code:
                  eval clear_key = %scan(' ':%trim(dd_parm9))
                  In this form the clear_key is expected to be decimal as it will return the actual
                  positon in the field where the first *blank appears.

                  so if dd_parm9 = 'some12345 dsdfs xassdf '
                  the decimal field would return the number 10
                  so then you would

                  once you get this value
                  then you need to use the %subst opcode to strip out the bad data.

                  eval decimalfield -= 1
                  eval dd_parm9 = %subst(dd_parm9:1:decimalfield)





                  Jamie
                  All my answers were extracted from the "Big Dummy's Guide to the As400"
                  and I take no responsibility for any of them.

                  www.code400.com

                  Comment


                  • #10
                    Re: Decryption API's in ILE

                    thanks for all your help. looks like our main problem (amongst other small ones) was the activation group. We had to change the act.group when we compiled our rpg ile programs.

                    Comment


                    • #11
                      Re: Decryption API's in ILE

                      That will always bite ya in the end....thanks for getting back with us...

                      jamie
                      All my answers were extracted from the "Big Dummy's Guide to the As400"
                      and I take no responsibility for any of them.

                      www.code400.com

                      Comment

                      Working...
                      X