CEESCEN - 世紀ウィンドウの設定

CEESCEN は、Language Environment が 2 桁で年を表したとき、この年値の含まれる 100 年間 (世紀) を設定します。以下の場合は、CEEDAYS または CEESECS と併用してください。
  • 2 桁の年が含まれる日付の値 (例えば、YYMMDD 形式) を処理する場合
  • Language Environment のデフォルトの世紀の間隔が特定のアプリケーションの要件を満たさない場合

世紀の間隔は、スレッド・レベルのデータとして保管されるため、1 つのスレッド内の間隔を変更しても、別のスレッドの間隔には影響はありません。「century (世紀)」ウィンドウを照会する場合は、CEEQCEN を使用してください。

CEEQCEN が相互に影響し合うのは、Language Environment の NLS および日時サービスだけで、Language Environment のロケール呼び出し可能サービスや、C のロケール依存関数には影響しません。
構文図を読む構文図をスキップする
構文

>>-CEERAN0--(--century_start--,--fc--)-------------------------><

century_start
世紀ウィンドウを設定する 0 から 100 までの整数。例えば、値 80 の場合、2 桁の年はすべて、システム日付の 80 年前に始まる 100 年間の枠内に入れられます。したがって、1995 年には 2 桁の年はすべて、1915 年から 2014 年まで (1915 年と 2014 年を含む) の日付を表すと見なされます。
fc (出力)
このサービスの結果を示す 12 バイトの フィードバック・コード (言語によってはオプション)。このパラメーターを省略する場合は、呼び出し可能サービスの呼び出しを参照して、フィードバック・コードが省略されたことを示すための適切な構文を確認してください。

このサービスの結果、出力される記号条件は以下のとおりです。

コード 重大度 メッセージ番号 メッセージ・テキスト
CEE000 0 サービスが正しく完了した。
CEE2E6 3 2502 UTC/GMT がシステムから使用可能でなかった。

使用上の注意

詳細情報

  1. 以下は、C/C++ によって呼び出される CEESCEN の例です。
    /*Module/File Name: EDCSCEN   */
    
    #include <string.h>
    #include <stdio.h>
    #include <leawi.h>
    #include <stdlib.h>
    #include <ceeedcct.h>
    
    int main (void) {
    
      _INT4 century_start;
      _FEEDBACK fc;
    
      century_start = 50;
    
      CEESCEN(&century_start,&fc);
      if ( _FBCHECK ( fc , CEE000 ) != 0 ) {
         printf("CEESCEN failed with message number %d¥n",
                fc.tok_msgno);
         exit(2999);
      }
    }
  2. 以下は、COBOL によって呼び出される CEESCEN の例です。
    CBL LIB,QUOTE
          *Module/File Name: IGZTSCEN
          **************************************************
          **                                              **
          ** CBLSCEN - Call CEESCEN to set the Lang. Env. **
          **           century window                     **
          **                                              **
          ** In this example, CEESCEN is called to change **
          ** the start of the century window to 30 years  **
          ** before the system date. CEEQCEN is then      **
          ** called to query that the change made.  A     **
          ** message that this has been done is then      **
          ** displayed.                                   **
          **                                              **
          **************************************************
           IDENTIFICATION DIVISION.
           PROGRAM-ID. CBLSCEN.
    
           DATA DIVISION.
           WORKING-STORAGE SECTION.
           01  STARTCW                 PIC S9(9) BINARY.
           01  FC.
               02  Condition-Token-Value.
               COPY  CEEIGZCT.
                   03  Case-1-Condition-ID.
                       04  Severity    PIC S9(4) BINARY.
                       04  Msg-No      PIC S9(4) BINARY.
                   03  Case-2-Condition-ID
                             REDEFINES Case-1-Condition-ID.
                       04  Class-Code  PIC S9(4) BINARY.
                       04  Cause-Code  PIC S9(4) BINARY.
                   03  Case-Sev-Ctl    PIC X.
                   03  Facility-ID     PIC XXX.
               02  I-S-Info            PIC S9(9) BINARY.
           PROCEDURE DIVISION.
           PARA-CBLSCEN.
          **************************************************
          ** Specify 30 as century start, and two-digit
          **     years will be assumed to lie in the
          **     100-year window starting 30 years before
          **     the system date.
          **************************************************
               MOVE 30 TO STARTCW.
    
          **************************************************
          ** Call CEESCEN to change the start of the century
          **     window.
          **************************************************
    
               CALL "CEESCEN" USING STARTCW, FC.
               IF NOT CEE000 of FC  THEN
                   DISPLAY "CEESCEN failed with msg "
                       Msg-No of FC UPON CONSOLE
                   STOP RUN
               END-IF.
          PARA-CBLQCEN.
          **************************************************
          ** Call CEEQCEN to return the start of the century
          **     window
          **************************************************
               CALL "CEEQCEN" USING STARTCW, FC.
    
          **************************************************
          ** CEEQCEN has no non-zero feedback codes to
          **     check, so just display result.
          **************************************************
                   DISPLAY "The start of the century "
                       "window is: " STARTCW
               GOBACK.
  3. 以下は、PL/I によって呼び出される CEESCEN の例です。
    *PROCESS MACRO;
     /* Module/File Name: IBMSCEN                        */
     /****************************************************/
     /**                                                **/
     /** Function: CEESCEN - set the century window     **/
     /**                                                **/
     /****************************************************/
     PLISCEN: PROC OPTIONS(MAIN);
    
        %INCLUDE  CEEIBMAW;
        %INCLUDE  CEEIBMCT;
    
        DCL STARTCW  REAL FIXED BINARY(31,0);
        DCL 01 FC,                     /* Feedback token */
               03 MsgSev    REAL FIXED BINARY(15,0),
               03 MsgNo     REAL FIXED BINARY(15,0),
               03 Flags,
                  05 Case      BIT(2),
                  05 Severity  BIT(3),
                  05 Control   BIT(3),
               03 FacID     CHAR(3),      /* Facility ID */
               03 ISI   /* Instance-Specific Information */
                            REAL FIXED BINARY(31,0);
    
        STARTCW = 20; /* Set 20 as century start */
    
       /* Call CEESCEN to request that two-digit years   */
       /*    lie in the 100-year window starting 20      */
       /*    years before the system date                */
        CALL CEESCEN ( STARTCW, FC );
        IF  FBCHECK( FC, CEE000)  THEN  DO;
           PUT SKIP LIST ( 'The century window now starts '
              || STARTCW || ' years before today.');
           END;
        ELSE  DO;
           DISPLAY( 'CEESCEN failed with msg '
              || FC.MsgNo );
           STOP;
           END;
    
     END PLISCEN;