Sleep: Difference between revisions

Content added Content deleted
No edit summary
imported>Acediast
(→‎{{header|COBOL}}: added CONTINUE AFTER from COBOL 2023)
Line 898: Line 898:


=={{header|COBOL}}==
=={{header|COBOL}}==
COBOL 2023 introduced the <code>AFTER</code> phrase of the <code>CONTINUE</code> statement to specify a time period in seconds for which execution will be suspended, which.
There are two methods for putting the program to sleep, both requiring unofficial extensions.
{{works with|GnuCOBOL}}
<syntaxhighlight lang="cobol"> IDENTIFICATION DIVISION.
PROGRAM-ID. Sleep-In-Seconds.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 Seconds-To-Sleep USAGE IS FLOAT-LONG.

PROCEDURE DIVISION.
ACCEPT Seconds-To-Sleep
DISPLAY "Sleeping..."
CONTINUE AFTER Seconds-To-Sleep SECONDS
DISPLAY "Awake!"
GOBACK.

END PROGRAM Sleep-In-Seconds.</syntaxhighlight>

Prior to this there were two methods for putting the program to sleep using unofficial extensions.

The first expects the amount of time to be in seconds.
The first expects the amount of time to be in seconds.
{{works with|ACUCOBOL-GT}}
{{works with|ACUCOBOL-GT}}
{{works with|OpenCOBOL}}
{{works with|GnuCOBOL}}
<syntaxhighlight lang="cobol"> IDENTIFICATION DIVISION.
<syntaxhighlight lang="cobol"> IDENTIFICATION DIVISION.
PROGRAM-ID. Sleep-In-Seconds.
PROGRAM-ID. Sleep-In-Seconds.
Line 907: Line 926:
DATA DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
WORKING-STORAGE SECTION.
01 Seconds-To-Sleep USAGE COMP-2.
01 Seconds-To-Sleep USAGE IS COMP-2.
*> Note: COMP-2, while supported on most implementations, is
*> non-standard. FLOAT-SHORT is the proper USAGE for Native
*> IEEE 754 Binary64 Floating-point data items.


PROCEDURE DIVISION.
PROCEDURE DIVISION.
ACCEPT Seconds-To-Sleep
ACCEPT Seconds-To-Sleep

DISPLAY "Sleeping..."
DISPLAY "Sleeping..."

CALL "C$SLEEP" USING BY CONTENT Seconds-To-Sleep
CALL "C$SLEEP" USING BY CONTENT Seconds-To-Sleep

DISPLAY "Awake!"
DISPLAY "Awake!"
GOBACK.


END PROGRAM Sleep-In-Seconds.</syntaxhighlight>
GOBACK
.</syntaxhighlight>


While the second expects the time to be in nanoseconds. Note: Windows systems can only sleep to the nearest millisecond.
While the second expects the time to be in nanoseconds. Note: Windows systems can only sleep to the nearest millisecond.
{{works with|OpenCOBOL}}
{{works with|GnuCOBOL}}
<syntaxhighlight lang="cobol"> IDENTIFICATION DIVISION.
<syntaxhighlight lang="cobol"> IDENTIFICATION DIVISION.
PROGRAM-ID. Sleep-In-Nanoseconds.
PROGRAM-ID. Sleep-In-Nanoseconds.
OPTIONS.
DEFAULT ROUNDED MODE IS NEAREST-AWAY-FROM-ZERO.


DATA DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
WORKING-STORAGE SECTION.
01 Seconds-To-Sleep USAGE COMP-2.
01 Seconds-To-Sleep USAGE IS FLOAT-LONG.
01 Nanoseconds-To-Sleep USAGE COMP-2.
01 Nanoseconds-To-Sleep USAGE IS FLOAT-LONG.
01 Nanoseconds-Per-Second CONSTANT 1000000000.
01 Nanoseconds-Per-Second CONSTANT AS 1000000000.


PROCEDURE DIVISION.
PROCEDURE DIVISION.
ACCEPT Seconds-To-Sleep
ACCEPT Seconds-To-Sleep
MULTIPLY Seconds-To-Sleep BY Nanoseconds-Per-Second
COMPUTE Nanoseconds-To-Sleep
GIVING Nanoseconds-To-Sleep
= Seconds-To-Sleep * Nanoseconds-Per-Second
END-COMPUTE


DISPLAY "Sleeping..."
DISPLAY "Sleeping..."

CALL "CBL_OC_NANOSLEEP"
CALL "CBL_OC_NANOSLEEP"
USING BY CONTENT Nanoseconds-To-Sleep
USING BY CONTENT Nanoseconds-To-Sleep
END-CALL


DISPLAY "Awake!"
DISPLAY "Awake!"
GOBACK.


END PROGRAM Sleep-In-Nanoseconds.</syntaxhighlight>
GOBACK
.</syntaxhighlight>


=={{header|Common Lisp}}==
=={{header|Common Lisp}}==