000100****************************************************************** 000200* SYSTEM : CICS WEB SUPPORT (CWS) * 000300* MODULE ID : DASWCB64 * 000400* MODULE TYPE : COBOL COPYBOOK - PARAMETER AREA LAYOUT * 000500* * 000600* TITLE : WEB-TO-CICS PARAMETER AREA FOR INVOKING THE * 000700* BASE-64 CONVERSION ROUTINE (CXB64Q). * 000800* * 000900*================================================================* 001000* FIELD-NAME: RQST-INPUT: RETN-OUTPUT: * 001100* -------------- ------------------------- ------------------ * 001200* INP-AREA-ADDR: POINTS TO 1ST 8-BYTES UNCHANGED * 001300* (MINIMUM) TO BE CONVERTED. * 001400* * 001500* OUT-AREA-ADDR: POINTS TO START OF AREA CONVERTED VALUE * 001600* TO HOLD CONVERTED VALUE. * 001700* -> ON CONVERT-FROM-BASE64, * 001800* MUST BE AT LEAST 66% * 001900* AS LARGE AS INP-AREA. * 002000* -> ON CONVERT-TO-BASE64, * 002100* MUST BE AT LEAST 133% * 002200* AS LARGE AS INP-AREA. * 002300* * 002400* INP-AREA-LEN: ACTUAL LENGTH (# OF BYTES) UNCHANGED * 002500* OF INPUT DATA VALUE TO BE * 002600* CONVERTED TO/FROM BASE64. * 002700* * 002800* OUT-AREA-LEN: MAX LENGTH OF RECEIVING LENGTH (# OF BYTES) * 002900* FIELD. OF CONVERTED VALUE * 003000* * 003100* RQST-CODE: SPECIFIES TYPE OF CONVERT UNCHANGED * 003200* * 003300* RETURN-CODE: NONE NUMERIC RESPONSE * 003400* (COBOL)=R15 * 003500* * 003600*================================================================* 003700* * 003800* NOTES ON BASE-64 CONVERSION: * 003900* ---------------------------- * 004000* * 004100* 1. NORMAL EBCDIC CHARACTERS ARE STORED IN HEXADECIMAL (BASE16) * 004200* NOTATION ON IBM'S MAINFRAME COMPUTERS IN THE RANGE OF X'00' * 004300* (DECIMAL ZERO) TO X'0F' (DECIMAL 15). * 004400* * 004500* 2. VALUES STORED IN BASE-64 NOTATION CONSIST OF CHARACTERS IN * 004600* THE RANGE OF X'00' (DECIMAL ZERO) TO X'3F' (DECIMAL 63). * 004700* THIS RANGE DOES =NOT= INCLUDE THE EQUAL-SIGN (=) SO THAT * 004800* CHARACTER IS USED FOR SPECIAL PURPOSE IN THE BASE-64 VALUE. * 004900* NOTE THAT THE EBCDIC VALUE CAN CONTAIN EQUAL-SIGN(S) BUT * 005000* THESE GET CONVERTED TO SOME OTHER BASE-64 CHARACTER IN THE * 005100* ABOVE RANGE. THIS MEANS THAT THE EQUAL-SIGN IN A RESULTING * 005200* BASE-64 VALUE IS A PLACE-HOLDER FOR "NULL" CHARACTERS. * 005300* * 005400* 3. BASE-64 VALUES MUST ALWAYS OCCUR IN "TRIPLETS" WHICH ARE * 005500* GROUPS OF THREE "OCTETS". EACH OCTET IS AN 8-BIT BYTE * 005600* WHICH IS WHAT IBM'S MAINFRAME OPERATING SYSTEMS ALL USE. * 005700* THIS MEANS THAT THE NUMBER OF BYTES IN THE FINAL BASE-64 * 005800* VALUE MUST BE EVENLY DIVISIBLE BY 3 BYTES (24-BITS). * 005900* * 006000* 4. IF THE LENGTH OF THE INCOMING EBCDIC VALUE, WHEN CONVERTED * 006100* TO BASE-64, DOES NOT RESULT IN A BASE-64 VALUE WHOSE LENGTH * 006200* IS DIVISIBLE BY 3, THEN ONE OR TWO TRAILING EQUAL-SIGNS ARE * 006300* APPENDED TO THE BACK OF THE RESULTING CONVERTED VALUE. * 006400* TO THE BACK OF THE BASE-64 VALUE TO INDICATE THAT IT HAS * 006500* BEEN PADDED WITH NULLS. * 006600* * 006700* THIS MEANS THAT ONE OF THE FOLLOWING MUST BE TRUE: * 006800* A.) THE BASE-64 VALUE'S LENGTH IS EVENLY DIVISIBLE BY 3 SO * 006900* THE FINAL "TRIPLET" CONTAINS EXACTLY 24-BITS (3-BYTES) * 007000* AND NO PADDING WAS NEEDED. * 007100* B.) THE FINAL TRIPLET CONTAINS EXACTLY 16 BITS (2-BYTES) * 007200* PADDED WITH 1 TRAILING EQUAL (=) SIGN. * 007300* C.) THE FINAL TRIPLET CONTAINS EXACTLY 08 BITS (1-BYTE) * 007400* PADDED WITH 2 TRAILING EQUAL (=) SIGNS. * 007500* * 007600* IF A BASE-64 INPUT VALUE (BEING CONVERTED BACK TO EBCDIC) * 007700* DOES NOT FIT ONE OF THE ABOVE SCENARIOS, THE SUBROUTINE'S * 007800* RETURN-CODE INDICATES THIS AND NO CONVERSION OCCURS. * 007900* * 008000****************************************************************** 008100 008200 01 DASWCB64-PARAMETERS PIC X(14). 008300 01 DASWCB64-PARAMETERS-X REDEFINES 008400 DASWCB64-PARAMETERS. 008500 03 DASWCB64-RQST-FIELDS PIC X(14). 008600 03 DASWCB64-RQST-FIELDS-X REDEFINES 008700 DASWCB64-RQST-FIELDS. 008800 05 DASWCB64-INP-AREA-ADDR POINTER. 008900 05 DASWCB64-OUT-AREA-ADDR POINTER. 009000 05 DASWCB64-INP-AREA-LEN PIC S9(4) BINARY. 009100 05 DASWCB64-OUT-AREA-LEN PIC S9(4) BINARY. 009200 05 DASWCB64-CONVERT-TYPE PIC S9(4) BINARY. 009300 88 DASWCB64-CNVRT-FR-BASE64 VALUE 0001. 009400 88 DASWCB64-CNVRT-TO-BASE64 VALUE 0002. 009500* ------------------------------------------------------------* 009600* NOTE: CALLING PROGRAM MUST MOVE THE COBOL "RETURN-CODE" * 009700* SPECIAL-REGISTER VALUE TO THE FIELD BELOW BEFORE * 009800* INTERPRETING THE RESULTS. * 009900* ------------------------------------------------------------* 010000 03 DASWCB64-RETN-CODE PIC S9(8) BINARY. 010100 88 DASWCB64-RETN-NORMAL VALUE +0. 010200 88 DASWCB64-RETN-CONVERT-INV VALUE +100. 010300 88 DASWCB64-RETN-PARM-ERROR VALUE +101. 010400 88 DASWCB64-RETN-OUT-AREA-SIZE VALUE +102. 010500 88 DASWCB64-RETN-BASE64-CHAR-INV VALUE +200. 010600 88 DASWCB64-RETN-BASE64-END-INPUT VALUE +201. 010700 88 DASWCB64-RETN-BASE64-NULL-CHAR VALUE +202. 010800 010900****************************************************************** 011000****************************************************************** 011100****************** END OF DASWCB64 ***************************** 011200****************************************************************** 011300******************************************************************