Overview of $Date functions: Difference between revisions

From m204wiki
Jump to navigation Jump to search
m (misc formatting)
m (minor cleanup)
 
Line 6: Line 6:
Where:
Where:
<ul>
<ul>
<li>The <var class="term">year-format</var> argument controls the format of the year based on the following input values:</li>
<li>The <var class="term">year-format</var> argument controls the format of the returned year value; month and day formats depend on the individual $function. The following are the valid <var class="term">year-format</var> input values and their result:</li>
<table>
<table>
<tr class="head">
<tr class="head">
Line 34: Line 34:
</table>
</table>
<p>
<p>
CYY represents the century-year format. The first digit represents the century since 1900. The CYY format can be manipulated using the <var>[[CUSTOM parameter|CUSTOM]]</var> parameter.  </p>
<var>CYY</var> represents the century-year format. The first digit represents the century since 1900. The <var>CYY</var> format can be manipulated using the <var>[[CUSTOM parameter|CUSTOM]]</var> parameter.  </p>
</li>
</li>
   
   
Line 47: Line 47:
<tr>
<tr>
<td>$date(2,' ')</td>
<td>$date(2,' ')</td>
<td>'CYY MM DD'</td>
<td>CYY MM DD</td>
<td>113 07 11</td>
<td>113 07 11</td>
</tr>
</tr>


<tr>
<tr>
<td>$date(0,'Z')</td>
<td>$date(0,'z')</td>
<td>'YYzMMzDD'</td>
<td>YYzMMzDD</td>
<td>13z07z11</td>
<td>13z07z11</td>
</tr>
</tr>


<tr>
<tr>
<td>$DATEJ(1,'-')</td>
<td>$DateJ(1,'-')</td>
<td>'YYYY-DDD'</td>
<td>YYYY-DDD</td>
<td>2013-192</td>
<td>2013-192</td>
</tr>
</tr>


<tr>
<tr>
<td>$DATEJ(1,&apos;&apos;)</td>
<td>$DateJ(1,&apos;&apos;)</td>
<td>'YYYYDDD'</td>
<td>YYYYDDD</td>
<td>2013192</td>
<td>2013192</td>
</tr>
</tr>
Line 80: Line 80:
==Examples==
==Examples==
<ul>
<ul>
<li>IF CUSTOM=1, BASECENT=19, and CENTSPLT=95, then:
<li>If <code>CUSTOM=1</code>, <code>BASECENT=19</code>, and <code>CENTSPLT=95</code>, then:
<table>
<table>
<tr class="head">
<tr class="head">
<th>Print command</th>
<th>Print statement</th>
<th>Results</th>
<th>Result</th>
</tr>
</tr>


<tr>
<tr>
<td>PRINT $DATECNV('CYYDDD','YYYYMMDD','96001')</td>
<td><p class="codeInTable">Print $DateCnv('CYYDDD','YYYYMMDD','96001')</p></td>
<td align="right">19960101</td>
<td align="right"><p>19960101</p></td>
</tr>
</tr>


<tr>
<tr>
<td>
<td><p class="codeInTable">Print $DateCnv('CYYDDD','YYYYMMDD','196001')</p></td>
PRINT $DATECNV('CYYDDD','YYYYMMDD','196001')</td>
<td align="right"><p>20960101</p></td>
<td align="right">20960101</td>
</tr>
</tr>


<tr>
<tr>
<td>PRINT $DATECNV('CYYDDD','YYYYMMDD','95001')</td>
<td><p class="codeInTable">Print $DateCnv('CYYDDD','YYYYMMDD','95001')</p></td>
<td align="right">19950101</td>
<td align="right"><p>19950101</p></td>
</tr>
</tr>


<tr>
<tr>
<td>PRINT $DATECNV('CYYDDD','YYYYMMDD','095001')</td>
<td><p class="codeInTable">Print $DateCnv('CYYDDD','YYYYMMDD','095001')</p></td>
<td align="right">19950101</td>
<td align="right"><p>19950101</p></td>
</tr>
</tr>
</table>
</table>
</li>
</li>


<li>If CUSTOM=1 is omitted, BASECENT=19, and CENTSPLT=95, then:
<li>If <code>CUSTOM=1</code> is omitted, <code>BASECENT=19</code>, and <code>CENTSPLT=95</code>, then:
<table>
<table>
<tr class="head">
<tr class="head">
<th>Print command</th>
<th>Print statement</th>
<th>Results</th>
<th>Result</th>
</tr>
</tr>
<tr>
<tr>
<td>PRINT $DATECNV('CYYDDD','YYYYMMDD','96001')</td>
<td><p class="codeInTable">Print $DateCnv('CYYDDD','YYYYMMDD','96001')</p></td>
<td><b></b>******</td>
<td><p><b></b>******</p></td>
</tr>
</tr>


<tr>
<tr>
<td>PRINT $DATECNV('CYYDDD','YYYYMMDD','196001')</td>
<td><p class="codeInTable">Print $DateCnv('CYYDDD','YYYYMMDD','196001')</p></td>
<td align="right">20960101</td>
<td align="right"><p>20960101</p></td>
</tr>
</tr>


<tr>
<tr>
<td>PRINT $DATECNV('CYYDDD','YYYYMMDD','95001')</td>
<td><p class="codeInTable">Print $DateCnv('CYYDDD','YYYYMMDD','95001')</p></td>
<td><b></b>******</td>
<td><p><b></b>******</p></td>
</tr>
</tr>


<tr>
<tr>
<td>PRINT $DATECNV('CYYDDD','YYYYMMDD','095001')</td>
<td><p class="codeInTable">Print $DateCnv('CYYDDD','YYYYMMDD','095001')</p></td>
<td>19950101</td>
<td><p>19950101</p></td>
</tr>
</tr>
</table>
</table>
Line 140: Line 139:
<li>If <code>CUSTOM=2</code> is added to the User 0 CCAIN stream or set later using the <var>RESET</var> command, the following occurs: If a <var>CYY</var>-format is specified for output conversion and the <var>C</var> indicator is zero, then <var>C</var> is eliminated. This is true for all <var>$Date</var> function calls. For example:
<li>If <code>CUSTOM=2</code> is added to the User 0 CCAIN stream or set later using the <var>RESET</var> command, the following occurs: If a <var>CYY</var>-format is specified for output conversion and the <var>C</var> indicator is zero, then <var>C</var> is eliminated. This is true for all <var>$Date</var> function calls. For example:
<p>
<p>
If <code>CUSTOM=2</code>, then: <code>PRINT $DATEJ(2)</code> prints 97.001.</p>
If <code>CUSTOM=2</code>, then: <code>Print $Datej(2)</code> prints <code>97.001</code>.</p>
<p>But if <code>CUSTOM=2</code> is omitted, then <code>PRINT $DATEJ(2)</code> prints 097.001.</p>
<p>
But if <code>CUSTOM=2</code> is omitted, then <code>Print $Datej(2)</code> prints <code>097.001</code>.</p>
</li>
</li>
</ul>
</ul>
Line 154: Line 154:
<li>0 is a reserved filler.</li>
<li>0 is a reserved filler.</li>
   
   
<li><code>C</code> represents the century since 1900. For example:  
<li><var>C</var> represents the century since 1900. For example:  
<p>
<p>
<code>C=0</code> represents years 1900-1999.</p>
<code>C=0</code> represents years 1900-1999.</p>
Line 161: Line 161:
</li>
</li>


<li><code>YY</code> is 2-byte year.</li>
<li><var>YY</var> is 2-byte year.</li>
   
   
<li><code>DDD</code> is 3-byte day.</li>
<li><var>DDD</var> is 3-byte day.</li>
   
   
<li><code>F</code> is positive-sign nibble for packed decimal </li>
<li><var>F</var> is positive-sign nibble for packed decimal. </li>
</ul>
</ul>



Latest revision as of 20:26, 6 October 2015

Syntax

The $Date functions — $Date, $DateJ, $DateP — accept two input arguments:

$Date(year-format, fill-character)

Where:

  • The year-format argument controls the format of the returned year value; month and day formats depend on the individual $function. The following are the valid year-format input values and their result:
  • year-format input Return format Example: Year 2013 displayed as...
    0 YY 13
    1 YYYY 2013
    2 CYY 113 (The first digit represents the century since 1900)

    CYY represents the century-year format. The first digit represents the century since 1900. The CYY format can be manipulated using the CUSTOM parameter.

  • The fill-character argument indicates a 1-byte fill character to place between the date components, as in the following examples:
    Code example Return format Example: July 11, 2013
    $date(2,' ') CYY MM DD 113 07 11
    $date(0,'z') YYzMMzDD 13z07z11
    $DateJ(1,'-') YYYY-DDD 2013-192
    $DateJ(1,'') YYYYDDD 2013192

Usage

$DateChg, $DateChk, $DateCnv, and $DateDif recognize a format of CYY as representing the century-year format as returned from the $Date function. Conversion to and from the CYY format is fully supported.

In addition, if CUSTOM=1 is added to the User 0 CCAIN stream or set later using the RESET command, the following occurs: If a CYY date format is specified for conversion and only a YY input is supplied, the conversion is successfully completed by using the CENTSPLT and BASECENT parameters.

Examples

  • If CUSTOM=1, BASECENT=19, and CENTSPLT=95, then:
    Print statement Result

    Print $DateCnv('CYYDDD','YYYYMMDD','96001')

    19960101

    Print $DateCnv('CYYDDD','YYYYMMDD','196001')

    20960101

    Print $DateCnv('CYYDDD','YYYYMMDD','95001')

    19950101

    Print $DateCnv('CYYDDD','YYYYMMDD','095001')

    19950101

  • If CUSTOM=1 is omitted, BASECENT=19, and CENTSPLT=95, then:
    Print statement Result

    Print $DateCnv('CYYDDD','YYYYMMDD','96001')

    ******

    Print $DateCnv('CYYDDD','YYYYMMDD','196001')

    20960101

    Print $DateCnv('CYYDDD','YYYYMMDD','95001')

    ******

    Print $DateCnv('CYYDDD','YYYYMMDD','095001')

    19950101

  • If CUSTOM=2 is added to the User 0 CCAIN stream or set later using the RESET command, the following occurs: If a CYY-format is specified for output conversion and the C indicator is zero, then C is eliminated. This is true for all $Date function calls. For example:

    If CUSTOM=2, then: Print $Datej(2) prints 97.001.

    But if CUSTOM=2 is omitted, then Print $Datej(2) prints 097.001.

Julian dates

The Julian date is a 4-byte, packed decimal formatted as follows:

0CYYDDDF

Where:

  • 0 is a reserved filler.
  • C represents the century since 1900. For example:

    C=0 represents years 1900-1999.

    C=1 represents years 2000-2099.

  • YY is 2-byte year.
  • DDD is 3-byte day.
  • F is positive-sign nibble for packed decimal.

Routines available for user-written date $functions

CCALL entry points are added: DATE, DATE3, and DATE4. All routines must be called with T1 pointing to a 26-byte answer area. Technical Support recommends that you allocate the answer area using the VARS=(name, len) pushdown list variable of the ENTER macro. (See Customizing functions and translation tables for more information on the ENTER macro.)

The current date and time are stored in the area with this format:

Code entry point Format used for storing...
DATE YY.DDD  MON DD  HH.MM.SS
DATE3 CYY.DDD  MON DD  HH.MM.SS
DATE4 YYYY.DDD  MON DD  HH.MM.SS

All registers are returned intact with the exception of the DATE and DATE4 calls. The DATE and DATE4 calls change only the T4 register, returning a number representing the current month (1-12).

DATE returns 24 bytes, DATE3 returns 25 bytes, and DATE4 returns 26 bytes.

Note: There are two spaces before and after MON DD.