The SCORM Run-Time Environment
Available from xml.coverpages.org
Page 1
The SCORM Run-Time Environment
2001 Advanced Distributed Learning.
All Rights Reserved.
Advanced Distributed Learning Initiative
Sharable Content Object
Reference Model (SCORMTM)
Version 1.2
The SCORM Run-Time
Environment
October 1, 2001
All Rights Reserved.
Advanced Distributed Learning Initiative
Sharable Content Object
Reference Model (SCORMTM)
Version 1.2
The SCORM Run-Time
Environment
October 1, 2001
Page 2
2001 Advanced Distributed Learning.
All Rights Reserved.
This page intentionally left blank.
All Rights Reserved.
This page intentionally left blank.
Page 3
Sharable Content Object Reference Model (SCORM) Version 1.2 i
2001 Advanced Distributed Learning.
All Rights Reserved.
Advanced Distributed Learning
Sharable Content Object Reference Model
Version 1.2
The SCORM Run-Time Environment
Available at ADLNet
(http://www.adlnet.org/)
For questions and comments visit the ADL Help & Info
Center at ADLNet.
Page 4
ii Sharable Content Object Reference Model (SCORM) Version 1.2
2001 Advanced Distributed Learning.
All Rights Reserved.
This page intentionally left blank.
Page 5
Sharable Content Object Reference Model (SCORM) Version 1.2 iii
2001 Advanced Distributed Learning.
All Rights Reserved.
Editor
Philip Dodds (ADL)
Key Contributing Editors (ADL)
Ron Ball Jeff Krinock
William Capone Lori Morealli
Jeff Falls Douglas Peterson
Dexter Fletcher Jonathan Poltrack
Alan Hoberney Chris Snyder
Paul Jesukiewicz Schawn Thropp
Kirk Johnson Bryce Walat
Mary Krauland Jerry West
Partial List of Contributors:
Alliance of Remote Instructional Authoring & Distribution
Networks for Europe (ARIADNE) (http://www.ariadne-eu.org/)
Erik Duval
Eddy Forte
Florence Haenny
Ken Warkentyne
Aviation Industry CBT (Computer-Based Training) Committee (AICC)
(http://www.aicc.org/)
Jack Hyde
Bill McDonald
Anne Montgomery
Institute of Electrical and Electronics Engineers (IEEE)
Learning Technology Standards Committee (LTSC) (http://ltsc.ieee.org/)
Mike Fore
Wayne Hodgins
IMS Global Learning Consortium, Inc. (http://www.imsglobal.org/)
Thor Anderson
Steve Griffin
Mark Norton
Ed Walker
(At Large)
Bob Alcorn Mike Pettit
Lenny Greenberg Dan Rehak
Chris Moffatt Tom Rhodes
Boyd Nielsen Tyde Richards
Claude Ostyn Roger St. Pierre
Chantal Paquin Kenny Young
…and many others.
Page 6
iv Sharable Content Object Reference Model (SCORM) Version 1.2
2001 Advanced Distributed Learning.
All Rights Reserved.
This page intentionally left blank.
Page 7
Sharable Content Object Reference Model (SCORM) Version 1.2 v
2001 Advanced Distributed Learning.
All Rights Reserved.
Table of Contents
SECTION 3 THE SCORMTM RUN-TIME ENVIRONMENT...................................3-1
3.1. RUN-TIME ENVIRONMENT OVERVIEW................................................................3-3
3.2. LAUNCH.............................................................................................................3-5
3.2.1. Launching of Learning Resources ..............................................................3-5
3.2.1.1. Asset........................................................................................................3-6
3.2.1.2. Sharable Content Object (SCO)...............................................................3-6
3.3. APPLICATION PROGRAM INTERFACE (API).........................................................3-7
3.3.1. API Overview.............................................................................................3-7
3.3.2. Description of the SCO to LMS Communication API ................................3-7
3.3.2.1. SCO To LMS Communications API Details ...........................................3-8
3.3.2.2. SCO To LMS Communications API Adapter State Transition..............3-13
3.3.3. API Error Code Usage ..............................................................................3-14
3.3.4. API General Rules ....................................................................................3-15
3.3.5. LMS Responsibility..................................................................................3-16
3.3.5.1. API Adapter ..........................................................................................3-16
3.3.6. SCO Responsibility ..................................................................................3-16
3.3.6.1. Find API................................................................................................3-16
3.4. DATA MODEL ..................................................................................................3-18
3.4.1. Data Model Overview...............................................................................3-18
3.4.1.1. The SCORM Run-Time Environment Data Model ...............................3-18
3.4.1.2. The SCORM Run-Time Environment Data Model General Rules ........3-19
3.4.2. Data Model Elements ...............................................................................3-19
3.4.3. Handling Lists ..........................................................................................3-19
3.4.4. The SCORM Run-Time Environment Data Model...................................3-20
3.4.5. Data Types and Controlled Vocabulary ....................................................3-57
3.5. RUN-TIME ENVIRONMENT BEHAVIOR ..............................................................3-60
APPENDIX A ACRONYM LIST.............................................................................A-1
APPENDIX B REFERENCES..................................................................................B-1
APPENDIX C REVISION HISTORY......................................................................C-5
Page 8
vi Sharable Content Object Reference Model (SCORM) Version 1.2
2001 Advanced Distributed Learning.
All Rights Reserved.
This page intentionally left blank.
Page 9
Sharable Content Object Reference Model (SCORM) Version 1.2 3-1
2001 Advanced Distributed Learning.
All Rights Reserved.
SECTION 3
The SCORMTM Run-Time
Environment
Page 10
3-2 Sharable Content Object Reference Model (SCORM) Version 1.2
2001 Advanced Distributed Learning.
All Rights Reserved.
This page intentionally left blank.
Page 11
Sharable Content Object Reference Model (SCORM) Version 1.2 3-3
2001 Advanced Distributed Learning.
All Rights Reserved.
3.1. Run-Time Environment Overview
A goal of the SCORMTM is that learning resources be reusable and interoperable across
multiple Learning Management Systems (LMS). For this to be possible, there must be a
common way to start learning resources, a common mechanism for learning resources to
communicate with an LMS and a predefined language or vocabulary forming the basis of
the communication. As illustrated in figure 3.1a, these three aspects of the Run-Time
Environment are Launch, Application Program Interface (API) and Data Model.
Figure 3.1a: Launch, API and Data Model as they apply to the SCORM Run-Time Environment.
The Launch mechanism defines a common way for LMSs to start Web-based learning
resources. This mechanism defines the procedures and responsibilities for the
establishment of communication between the delivered learning resource and the LMS.
The communication protocols are standardized through the use of a common API.
The API is the communication mechanism for informing the LMS of the state of the
learning resource (e.g., initialized, finished or in an error condition), and is used for
getting and setting data (e.g., score, time limits, etc.) between the LMS and the Sharable
Content Object (SCO).
A Data Model is a standard set of data elements used to define the information being
communicated, such as, the status of the learning resource. In its simplest form, the data
Learning Management System (LMS)
Server Side
Client Side
Data Model
Actual data sent
back and forth
between SCO
and LMS
API (Communications
Link between SCO
and LMS)
Launch
JavaScript ri t
Browser
SCO
API
Adapter
I
t r
LMS
Server
Asset
Page 12
3-4 Sharable Content Object Reference Model (SCORM) Version 1.2
2001 Advanced Distributed Learning.
All Rights Reserved.
model defines elements that both the LMS and SCO are expected to “know” about. The
LMS must maintain the state of required data elements across sessions, and the learning
content must utilize only these predefined data elements if reuse across multiple systems
is to occur.
Page 14
3-6 Sharable Content Object Reference Model (SCORM) Version 1.2
2001 Advanced Distributed Learning.
All Rights Reserved.
would directly or indirectly serve the appropriate learning resource based on the specified
launch location for the appropriate learning resource.
It is the responsibility of the LMS (or delivery component/service thereof), based on
some event, to determine which learning resource is to be launched. The LMS may
launch the next learning resource in the sequence defined in the content structure, launch
a user selected SCO, or determine which SCO to launch based on student performance in
an adaptive fashion. Upon determining the appropriate learning resource to launch, the
LMS uses the URL defined by the learning resource’s launch location, defined in the
content package, to navigate to, or replace the currently displayed learning resource with
the learning resource found at the launch location.
The LMS may implement the launch in any manner desired and may delegate the actual
launch responsibility to the client or server portion of the LMS as needed. The actual
launch must be accomplished using the HTTP protocol. Ultimately, the learning resource
identified by the launch location in a content package is launched and delivered to the
client browser.
3.2.1.1. Asset
For learning resources that represent Assets, the SCORM launch model only requires that
an LMS launch the Asset using the HTTP protocol. Since an Asset does not need to
communicate, using the API and Data Model, back to the LMS there is no need for an
Asset to search for the API Adapter provided by an LMS.
3.2.1.2. Sharable Content Object (SCO)
For learning resources that represent SCOs, the SCORM launch model requires that an
LMS only launch one SCO at a time and that only one SCO is active at a time. The
launch model also requires that only LMSs may launch SCOs. SCOs may not launch
other SCOs.
The LMS must launch the SCO in a browser window that is a child window or a child
frame of the LMS window that exposes the API Adapter as a Document Object Model
(DOM)27 Object. The API Adapter must be provided by the LMS.
It is the responsibility of the SCO to recursively search the parent and/or opener window
hierarchy until the API Adapter is found. Once the API Adapter has been found the SCO
may initiate communication with the LMS.
Page 15
Sharable Content Object Reference Model (SCORM) Version 1.2 3-7
2001 Advanced Distributed Learning.
All Rights Reserved.
3.3. Application Program Interface (API)
3.3.1. API Overview
The SCORM is based directly on the run-time environment functionality defined in
AICC’s CMI001 Guidelines for Interoperability4 document. ADL collaborated with
AICC members and participants to develop a common Launch and API specification and
to adopt Web-based data elements. The following sections provide an overview of the
key elements of the AICC API specification as they relate to the SCORM.
3.3.2. Description of the SCO to LMS Communication API
The use of a common API fulfills many of the SCORM’s high-level requirements for
interoperability and reuse. It provides a standardized way for SCOs to communicate with
LMSs, yet it shields the particular communication implementation from the content
developer. In its simplest terms, an API is merely a set of predefined functions that the
SCO can rely on being available. An API hides implementation details from SCOs and
thus promotes reuse and interoperability. An API Adapter is a piece of functional
software that implements and exposes the functions of the API. How the insides of an
API Adapter are implemented should not matter to content developers provided they use
the same public interface. The LMS need only provide an API Adapter that implements
the functionality of the API and exposes its interface to the client SCO.
A key aspect of the API is that it is a communication mechanism that allows the SCO to
communicate with the LMS. It is assumed that once the SCO is launched it can then
“get” and “set” information with an LMS. All communication between the API Adapter
and the SCO is initiated by the SCO. There is currently no supported mechanism for
LMSs to initiate calls to functions implemented by a SCO. The functions of the API
Adapter object are threefold:
• Execution State
Two of the API functions, LMSInitialize(“”) and LMSFinish(“”), handle
execution state.
• State Management
The API has three functions that are used to handle errors. These three API
functions are: LMSGetLastError(), LMSGetErrorString(errornumber) and
LMSGetDiagnostic(parameter).
• Data Transfer
The remaining three API functions are used to transfer data to and from an
LMS: LMSGetValue(data model element), LMSSetValue(data model element,
value) and LMSCommit(""). Note that the API is designed to get and set data
Page 16
3-8 Sharable Content Object Reference Model (SCORM) Version 1.2
2001 Advanced Distributed Learning.
All Rights Reserved.
values that are separately defined by an external data model. The AICC
specification defines one such data model, called “cmi”. Other data models
could be developed and used with this API as well.
3.3.2.1. SCO To LMS Communications API Details
The following table defines the SCO to LMS Communications API in detail.
Execution State
LMSInitialize Description: This function indicates to the API Adapter that the SCO is
going to communicate with the LMS. It allows the LMS to handle LMS
specific initialization issues. It is a requirement of the SCO that it call this
function before calling any other API functions.
Syntax: LMSInitialize(parameter)
Parameter: "" An empty string must be passed for conformance to this
standard. Values other than "" are reserved for future extensions.
Return Value: String representing a boolean.
• "true" result indicates that the LMSInitialize("") was successful
• "false" result indicates that the LMSInitialize("") was
unsuccessful
If a return value of "false" is returned, then this signifies to the SCO that the
LMS is in an unknown state and that any additional API calls will not be
processed by the LMS.
Example:
var result = LMSInitialize("")
if (result == "false")
{
// Do some error handling
}
else
{
// continue with the execution of the SCO
}
The SCO tells the API Adapter that the content wants to establish
communication with the LMS. A typical return value is "true".
LMSFinish Description: The SCO must call this when it has determined that it no
longer needs to communicate with the LMS, if it successfully called
LMSInitialize at any previous point. This call signifies two things:
1. The SCO can be assured that any data set using LMSSetValue() calls
has been persisted by the LMS.
2. The SCO has finished communicating with the LMS.
Syntax: LMSFinish(parameter)
Parameter: "" An empty string must be passed for conformance to this
standard. Values other than "" are reserved for future extensions.
Return Value: String representing a boolean.
• "true" result indicates that the LMSFinish("") was successful
• "false" result indicates that the LMSFinish("") was unsuccessful
Page 19
Sharable Content Object Reference Model (SCORM) Version 1.2 3-11
2001 Advanced Distributed Learning.
All Rights Reserved.
Sets the cmi.core.score.raw to a value of "95"
A subsequent call to LMSGetValue(“cmi.core.score.raw”) must return “95”
LMSCommit Description: If the API Adapter is caching values received from the SCO
via an LMSSetValue(), this call requires that any values not yet persisted by
the LMS be persisted.
In some implementations, the API Adapter may persist set values as soon as
they are received, and not cache them on the client. In such implementations,
this API call is redundant and would result in no additional action from the
API Adapter. This call ensures to the SCO that the data sent, via an
LMSSetValue() call, will be persisted by the LMS upon completion of the
LMSCommit().
Syntax: LMSCommit(parameter)
Parameter: "". An empty string must be passed for conformance to this
standard. Values other than "" are reserved for future extensions.
Return Value: String representing a boolean
• "true" result indicates that the LMSCommit("") was successful
• "false" result indicates that the LMSCommit("") was
unsuccessful
If a return value of "false" is returned, then this signifies to the SCO
that the LMS is in an unknown state and that any additional API
calls may or may not be processed by the LMS.
Examples:
var result = LMSCommit("");
Requires that any cached values, previously set via SCO calls to
LMSSetValue(), that have not been persisted by the LMS be persisted.
State Management
LMSGetLastError Description: The SCO must have a way of assessing whether or not any
given API call was successful, and if it was not successful, what went wrong.
This function returns an error status code resulting from the previous API
call. Each time an API function is called (with the exception of this one,
LMSGetErrorString, and LMSGetDiagnostic -- the error functions), the error
code is reset. The SCO may call the error functions any number of times to
retrieve the error code, and the code cannot change until the next API call is
made.
Syntax: LMSGetLastError()
Parameter: None
Return Value:
The return values are Strings that can be converted to integer numbers that
identify errors falling into the following categories:
100’s General errors
200’s Syntax errors
300’s LMS errors
400’s Data model errors
The following codes are available for error messages:
0 No error
101 General exception
201 Invalid argument error
Page 20
3-12 Sharable Content Object Reference Model (SCORM) Version 1.2
2001 Advanced Distributed Learning.
All Rights Reserved.
202 Element cannot have children
203 Element not an array – cannot have count
301 Not initialized
401 Not implemented error
402 Invalid set value, element is a keyword
403 Element is read only
404 Element is write only
405 Incorrect Data Type
Additional codes TBD
Examples:
var errorCode = LMSGetLastError();
LMSGetErrorString Description: This function enables the content to obtain a textual
description of the error represented by the error code number.
Syntax: LMSGetErrorString(errornumber)
Parameter: An integer number representing an error code.
Return Value: A string that represents the verbal description of an error.
Examples:
var errorString = LMSGetErrorString("403");
errorString should contain "Element is read only"
LMSGetDiagnostic Description: This function enables vendor-specific error descriptions to be
developed and accessed by the content. These would normally provide
additional detail regarding the error.
Syntax: LMSGetDiagnostic(parameter)
Parameter: The parameter may take one of two forms.
• An integer number representing an error code. This requests
additional information on the listed error code.
• “”. An empty string. This requests additional information on the
last error that occurred.
Return Value: The return value is a string that represents any vendor-
desired additional information relating to either the requested error or the last
error.
Examples:
var moreInfo = LMSGetDiagnostic("403");
moreInfo could contain more vendor specific information on the “Element is
read only” error
Page 22
3-14 Sharable Content Object Reference Model (SCORM) Version 1.2
2001 Advanced Distributed Learning.
All Rights Reserved.
• LMSGetDiagnostic()
If the LMS API Adapter returns “false” there is no guarantee that the LMS API Adapter
will respond appropriately to any API function call.
3.3.3. API Error Code Usage
The SCO must have a way of assessing whether or not any given API function call was
successful, and if it was not successful, what went wrong. The LMSGetLastError()
function returns an error code that can be used to determine the type of error raised by the
previous API function call.
Syntax: LMSGetLastError()
Parameters: None
Return Type: String – values can be converted into integer numbers that are identified in
the following table.
Code Description Usage
“0” No error No errors encountered. Successful API call.
“101” General Exception Used to indicate general exceptions.
Invalid argument error To be used when there is a call to a SCORM
Run-Time Environment data model element
that does not exist.
To be used when an invalid argument is
passed via the API
“201”
Ex. LMSGetValue(“cmi.core.zip_code”)
“cmi.core.zip_code” is not a valid CMI Data Model element.
Ex. LMSInitialize(“init”)
The LMSInitialize(“”) expects an empty string argument.
Element cannot have children To be used when LMSGetValue() is called on
any data model category or element that does
not support _children.
“202”
Ex. LMSGetValue(“cmi.student_id._children”)
Element not an array. Cannot have count. To be used when an LMSGetValue() is called
on any data model category or element that
does not support _count.
“203”
Ex. LMSGetValue(“cmi.core._count”)
“301” Not initialized To be used when there is a call to any API
function call before LMSInitialize(“”) is
called.
Page 23
Sharable Content Object Reference Model (SCORM) Version 1.2 3-15
2001 Advanced Distributed Learning.
All Rights Reserved.
Not implemented error To be used when a call is made to a Data
Model element that is not supported by the
LMS or if another Data Model is used outside
of the SCORM Run-Time Environment Data
Model.
“401”
Ex. LMSGetValue(“cmi.objectives.0.id”)
The “cmi.objectives.0.id” element is an optional element. If the LMS does not support this
element then the LMS should return an empty string (“”) and set the error code to 401.
Ex. LMSGetValue(“xyz.score.result”)
The “xyz.score.result” is not a valid SCORM Run-Time Environment Data Model element.
Since it is not a valid data model element (“xyz” vs. “cmi”), the LMS should set the error code
to “401” and return an empty string.
Invalid set value, element is a keyword To be used when an LMSSetValue() call is
invoked on a keyword.
“402”
Ex. LMSSetValue(“cmi.core._children”,”student_id,student_name”)
“cmi.core._children” is a keyword.
Element is read only. To be used when an LMSSetValue() call is
invoked on an element that is read only.
“403”
Ex. LMSSetValue(“cmi.core.student_id”,”JoeStudent”)
“cmi.core.student_id” is a read only CMI element
Element is write only To be used when an LMSGetValue() call is
invoked on an element that is write only
“404”
Ex. LMSGetValue(“cmi.core.exit”)
“cmi.core.exit” is a write only CMI element
Incorrect Data Type To be used when an attempt is made to set an
element with the incorrect data type.
“405”
Ex. LMSSetValue(“cmi.core.score.raw”,”eighty five”)
“eighty five” is not the correct data type for the “cmi.core.score.raw”. The correct data type
needs to be a CMIDecimal (“85”) or a CMIBlank (“”).
Ex. LMSSetValue(“cmi.core.lesson_status”,”Not Attempted”)
“Not Attempted” is not a valid vocabulary member of the cmi.core.lesson_status element.
Vocabularies are case sensitive and must match identically.
3.3.4. API General Rules
The following list summarizes general usage rules for the API:
• The function names are all case sensitive, and must always be expressed exactly
as shown.
• The function parameters or arguments are case sensitive. All parameters are
lower case.
• Each call to an API function, other than the error handling functions, resets the
error code.
Page 24
3-16 Sharable Content Object Reference Model (SCORM) Version 1.2
2001 Advanced Distributed Learning.
All Rights Reserved.
3.3.5. LMS Responsibility
3.3.5.1. API Adapter
The SCORM requires that an LMS supply an API Adapter that implements the required
API functionality described in the previous section. This adapter must shield SCOs from
the particular adapter implementation details so that the SCOs need not have any
knowledge of the underlying communication infrastructure, and instead rely solely on the
existence of a standardized LMS Application Program Interface. The requirements for
using the API Adapter are as follows:
• The LMS must launch the SCO in a browser window that is a child window or a
child frame of the LMS window that contains the API Adapter.
• The API Adapter must be provided by the LMS.
• The only supported mechanism for API interaction from SCOs is through
ECMAScript (JavaScript) calls.
• The API Adapter must be accessible via the DOM27 as an object named “API”.
As an example, an API Adapter might be implemented as a Java applet that may have a
signature like this:
public class API extends Applet
{
public String LMSInitialize( String parameter )
{ . . .}
public String LMSGetValue( String element )
{ . . }
public String LMSSetValue( String element, String value )
{. . .}
public String LMSCommit( String parameter )
{. . .}
public String LMSFinish( String parameter )
{. . .}
public String LMSGetLastError()
{. . .}
public String LMSGetErrorString( String errorCode )
{. . .}
public String LMSGetDiagnostic( String errorCode )
{. . .}
}
Note that an API Adapter can be implemented in other programming languages such as
C++ and loaded, for example, as a browser plug-in. The API Adapter implementation is
expected to be LMS specific; the above code fragment is only an example approach.
There are many ways to implement an LMS API Adapter.SCO Responsibility
3.3.6.1. Find API
It is the responsibility of the SCO to, at a minimum, issue LMSInitialize(“”) and
LMSFinish(“”) API calls. In order to do this, the content must be able to locate the API
Page 30
3-22 Sharable Content Object Reference Model (SCORM) Version 1.2
2001 Advanced Distributed Learning.
All Rights Reserved.
LMS Mandatory: Yes
Data Type: CMIString255
SCO Accessibility:
Read Only
Usage: Used to represent the students official name.
Format: Last name, first name and middle initial. Last name and first name are
separated by a comma. Spaces in the name must by honored.
LMS Behavior:
• Initialization: LMS is responsible, based on student registration.
• LMSGetValue(): Returns the current value stored by the LMS
o Example Return Values:
"Student, Joseph A."
"Student, Mike A. Jr."
o Error Code:
401 - Not implemented error. If this element is not
supported an empty string is returned and an error code
is set to indicate that the element is not supported.
NOTE element must be supported by LMS since the
element is mandatory
• LMSSetValue(): LMS should set an error code according to the following:
o Error Code:
403 - Element is read only. If the element is
supported (element must be supported by LMS since the
element is mandatory) and a request attempts to invoke
an LMSSetValue() on this element, then the LMS should
set the error code to 403.
401 - Not implemented error. If this element is not
supported an error code is set to 401 by the LMS to
indicate that the element is not supported. NOTE
element must be supported by LMS since the element
is mandatory
SCO Usage Example:
The SCO might want to display the student name on launch of the SCO:
var coreStudentName = LMSGetValue(“cmi.core.student_name”);
cmi.core.lesson_location
Supported API calls:
LMSGetValue()
LMSSetValue()
LMS Mandatory: Yes
Data Type: CMIString255
SCO Accessibility:
Read / Write
Definition: This corresponds to the SCO exit point passed to the LMS system the last
time the student experienced the SCO. This provides one mechanism to let the
student return to a SCO at the same place he left it earlier. In other words, this
element can identify the student's exit point and that exit point can be used by the SCO
as an entry point the next time the student runs the SCO.
Usage: This element defines where the student last was inside the SCO. The element
could be used by the SCO to store off a "bookmark" during the session. If the SCO is
suspended, and then is re-entered later, the lesson_location could be used by the SCO
to send the student back into the SCO where they left off.
Format: Implementation dependent. The LMS system simply holds this data and then
returns it to the SCO when the student is re-entering it, if the SCO asks for it.
Whatever the SCO passes back to the LMS system is returned. The format matches
whatever the SCO expects -- the format is created by the SCO. The first time a student
enters the SCO, or if there is no preferred starting point, lesson_location may equal an
empty string ("").
LMS Behavior:
• Initialization: LMS should set this to be an empty string. A SCO may
optionally set this value and then retrieve the data on re-entry into the SCO.
• LMSGetValue(): Returns the current value stored by the LMS
o Error Code:
401 - Not implemented error. If this element is not
supported an empty string is returned and an error code
is set to indicate that the element is not supported.
NOTE element must be supported by LMS since the
element is mandatory.
• LMSSetValue(): Sets the data model element to the supplied value. Value
must match the data type for this element.
o Error Code:
405 – Incorrect Data Type. If the element is supported
Page 31
Sharable Content Object Reference Model (SCORM) Version 1.2 3-23
2001 Advanced Distributed Learning.
All Rights Reserved.
(element must be supported by LMS since the element
is mandatory) and a request attempts to invoke an
LMSSetValue() with a value that is not of the correct
data type.
401 - Not implemented error. If this element is not
supported an error code is set to 401 by the LMS to
indicate that the element is not supported. NOTE
element must be supported by LMS since the element is
mandatory.
• Example Return/Set Values: SCO implementation dependent
SCO Usage Example:
The SCO can use the lesson_location as a "bookmark"
- On launch of the SCO, the SCO may position the student where the student left
off in the SCO during the previous attempt at the SCO.
- On exit of the SCO, the SCO may set the position so that the next time the
student enters the SCO the position can be retrieved.
// Example SCO that is written using JavaScript and HTML with anchors
// This function could exist in a function call onLoad() that gets invoked when the HTML
// page is loaded
var coreSCOLocation = LMSGetValue(“cmi.core.lesson_location”);
if (LMSGetLastError() == “0”)
{
// coreSCOLocation contains an anchor name defined in the
// HTML page
// Start the SCO off where the student left off
window.location.hash = coreSCOLocation;
}
else
{
// Error processing
}
cmi.core.credit
Supported API calls:
LMSGetValue()
LMS Mandatory: Yes
Data Type: CMIVocabulary
(Credit)
"credit"
"no-credit"
SCO Accessibility:
Read Only
Definition: Indicates whether the student is being credited by the LMS system based
on performance (pass/fail and score) in this SCO.
Usage: Used by the LMS system to indicate whether or not the student is taking the
SCO for credit.
cmi.core.credit is used in conjunction with lesson_mode. See cmi.core.lesson_mode
for more detail. Cmi.core.credit is also used in the determination of lesson_status.
See cmi.core.lesson_status for more detail.
Format: A set vocabulary phrase. Two possible vocabulary values:
• “credit”. This means that the student is taking the SCO for credit. The LMS
system is telling the SCO that if the SCO sends data to the LMS system, the
LMS system will credit it to the student.
• “no-credit”. This means that the student is taking the SCO for no-credit.
His current credit, if any (for instance a score of 80 and status of passed) will
not be changed by his performance in this SCO. The LMS system is telling
the SCO that if the SCO sends data to the LMS system it will not change the
student’s accreditation.
LMS Behavior:
• Initialization: LMS is responsible for determining whether or not the student
is taking the course for credit or no-credit. NOTE: Right now there is no
SCORM defined way to signify that learning content can be taken for credit
or no-credit. Implementation therefore will be LMS specific.
• LMSGetValue(): Returns the current value stored by the LMS
o Example Return Values:
"no-credit"
"credit"
o Error Code:
Page 35
Sharable Content Object Reference Model (SCORM) Version 1.2 3-27
2001 Advanced Distributed Learning.
All Rights Reserved.
}
else
{
// This is the first time the student has entered the SCO
}
}
else
{
// Error condition, handle appropriately
}
cmi.core.score
Indication of the performance of the student.
Children of cmi.core.score:
raw, min, max
cmi.core.score._children
Supported API calls
LMSGetValue()
LMS Mandatory: Yes
Data Type: CMIString255
SCO Accessibility:
Read Only
Definition: The _children keyword is used to determine all of the elements in the score
category that are supported by the LMS. If an element has no children, but is
supported, an empty string is returned. If an element is not supported, there is no
return. A subsequent request for last error can verify that the element is not supported.
Usage: Used to determine what cmi.core.score children are supported by the LMS.
Raw is the only mandatory element that must be supported.
Format: The return value is a comma separated list of all the element names in the
score category that are supported by the LMS.
LMS Behavior:
Initialization: The set of supported children for this group. So that on an
LMSGetValue() request, the appropriate list of supported children is returned.
LMSGetValue(): Returns a comma separated list of supported elements.
o Example API call: LMSGetValue("cmi.core.score._children")
o Example Return Values:"raw" - conformant LMS’s must support
at least this element“raw,min,max”"raw,min"
o Error Code:
401 - Not implemented error. If this element is not
supported an empty string is returned and an error code
is set to indicate that the element is not supported.
NOTE element must be supported by LMS since the
element is mandatory.
LMSSetValue(): LMS should set an error code according to the following:
o Error Code:
402 - Invalid set value, element is keyword. If a
request attempts to invoke an LMSSetValue() on this
element, then the LMS should set the error code to 402.
401 - Not implemented error. If this element is not
supported an error code is set to 401 by the LMS to
indicate that the element is not supported. NOTE
element must be supported by LMS since the element is
mandatory
SCO Usage Example:
var scoreChildren = LMSGetValue(“cmi.core.score._children”);
if (coreChildren.indexOf(“min”) != -1)
{
LMSSetValue(“cmi.core.score.min”,"10");
}
cmi.core.score.raw
Supported API calls:
LMSGetValue()
LMSSetValue()
LMS Mandatory: Yes
Definition: Indication of the performance of the student during his last attempt on the
SCO. This score may be determined and calculated in any manner that makes sense
to the SCO designer. For instance, it could reflect the percentage of objectives
complete, it could be the raw score on a multiple choice test, or it could indicate the
number of correct first responses to embedded questions in a SCO.
Page 37
Sharable Content Object Reference Model (SCORM) Version 1.2 3-29
2001 Advanced Distributed Learning.
All Rights Reserved.
LMSSetValue(): Sets the data model element to the supplied value. Value
must match the data type for this element.
o Example API call: LMSSetValue("cmi.core.score.max","100")
o Error Code:
405 – Incorrect Data Type: If the element is supported
and a request attempts to invoke an LMSSetValue() with
a value that is not of the correct data type.
401 - Not implemented error. If this element is not
supported an error code is set to 401by the LMS to
indicate that the element is not supported.
Example Return/Set Values:
“100"
"5"
""
SCO Usage Example:
var scoreChildren = LMSGetValue(“cmi.core.score._children”);
if (coreChildren.indexOf(“max”) != -1)
{
LMSSetValue(“cmi.core.score.max”,"100");
}
cmi.core.score.min
Supported API calls:
LMSGetValue()
LMSSetValue()
LMS Mandatory: No
Data Type: CMIDecimal or
CMIBlank
SCO Accessibility:
Read / Write
Definition: The minimum score that the student could have achieved.
The cmi.core.score.min must be a normalized value between 0 and 100.
Usage: Used to indicate the lowest score the student could have achieved.
Format: Decimal number or blank.
LMS Behavior:
Initialization: LMS should initialize this to an empty string ("") upon initial
launch of a SCO. The SCO is responsible for setting this value. If an
LMSGetValue() is requested before the SCO has set this value, then the
LMS should return an empty string (“”)
LMSGetValue(): Returns the value stored in the data model. The value
returned must be of type CMIDecimal or CMIBlank.
o Example API call: LMSGetValue("cmi.core.score.min")
o Error Code:
401 - Not implemented error. If this element is not
supported an empty string is returned and an error code
is set to indicate that the element is not supported.
LMSSetValue(): Sets the data model element to the supplied value. Value
must match the data type for this element.
o Example API call: LMSSetValue("cmi.core.score.min","5")
o Error Code:
405 – Incorrect Data Type: If the element is supported
and a request attempts to invoke an LMSSetValue() with
a value that is not of the correct data type.
401 - Not implemented error. If this element is not
supported an error code is set to 401 by the LMS to
indicate that the element is not supported.
Example Return/Set Values:
“10"
"45.5"
""
SCO Usage Example:
var scoreChildren = LMSGetValue(“cmi.core.score._children”);
if (coreChildren.indexOf(“min”) != -1)
{
LMSSetValue(“cmi.core.score.min”,"10");
}
cmi.core.total_time
Supported API calls:
Definition: Accumulated time of all the student's sessions in the SCO.
Page 39
Sharable Content Object Reference Model (SCORM) Version 1.2 3-31
2001 Advanced Distributed Learning.
All Rights Reserved.
Read Only
• "browse": The student wants to preview the materials, but not necessarily
challenge the SCO for a grade.
• "normal": This indicates that the SCO should behave as designed for a
student wanting to get credit for his learning.
• "review": The student has already seen the material at least once and been
graded.
If an unrecognized or unanticipated lesson_mode is received, then normal is assumed
by the SCO.
LMS Behavior:
Initialization: LMS should determine the mode in which the SCO is being
launched.
NOTE: Right now there is no SCORM defined way to signify that learning
content can be taken in different modes. Implementation will therefore be
LMS specific.
LMSGetValue(): Returns the value stored in the data model. The return must
be one of the set vocabularies for the entry.
o Example API call: LMSGetValue("cmi.core.lesson_mode")
o Example Return Values:
“browse"
"normal"
"review"
o Error Code:
401 - Not implemented error. If this element is not
supported an error code is set to indicate that the
element is not supported.
LMSSetValue(): LMS should set an error code according to the following:
o Error Code:
403 - Element is read only. If a request attempts to
invoke an LMSSetValue() on this element, then the LMS
should set the error code to 403.
401 - Not implemented error. If this element is not
supported an error code is set to 401 by the LMS to
indicate that the element is not supported.
SCO Usage Example:
var mode = LMSGetValue(“cmi.core.lesson_mode”);
if (LMSGetLastError() == “0” )
{
if (mode == "browse")
{
// Student is browsing the SCO
}
else if (mode == "review")
{
// Student has already seen an been graded
// Must be reviewing material
}
else
{
// Student is launching the SCO in the normal mode
}
}
cmi.core.exit
Supported API calls:
LMSSetValue()
LMS Mandatory: Yes
Data Type: CMIVocabulary
(Exit)
"time-out"
"suspend"
"logout"
"" - empty string
Definition: An indication of how or why the student left the SCO.
Usage: Used to indicate the reason that the SCO was last exited.
Format: A set vocabulary phrase. Three possible vocabulary values:
• "time-out": This indicates the SCO ended because the SCO has
determined an excessive amount of time has elapsed, or the
max_time_allowed has been exceeded. The max_time_allowed can be
found in the manifest (adlcp:maxtimeallowed for the item)
• "suspend": This indicates the student leaves the SCO with the intent of
returning to it later at the point where he/she left.
• "logout": This indicates that the student logged out from within the SCO
Page 40
3-32 Sharable Content Object Reference Model (SCORM) Version 1.2
2001 Advanced Distributed Learning.
All Rights Reserved.
SCO Accessibility:
Write Only
instead of returning to the LMS system to log out. This implies that the SCO
passed control to the LMS system, and the LMS system automatically
logged the student out of the course -- after updating the appropriate data
model elements.
• "" : The empty string vocabulary should be used to represent a normal exit
state.
LMS Behavior:
Initialization: Element does not need initialized. There is never a
LMSGetValue() done on this element. Element is controlled by the SCO.
o Additional behavior: A SCO has the option of setting the
cmi.core.exit to one of four values. Based on the value, the LMS
behavior should be as follows:
If the SCO set the cmi.core.exit to “time-out” the LMS
should set cmi.core.entry to “” (empty) upon the next
launching of the SCO.
If the SCO set the cmi.core.exit to “suspend” the LMS
should set the cmi.core.entry to “resume” upon the next
launching of the SCO.
If the SCO set the cmi.core.exit to “logout” the LMS
should set the cmi.core.entry to “” (empty) upon the next
launching of the SCO. In addition, the LMS should log
the student out of the course when the SCO that set the
cmi.core.exit to “logout” has issued the LMSFinish() or
the user navigates away.
If the SCO set the cmi.core.exit to “” (empty) the LMS
should set the cmi.core.entry to “” (empty) upon the next
launching of the SCO.
If the SCO did not set the cmi.core.exit to any value that
LMS should set cmi.core.entry to “” (empty) upon the
next launching of the SCO.
LMSGetValue(): LMS should set an error code according to the following
and return an empty string ("").
o Error Code:
401 - Not implemented error. If this element is not
supported an empty string is returned and an error code
is set to indicate that the element is not supported.
NOTE element must be supported by LMS since the
element is mandatory.
404 - Element is write only. If a SCO tries to call
LMSGetValue() on this element, the LMS should set the
error code to 404 and return an empty string ("").
LMSSetValue(): Sets the data model element to the supplied value. Value
must match the data type for this element.
o Example API call: LMSSetValue("cmi.core.exit","logout")
o Example Set Values:
"time-out”
"suspend"
"logout"
o Error Code:
405 – Incorrect Data Type: If the element is supported
(element must be supported by LMS since the element
is mandatory) and a request attempts to invoke an
LMSSetValue() with a value that is not of the correct
data type.
401 - Not implemented error. If this element is not
supported an error code is set to 401 by the LMS to
indicate that the element is not supported.NOTE
element must be supported by LMS since the element
is mandatory.
SCO Usage Example:
LMSSetValue("cmi.core.exit","time-out")
cmi.core.session_time
Supported API calls:
LMSSetValue()
Definition: This is the amount of time in hours, minutes and seconds that the student
has spent in the SCO at the time they leave it. That is, this represents the time from
beginning of the session to the end of a single use of the SCO.
Page 41
Sharable Content Object Reference Model (SCORM) Version 1.2 3-33
2001 Advanced Distributed Learning.
All Rights Reserved.
LMS Mandatory: Yes
Data Type: CMITimespan
SCO Accessibility:
Write Only
Usage: Used to keep track of the time spent in a SCO for a session. The LMS will use
this time in determining the cmi.core.total_time.
Format: A length of time in hours, minutes and seconds shown in the following
numerical format: HHHH:MM::SS.SS
Hours has a minimum of 2 digits and a maximum of 4 digits. Minutes shall consist of
exactly 2 digits. Seconds shall contain 2 digits, with an optional decimal point and 1 or
2 additional digits. (i.e. 34.45).
LMS Behavior:
Initialization: Element does not need initialized by the LMS. There is never
a LMSGetValue() call made on this element. The SCO controls this element.
o Additional Behavior: A SCO is able, in a single running, to
perform multiple sets of the cmi.core.session_time. When the
SCO issues the LMSFinish() or the user navigates away, the LMS
should take the last cmi.core.session_time that the SCO set (if
there was a set) and accumulate this time to the
cmi.core.total_time. Upon subsequent launch of the SCO, and a
LMSGetValue() call for cmi.core.total_time, the LMS should return
the accumulated time. LMS’s should not accumulate multiple time
sent to the LMS by the LMSSetValue() call for
cmi.core.session_time. If multiple calls to LMSSetValue() for
cmi.core.session_time are made the LMS should overwrite any
existing value that it is persisting for cmi.core.session_time.
LMSGetValue(): LMS should set an error code according to the following
and return an empty string ("").
o Error Code:
401 - Not implemented error. If this element is not
supported an empty string is returned and an error code
is set to indicate that the element is not supported.
NOTE element must be supported by LMS since the
element is mandatory.
404 - Element is write only. If a SCO tries to call
LMSGetValue() on this element, the LMS should set the
error code to 404 and return an empty string ("").
LMSSetValue(): Sets the data model element to the supplied value. Value
must match the data type for this element.
o Example API call:
LMSSetValue(“cmi.core.session_time”,"0010:34:34.56")
o Example Set Values: "0010:34:34.56" "05:15:00"
o Error Code:
205 – Incorrect Data Type: If an LMSSetValue() is
invoked and the value to be used to set the element to is
not of the correct Data Type.
401 - Not implemented error. If this element is not
supported an error code is set to 401 by the LMS to
indicate that the element is not supported. NOTE
element must be supported by LMS since the element
is mandatory.
SCO Usage Example:
LMSSetValue("cmi.core.session_time","0000:12:30")
cmi.suspend_data
Supported API calls:
LMSGetValue()
LMSSetValue()
LMS Mandatory: Yes
Data Type: CMIString4096
SCO Accessibility:
Read / Write
Definition: Unique information generated by the SCO during previous uses that is
needed for the current use. This unique information is applicable to a launching SCO.
Normally this is the element used by the SCO for restart information. This is normally
data that is created by the SCO and stored by the LMS to pass back to the SCO the
next time the SCO is run.
The LMS must set aside a space for this group for each SCO for each student. It
stores this data and returns it to the SCO when it is run again. The LMS shall retain
this data as long as the student is in the course.
Usage: Only available on restart of a SCO. SCO could set this value if a student exits
before SCO is completed. The SCO then could use this information on restart.
Page 42
3-34 Sharable Content Object Reference Model (SCORM) Version 1.2
2001 Advanced Distributed Learning.
All Rights Reserved.
Format: SCO unique. The only limitations on this data are:
1. Data must be transferred in ASCII format. The SCO may then convert it to any
form that it requires.
2. To avoid over-burdening the LMS this element should be limited by 4096 bytes
of data.
LMS Behavior:
Initialization: LMS should initialize this element to blank (empty string). The
SCO is responsible for setting this element. If an LMSGetValue() is
requested before the SCO has set this value, then the LMS should return an
empty string (“”).
LMSGetValue(): Returns the value stored in the data model. The return
must be of the correct data type.
o Error Code:
401 - Not implemented error. If this element is not
supported an empty string is returned and an error code
is set to indicate that the element is not supported.
NOTE element must be supported by LMS since the
element is mandatory.
LMSSetValue(): Sets the data model element to the supplied value. Value
must match the data type for this element.
o Error Code:
405 – Incorrect Data Type: If the element is supported
and a request attempts to invoke an LMSSetValue() with
a value that is not of the correct data type.
401 - Not implemented error. If this element is not
supported an error code is set to 401 by the LMS to
indicate that the element is not supported. NOTE
element must be supported by LMS since the element
is mandatory.
Example Return/Set Values:
SCO implementation dependent
SCO Usage Example:
// Upon re-launch of a SCO by a student
// Get the Suspend Data
var suspendData = LMSGetValue("cmi.suspend_data")
if (LMSGetLastError() == “0”)
{
// Use suspend data
}
cmi.launch_data
Supported API calls:
LMSGetValue()
LMS Mandatory: Yes
Data Type: CMIString4096
SCO Accessibility:
Read Only
Definition: Unique information generated at the SCO’s creation that is needed for
every use. Without this information, a SCO may not execute.
Usage: The cmi.launch_data is available to the SCO to aid in launching the SCO. This
will always be the same for a given SCO.
Format: Text field. This contains whatever system-unique information is necessary for
the SCO to function well. This field is limited to 4096 characters.
LMS Behavior:
Initialization: This value should be initialized by the LMS using the manifest.
The LMS should use the manifest (adlcp:datafromlms) element. If no launch
data is found in the manifest, then the launch data should be set to an empty
string ("").
LMSGetValue(): Returns the value stored in the data model. The return
must be of the correct data type.
o Error Code:
401 - Not implemented error. If this element is not
supported an empty string is returned and an error code
is set to indicate that the element is not supported.
NOTE element must be supported by LMS since the
element is mandatory.
LMSSetValue(): LMS should set an error code according to the following:
Page 43
Sharable Content Object Reference Model (SCORM) Version 1.2 3-35
2001 Advanced Distributed Learning.
All Rights Reserved.
o Error Code:
403 - Element is read only. If a request attempts to
invoke an LMSSetValue() on this element, then the LMS
should set the error code to 403.
401 - Not implemented error. If this element is not
supported an error code is set to 401 by the LMS to
indicate that the element is not supported.
SCO Usage Example:
var launchData = LMSGetValue("cmi.launch_data")
if (LMSGetLastError() == “0”)
{
// use launch_data
}
cmi.comments
Mechanism for collecting and distributing comments for a SCO.
cmi.comments - represents the ability for the SCO to Get/Set comments
cmi.comments_from_lms - represents the ability to provide comments to the SCO (read only from a SCO perspective).
cmi.comments
Supported API calls:
LMSGetValue()
LMSSetValue()
LMS Mandatory: No
Data Type: CMIString4096
SCO Accessibility:
Read / Write
Definition: Freeform feedback from the SCO. For example, the student may
have the option of leaving comments at any point in the SCO, or they may be
asked for comments at the end of the SCO. The comment may also have an
indication of where or when in the SCO it was created. A location may be
tagged and embedded in the comment.
Usage: Used to allow the SCO to send comments to the LMS about the
SCO. Could be used to collect student entered comments.
Format: Freeform alphanumeric text and special characters.
LMS Behavior:
Initialization: None, should be initialized to an empty string ("").
The SCO is responsible for setting this value. If an LMSGetValue()
is requested before the SCO has set this value, then the LMS
should return an empty string (“”).
LSGetValue(): turns the value stored in the data model. The
return must be of the correct data type. If no comments were
provided the LMS should return an empty string ("").
o Error Code:
401 - Not implemented error. If this element
is not supported an empty string is returned
and an error code is set to indicate that the
element is not supported.
LMSSetValue(): Sets the data model element to the supplied
value. The LMSSetValue() request sets the comments. The
comments should be concatenated together.
o Error Code:
401 - Not implemented error. If this element
is not supported an error code is set to 401 by
the LMS to indicate that the element is not
supported.
405 – Incorrect Data Type: If the element is
supported and a request attempts to invoke an
LMSSetValue() with a value that is not of the
correct data type.
Example Return/Set Values:
SCO implementation dependent
SCO Usage Example:
var comments = LMSGetValue("cmi.comments")
if (LMSGetLastError() == “0”)
{
// use launch_data
}
Page 46
3-38 Sharable Content Object Reference Model (SCORM) Version 1.2
2001 Advanced Distributed Learning.
All Rights Reserved.
indicate that the element is not supported.
SCO Usage Example:
SCO could use the _count element to determine which array index to use later in the
process.
// get the count of objectives recorded by the LMS
var totalObj = LMSGetValue("cmi.objectives._count")
// The value return from the LMS is the total number record
// subtract one from the total (to compensate for the zero based array)
var request = "cmi.objectives." + totalObj - 1 + ".id"
// Call set on the new Objective ID
LMSSetValue(request, "Obj1_110")
cmi.objectives.n.id
Supported API calls:
LMSGetValue()
LMSSetValue()
LMS Mandatory: No
Data Type: CMIIdentifier
SCO Accessibility:
Read / Write
Definition: An internally, developer defined, SCO specific identifier for an objective.
Usage: Way of identifying an objective.
Format: Alpha-numeric string. No internal spaces.
LMS Behavior:
Initialization: Initialized to an empty string (""). The SCO is responsible for
setting this value. If an LMSGetValue() is requested before the SCO has set
this value, then the LMS should return an empty string (“”)
LMSGetValue(): Returns the objectives id stored in the LMS. The returned
value must match the associated data type.
o Example API call: LMSGetValue("cmi.objectives.0.id")
o Error Code:
401 - Not implemented error. If this element is not
supported an empty string is returned and an error code is
set to indicate that the element is not supported.
LMSSetValue(): Sets the data model element to the supplied value. Value
must match the data type for this element.
o Error Code:
405 – Incorrect Data Type If the element is supported and
a request attempts to invoke an LMSSetValue() with a
value that is not of the correct data type.
401 - Not implemented error. If this element is not
supported an error code is set to 401 by the LMS to
indicate that the element is not supported.
Example Return/Set Values:
"A1317"
"Obj123"
SCO Usage Examples:
SCO may want to display summary information about the objectives.
var objID = LMSGetValue("cmi.objectives.0.id")
// Display the objective ID for the SCO
SCO may want to set the objective ID for reporting reasons.
LMSSetValue("cmi.objectives.0.id","Obj1")
cmi.objectives.n.score
Each objective can contain an associated score
Children of cmi.objectives.n.score:
raw, min, max
cmi.objecitves.n.score._children
Page 47
Sharable Content Object Reference Model (SCORM) Version 1.2 3-39
2001 Advanced Distributed Learning.
All Rights Reserved.
Supported API calls:
LMSGetValue()
LMS Mandatory: No
Data Type: CMIString255
SCO Accessibility:
Read Only
Definition: The children keyword is used to determine all of the elements in the
cmi.objectives.n.score category that are supported by the LMS. If an element has no
children, but is supported, an empty string is returned. If an element is not supported,
there is no return. A subsequent request for last error can verify that the element is not
supported.
Usage: Used to determine which elements are supported by the LMS.
Format: The return value is a comma separated list of all the element names in the
cmi.objectives.n.score category that are supported by the LMS.
LMS Behavior:
Initialization: The set of supported children for this group. So that on an
LMSGetValue() request, the appropriate list of supported children is returned.
LMSGetValue(): Returns a comma separated list of supported elements.
o Example API call: LMSGetValue("cmi.objectives.0.score._children")
o Example Return Values:
“raw,min,max”
"raw"
""
o Error Code:
401 - Not implemented error. If this element is not
supported an empty string is returned and an error code is
set to indicate that the element is not supported.
LMSSetValue(): LMS should set an error code according to the following:
o Error Code:
402 - Invalid set value, element is a keyword. If the
element is supported by the LMS and a request attempts to
invoke an LMSSetValue() on this element, then the LMS
should set the error code to 402.
401 - Not implemented error. If this element is not
supported an error code is set to 401 by the LMS to
indicate that the element is not supported.
SCO Usage Example:
SCO could use this element to determine which elements are supported by the LMS
var objScoreChildren = LMSGetValue("cmi.objectives.0.score")
if (objScoreChildren.indexOf(“raw”) != -1)
{
// Set the Objectives score
}
cmi.objectives.n.score.raw
Supported API calls:
LMSGetValue()
LMSSetValue()
LMS Mandatory: No
Data Type: CMIDecimal
or CMIBlank
SCO Accessibility:
Read / Write
Definition: Numerical representation of student performance after each attempt on the
objective. May be unprocessed raw score.
The cmi.objectives.n.score.raw must be a normalized value between 0 and 100.
Usage: Raw score after each attempt for an objective.
Format: Decimal number or blank.
LMS Behavior:
Initialization: Element should be initialized to an empty string (""). The SCO is
responsible for setting this value. If an LMSGetValue() is requested before the
SCO has set this value, then the LMS should return an empty string (“”).
LMSGetValue(): The LMS should return the objectives raw score identified by
the request. The returned value must match the associated data type.
o Example API call: LMSGetValue("cmi.objectives.0.score.raw")
o Error Code:
401 - Not implemented error. If this element is not
supported an empty string is returned and an error code is
set to indicate that the element is not supported.
LMSSetValue(): Sets the data model element to the supplied value. Value
must match the data type for this element.
o Example API call: LMSSetValue("cmi.objectives.0.score.raw","5")
o Error Code:
Page 48
3-40 Sharable Content Object Reference Model (SCORM) Version 1.2
2001 Advanced Distributed Learning.
All Rights Reserved.
405 – Incorrect Data Type If the element is supported and
a request attempts to invoke an LMSSetValue() with a
value that is not of the correct data type.
401 - Not implemented error. If this element is not
supported an error code is set to 401 by the LMS to
indicate that the element is not supported.
Example Return/Set Values:
"96.7"
"5"
""
SCO Usage Example:
SCO could use this to set a raw score associated with an objective.
var objScoreChildren = LMSGetValue("cmi.objectives.0.score")
if (objScoreChildren.indexOf(“raw”) != -1)
{
LMSSetValue("cmi.objectives.0.score.raw","85")
}
cmi.objectives.n.score.max
Supported API calls:
LMSGetValue()
LMSSetValue()
LMS Mandatory: No
Data Type: CMIDecimal
or CMIBlank
SCO Accessibility:
Read / Write
Definition: The maximum score or total number that the student could have achieved on
the objective.
The cmi.objectives.n.score.max must be a normalized value between 0 and 100.
Usage: Max score after each attempt for an objective.
Format: Decimal number or blank.
LMS Behavior:
Initialization: Element should be initialized to an empty string (""). The SCO is
responsible for setting this value. If an LMSGetValue() is requested before the
SCO has set this value, then the LMS should return an empty string (“”).
LMSGetValue(): The LMS should return the objectives max score identified by
the request. The returned value must match the associated data type.
o Example API call: LMSGetValue("cmi.objectives.0.score.max")
o Error Code:
401 - Not implemented error. If this element is not
supported an empty string is returned and an error code is
set to indicate that the element is not supported.
LMSSetValue(): Sets the data model element to the supplied value. Value
must match the data type for this element.
o Example API call: LMSSetValue("cmi.objectives.0.score.max","10")
o Error Code:
405 – Incorrect Data Type: If the element is supported
and a request attempts to invoke an LMSSetValue() with a
value that is not of the correct data type.
401 - Not implemented error. If this element is not
supported an error code is set to 401 by the LMS to
indicate that the element is not supported.
Example Return/Set Values:
"100"
"10"
""
SCO Usage Example:
SCO could use this to set a max score associated with an objective.
var objScoreChildren = LMSGetValue("cmi.objectives.0.score")
if (objScoreChildren.indexOf(“max”) != -1)
{
LMSSetValue("cmi.objectives.0.score.max","5")
}
cmi.objectives.n.score.min
Supported API calls:
LMSGetValue()
LMSSetValue()
Definition: The minimum score that the student could have achieved on the objective.
The cmi.objectives.n.score.min must be a normalized value between 0 and 100.
Page 50
3-42 Sharable Content Object Reference Model (SCORM) Version 1.2
2001 Advanced Distributed Learning.
All Rights Reserved.
LMS Behavior:
Initialization: Handled by the SCO.
LMSGetValue(): The LMS should return the objectives status identified by the
request. The returned value must match the associated data type.
o Example API call: LMSGetValue("cmi.objectives.0.status")
o Error Code:
401 - Not implemented error. If this element is not
supported an empty string is returned and an error code is
set to indicate that the element is not supported.
LMSSetValue(): Sets the data model element to the supplied value. Value
must match the data type for this element.
o Example API call: LMSSetValue("cmi.objectives.0.status","failed")
o Error Code:
405 – Incorrect Data Type: If the element is supported
and a request attempts to invoke an LMSSetValue() with a
value that is not of the correct data type.
401 - Not implemented error. If this element is not
supported an error code is set to 401 by the LMS to
indicate that the element is not supported.
Example Return/Set Values:
“not attempted"
"passed"
"browsed"
SCO Usage Example:
SCO could use this to set a status associated with an objective
var objScoreChildren = LMSGetValue("cmi.objectives._children")
if (objScoreChildren.indexOf(“status”) != -1)
{
LMSSetValue("cmi.objectives.0.status","failed")
}
cmi.student_data
Information to support customization of a SCO based on a student’s performance.
Children of cmi.student_data:
mastery_score, max_time_allowed, time_limit_action
cmi.student_data._children
Supported API calls:
LMSGetValue()
LMS Mandatory: No
Data Type: CMIString255
SCO Accessibility:
Read Only
Definition: The _children keyword is used to determine all of the elements in the
student_data category that are supported by the LMS. If an element has no children,
but is supported, an empty string is returned. If an element is not supported, an empty
string is returned. A subsequent request for last error can verify that the element is not
supported.
Usage: To determine which cmi.student_data data elements are supported by the
LMS.
Format: The return value is a comma-separated list of all of the element names in the
student_data category that are supported by the LMS.
LMS Behavior:
Initialization: The set of supported children for this group. So that on an
LMSGetValue() request, the appropriate list of supported children is returned.
LMSGetValue(): LMS returns a comma separated list of supported
elements.
o Example Return Values:
“mastery_score,time_limit_action,max_time_allowed”
"max_time_allowed"
o Error Code:
401 - Not implemented error. If this element is not
supported an empty string is returned and an error code
is set to indicate that the element is not supported.
LMSSetValue(): LMS should set an error code according to the following:
o Error Code:
Page 52
3-44 Sharable Content Object Reference Model (SCORM) Version 1.2
2001 Advanced Distributed Learning.
All Rights Reserved.
Initialization: LMS is responsible – value obtained from manifest
(adlcp:maxtimeallowed) item elements.
LMSGetValue(): Returns the current value stored by the LMS.
o Example Return Values:
“00:14:30”
“02:03:00”
“01:09:00”
o Error Code:
401 - Not implemented error. If this element is not
supported an empty string is returned and an error code
is set to indicate that the element is not supported.
LMSSetValue(): LMS should set an error code according to the following:
o Error Code:
403 - Element is read only. If the element is
supported by the LMS and a request attempts to invoke
an LMSSetValue() on this element, then the LMS
should set the error code to 403.
401 - Not implemented error. If this element is not
supported an error code is set to 401 by the LMS to
indicate that the element is not supported.
SCO Usage Example:
var maxTimeAllowedValue = LMSGetValue(“cmi.student_data.max_time_allowed”);
cmi.student_data.time_limit_action
Supported API calls:
LMSGetValue()
LMS Mandatory: No
Data Type: CMIVocabulary
(Time Limit Action)
“exit,message”
“exit,no message”
“continue,message”
“continue,no message”
SCO Accessibility:
Read Only
Definition: Tells the SCO what to do when the max_time_allowed is exceeded. There
are two arguments for this element:
What the SCO should do – exit or continue
What the student should see – message or no message
Usage: Used to indicate to the SCO what the action should be when the maximum
time allowed in the SCO has been exceeded.
Format: A set vocabulary phrase. Four possible vocabulary values:
• “exit,message”
• “exit,no message”
• “continue,message”
• “continue,no message”
LMS Behavior:
Initialization: LMS is responsible – value obtained from manifest
(adlcp:timelimitaction) item elements.
LMSGetValue(): Returns the current value stored by the LMS.
o Example Return Values: "exit,message""continue,no message"
o Error Code:
401 - Not implemented error. If this element is not
supported an empty string is returned and an error code
is set to indicate that the element is not supported.
LMSSetValue(): LMS should set an error code according to the following:
o Error Code:
403 - Element is read only. If the element is
supported by the LMS and a request attempts to invoke
an LMSSetValue() on this element, then the LMS
should set the error code to 403.
401 - Not implemented error. If this element is not
supported an error code is set to 401 by the LMS to
indicate that the element is not supported.
SCO Usage Example:
var timeLimitActionValue = LMSGetValue(“cmi.student_data.time_limit_action”);
cmi.student_preference
Selected options that are appropriate for subsequent SCOs
Page 54
3-46 Sharable Content Object Reference Model (SCORM) Version 1.2
2001 Advanced Distributed Learning.
All Rights Reserved.
LMSSetValue(): Sets the LMS data item to the value passed in as a
parameter.
o Error Code:
405 – Incorrect Data Type: If the element is supported
and a request attempts to invoke an LMSSetValue() with
a value that is not of the correct data type.
401 - Not implemented error. If this element is not
supported an error code is set to 401 by the LMS to
indicate that the element is not supported.
Example Return/Set Values:
“-1"
"0"
"50"
SCO Usage Example:
LMSSetValue(“cmi.student_preference.audio”, “10”);
var audioValue = LMSGetValue(“cmi.student_preference.audio”);
cmi.student_preference.language
Supported API calls:
LMSGetValue()
LMSSetValue()
LMS Mandatory: No
Data Type: CMIString255
SCO Accessibility:
Read
Write
Definition: For SCOs with multi-lingual capability, this element should be used to
identify in what language the information should be delivered.
Usage: Used by the SCO to both set and obtain from the LMS language preferences
for the student.
Format: Alphabetic string, may include white space.
LMS Behavior:
Initialization: If supported the LMS should initialize this value to an empty
string (“”). It is the responsibility of the SCO to set this value. If an
LMSGetValue() is requested before the SCO has set this value, then the
LMS should return an empty string (“”)
LMSGetValue(): Returns the current value stored by the LMS.
o Error Code:
401 - Not implemented error. If element is not
supported an empty string is returned and an error code
is set to indicate that the element is not supported.
LMSSetValue(): Sets the LMS data item to the value passed in as a
parameter.
o Error Code:
405 – Incorrect Data Type: If the element is supported
and a request attempts to invoke an LMSSetValue() with
a value that is not of the correct data type.
401 - Not implemented error. If this element is not
supported an error code is set to 401by the LMS to
indicate that the element is not supported.
Example Return/Set Values:
"English"
"French"
SCO Usage Example:
LMSSetValue(“cmi.student_preference.language”, “English”);
var languageValue = LMSGetValue(“cmi.student_preference.language”);
cmi.student_preference.speed
Supported API calls:
LMSGetValue()
LMSSetValue()
LMS Mandatory: No
Data Type: CMISInteger
SCO Accessibility:
Definition: SCOs may sometimes be difficult to understand because of the pace. This
element controls the pace of the content delivery.
Usage: Used by the SCO to both set and obtain from the LMS speed preferences of
the student.
Format: Digit from -100 to 100
-100 is the slowest pace available in the system
0 is no-change status (The SCO uses its defaults. SCO moves at its normal speed)
100 is maximum pace available in the system.
Page 55
Sharable Content Object Reference Model (SCORM) Version 1.2 3-47
2001 Advanced Distributed Learning.
All Rights Reserved.
Read
Write
LMS Behavior:
Initialization: If supported by the LMS, this element should be initialized to
“0”. It is the responsibility of the SCO to set this value. If an LMSGetValue()
is requested before the SCO has set this value, then the LMS should return
an empty string (“”).
LMSGetValue(): Returns the current value stored by the LMS.
o Error Code:
401 - Not implemented error. If element is not
supported an empty string is returned and an error code
is set to indicate that the element is not supported.
LMSSetValue(): Sets the LMS data item to the value passed in as a
parameter
o Error Code:
405 – Incorrect Data Type: If the element is supported
and a request attempts to invoke an LMSSetValue() with
a value that is not of the correct data type.
401 - Not implemented error. If this element is not
supported an error code is set to 401 by the LMS to
indicate that the element is not supported.
Example Return/Set Values:
“-100”
“0”
“3”
SCO Usage Example:
LMSSetValue(“cmi.student_preference.speed”, “-100”);
var speedValue = LMSGetValue(“cmi.student_preference.speed”);
cmi.student_preference.text
Supported API calls:
LMSGetValue()
LMSSetValue()
LMS Mandatory: No
Data Type: CMISInteger
SCO Accessibility:
Read
Write
Definition: In a SCO designed for audio, it may be possible to turn off the audio, and
view the audio content in a text window. Or it may be possible to leave the audio on,
and request that the text be presented simultaneously with the audio. Or it may be
possible to make the text disappear so that only the audio and the screen graphics are
available. This element identifies whether the audio text appears in the SCO.
Usage: Used by the SCO to both set and obtain from the LMS text preferences of the
student.
Format: One of three digits:
-1 : text is off, not shown
0 : no change in status. Use default
1 : text is on screen, shown to student
LMS Behavior:
Initialization: If supported by the LMS, this element should be initialized to
“0”. It is the responsibility of the SCO to set this value. If an LMSGetValue()
is requested before the SCO has set this value, then the LMS should return
an empty string (“”).
LMSGetValue(): Returns the current value stored by the LMS.
o Error Code:
401 - Not implemented error. If element is not
supported an empty string is returned and an error code
is set to indicate that the element is not supported.
LMSSetValue(): Sets the LMS data item to the value passed in as a
parameter.
o Error Code:
405 – Incorrect Data Type: If the element is supported
and a request attempts to invoke an LMSSetValue() with
a value that is not of the correct data type.
401 - Not implemented error. If this element is not
supported an error code is set to 401 by the LMS to
indicate that the element is not supported.
Example Return/Set Values:
"0"
"-1"
"1"
Page 56
3-48 Sharable Content Object Reference Model (SCORM) Version 1.2
2001 Advanced Distributed Learning.
All Rights Reserved.
SCO Usage Example:
LMSSetValue(“cmi.student_preference.text”, “-1”);
var textValue = LMSGetValue(“cmi.student_preference.text”);
cmi.interactions
In this context, an interaction is a recognized and recordable input or group of inputs from the student to the computer.
All of the items in this group are related to a recognized and recordable input from the student. The category collects
detailed information on each interaction measured as the student takes a SCO.
Children of cmi.interactions:
id, objectives, time, type, correct_responses, weighting, student_response, result, latency
cmi.interactions._children
Supported API calls:
LMSGetValue()
LMS Mandatory: No
Data Type: CMIString255
SCO Accessibility:
Read Only
Definition: The children keyword is used to determine all of the elements in the
cmi.interactions category that are supported by the LMS. If an element has no children,
but is supported, an empty string is returned. If an element is not supported, there is no
return. A subsequent request for last error can verify that the element is not supported.
Usage: Used to determine which elements are supported by the LMS.
Format: The return value is a comma separated list of all the element names in the
cmi.interactions category that are supported by the LMS. Identifies what detailed
information can be collected on each interaction measured as the student takes a SCO.
LMS Behavior:
Initialization: The set of supported children for this group. So that on an
LMSGetValue() request, the appropriate list of supported children is returned
LMSGetValue(): Returns a comma separated list of supported elements.
o Example API call: LMSGetValue("cmi.interactions._children")
o Example Return Values:
“id,time,type”
"id,time,type,correct_responses,student_response"
o Error Code:
401 - Not implemented error. If this element is not
supported an empty string is returned and an error code is
set to indicate that the element is not supported.
LMSSetValue(): LMS should set an error code according to the following:
o Error Code:
402 - Invalid set value, element is a keyword. If the
element is supported by the LMS and a request attempts to
invoke an LMSSetValue() on this element, then the LMS
should set the error code to 402.
401 - Not implemented error. If this element is not
supported an error code is set to 401 by the LMS to
indicate that the element is not supported.
SCO Usage Example:
SCO could use this element to determine which elements are supported by the LMS
var intChildren = LMSGetValue("cmi.interactions._children")
if (intChildren.indexOf(“id”) != -1)
{
// Set the Interaction id
}
cmi.interactions._count
Supported API calls:
LMSGetValue()
LMS Mandatory: No
Data Type: CMIInteger
SCO Accessibility:
Read Only
Definition: The _count keyword is used to determine the current number of records in the
cmi.interactions list. The total number of entries is returned. If the SCO does not know
the count of the cmi.interactions records, it can begin the current student count with 0.
This would overwrite any information about interactions currently stored in the first index
position. Overwriting or appending is a decision that is made by the SCO author when
he/she creates the SCO.
Usage: Used to determine the number of interactions stored by the LMS. SCOs could
use this number to determine which interaction record to set. If "3'" is returned then the
Page 62
3-54 Sharable Content Object Reference Model (SCORM) Version 1.2
2001 Advanced Distributed Learning.
All Rights Reserved.
choice: Then the pattern is one or more characters separated by a comma. Integers (0-
9), letters (a - z) or both may be used. Each possible response is limited to a
single character. If there are more than 26 possibilities, then a performance
type response must be used.
fill-in: Then the pattern is an alphanumeric string. Spaces are significant, after the first
printable character.
numeric: Then the pattern is a single number. The number may or may not have a
decimal.
likert: There is no incorrect response for a likert question. Field may be left blank.
matching: Then the pattern is pairs of identifiers separated by a period. Each matching
possibility consists of a source and a target.
performance: Then the pattern is an alpha-numeric field limited to 255 characters.
sequencing: Then the pattern is elements identified in any order. The final positioning of
the elements is used to determine correctness, not the order in which they were
sequenced.
LMS Behavior:
Initialization: Value is controlled by the SCO.
LMSGetValue(): LMS should set an error code according to the following and
return an empty string ("").
o Error Code:
401 - Not implemented error. If this element is not
supported an empty string is returned and an error code is
set to indicate that the element is not supported.
404 - Element is write only. If a SCO tries to call
LMSGetValue() on this element, the LMS should set the
error code to 404 and return an empty string ("").
LMSSetValue(): Sets the data model element to the supplied value. Value
must match the data type for this element.
o Example API call: If the cmi.interactions.n.type is matching then
LMSSetValue(“cmi.interactions.0.correct_responses.0.pattern","1.c,2.
b,3.a,4.d")
o Example Set Values:
"1.c,2.b,3.a,4.d"
"t"
o Error Code:
205 – Incorrect Data Type: If an LMSSetValue() is
invoked and the value to be used to set the element to is
not of the correct Data Type.
401 - Not implemented error. If this element is not
supported an error code is set to indicate that the element
is not supported.
SCO Usage Example:
// set the response pattern
// Question type is a true-false question
LMSSetValue("cmi.interactions.0.correct_responses.0.pattern","t");
cmi.interactions.n.weighting
Supported API calls:
LMSSetValue()
LMS Mandatory: No
Data Type: CMIDecimal
SCO Accessibility:
Write Only
Definition: Interactions vary in importance. The weighting is a factor which is used to
identify the relative importance of one interaction compared to another. For instance, if
the first interaction has a weight of 15 and the second interaction has a weight of 25, then
any combined score that reflects weighting would be more influenced by the second
interaction.
If all interactions are equal in importance, then each interaction has the same weight.
A weight of 0 indicates that the interaction should not be counted in the weighted final
score.
Usage: An interaction may have a weight, and similarly, individual actions or responses
inside a complex interaction may have a weight.
Format: A single floating point number. The decimal point is optional and does not have
to appear in every weighting.
LMS Behavior:
Initialization: Value is controlled by the SCO.
LMSGetValue(): LMS should set an error code according to the following and
return an empty string ("").
Page 63
Sharable Content Object Reference Model (SCORM) Version 1.2 3-55
2001 Advanced Distributed Learning.
All Rights Reserved.
o Error Code:
401 - Not implemented error. If this element is not
supported an empty string is returned and an error code is
set to indicate that the element is not supported.
404 - Element is write only. If a SCO tries to call
LMSGetValue() on this element, the LMS should set the
error code to 404 and return an empty string ("").
LMSSetValue(): Sets the data model element to the supplied value. Value
must match the data type for this element.
o Example API call:
LMSSetValue(“cmi.interactions.0.weighting","0.66")
o Example Set Values:
"0.66"
"0"
o Error Code:
205 – Incorrect Data Type: If an LMSSetValue() is
invoked and the value to be used to set the element to is
not of the correct Data Type.
401 - Not implemented error. If this element is not
supported an error code is set to indicate that the element
is not supported.
SCO Usage Example:
// Set the weighting for the interaction
LMSSetValue("cmi.interactions.0.weighting","0");
cmi.interactions.n.student_response
Supported API calls
LMSSetValue()
LMS Mandatory: No
Data Type:
CMIFeedback
SCO Accessibility:
Write Only
Definition: Description of possible responses to the interaction. There may be more than
one correct response, and some responses may be more correct than others.
Usage: This is the actual student response to the interaction. This value then can be
compared with the cmi.interactions.n.correct_responses.n.pattern.
Format:
If the cmi.interactions.n.type is:
true-false: Then a single character or numeral. Legal characters are 0,1,t and f. 0
corresponds to false. If the response is a complete word (i.e. "true") only the
first letter is significant.
choice: Then one or more characters separated by a comma. Integers (0-9), letters (a -
z) or both may be used. Each possible response is limited to a single
character. If there are more than 26 possibilities, then a performance type
response must be used.
fill-in: Then an alphanumeric string. Spaces are significant, after the first printable
character.
numeric: Then a single number. The number may or may not have a decimal.
likert: Then there is no incorrect response for a likert question. Field may be left blank.
matching: Then pairs of identifiers separated by a period. Each matching possibility
consists of a source and a target.
performance: Then alpha-numeric field limited to 255 characters.
sequencing: Then the elements may be identified in any order. The final positioning of
the elements is used to determine correctness, not the order in which they were
sequenced.
LMS Behavior:
Initialization: Value is controlled by the SCO.
LMSGetValue(): LMS should set an error code according to the following and
return an empty string ("").
o Error Code:
401 - Not implemented error. If this element is not
supported an empty string is returned and an error code is
set to indicate that the element is not supported.
404 - Element is write only. If a SCO tries to call
LMSGetValue() on this element, the LMS should set the
error code to 404 and return an empty string ("").
LMSSetValue(): Sets the data model element to the supplied value. Value
must match the data type for this element.
o Example API call: If the cmi.interactions.n.type is matching then
LMSSetValue(“cmi.interactions.0.student_response","1.c,2.b,3.a,4.d")
Page 64
3-56 Sharable Content Object Reference Model (SCORM) Version 1.2
2001 Advanced Distributed Learning.
All Rights Reserved.
o Example Set Values:
"t"
"1.c,2.b,3.c,4.d"
o Error Code:
205 – Incorrect Data Type: If an LMSSetValue() is
invoked and the value to be used to set the element to is
not of the correct Data Type.
401 - Not implemented error. If this element is not
supported an error code is set to indicate that the element
is not supported.
SCO Usage Example:
// set the students response
// Student response was to a true-false
LMSSetValue("cmi.interactions.0.student_response","f");
cmi.interactions.n.result
Supported API calls:
LMSSetValue()
LMS Mandatory: No
Data Type:
CMIVocabulary
(Result)
"correct"
"wrong"
"unanticipated"
"neutral"
"x.x" (CMIDecimal)
SCO Accessibility:
Write Only
Definition: How the system judges the described response.
Usage: This is the actual result from the student_response.
Format: A set vocabulary phrase. Five possible vocabulary values:
• "correct"
• "wrong"
• "unanticipated"
• "neutral"
• "x.x" (CMIDecimal)
LMS Behavior:
Initialization: Value is controlled by the SCO.
LMSGetValue(): LMS should set an error code according to the following and
return an empty string ("").
o Error Code:
401 - Not implemented error. If this element is not
supported an empty string is returned and an error code is
set to indicate that the element is not supported.
404 - Element is write only. If a SCO tries to call
LMSGetValue() on this element, the LMS should set the
error code to 404 and return an empty string ("").
LMSSetValue(): Sets the data model element to the supplied value. Value
must match the data type for this element.
o Example API call:
LMSSetValue("cmi.interactions.0.result","correct")
o Example Set Values:
"correct"
"95.5"
"unanticipated"
o Error Code:
205 – Incorrect Data Type: If an LMSSetValue() is
invoked and the value to be used to set the element to is
not of the correct Data Type.
401 - Not implemented error. If this element is not
supported an error code is set to indicate that the element
is not supported.
SCO Usage Example:
// set the result for the question
LMSSetValue("cmi.interactions.0.result","correct");
cmi.interactions.n.latency
Supported API calls:
LMSSetValue()
LMS Mandatory: No
Data Type:
CMITimespan
Definition: The time from the presentation of the stimulus to the completion of the
measurable response.
Usage: If latency is recorded, there can be a latency figure for each response.
Format: Hours, minutes and seconds separated by a colon. HHHH:MM:SS.SS
Hours has a minimum of 2 digits and a maximum of 4 digits. Minutes shall consist of
Page 69
Sharable Content Object Reference Model (SCORM) Version 1.2 3-1
2001 Advanced Distributed Learning.
All Rights Reserved.
This page intentionally left blank.
Page 71
Sharable Content Object Reference Model (SCORM) Version 1.2 A-1
2001 Advanced Distributed Learning.
All Rights Reserved.
APPENDIX A
ACRONYM LIST
Page 72
A-2 Sharable Content Object Reference Model (SCORM) Version 1.2
2001 Advanced Distributed Learning.
All Rights Reserved.
This page intentionally left blank.
Page 74
A-4 Sharable Content Object Reference Model (SCORM) Version 1.2
2001 Advanced Distributed Learning.
All Rights Reserved.
This page intentionally left blank.
Page 76
B-2 Sharable Content Object Reference Model (SCORM) Version 1.2
2001 Advanced Distributed Learning.
All Rights Reserved.
This page intentionally left blank.
Page 79
Sharable Content Object Reference Model (SCORM) Version 1.2 C-5
2001 Advanced Distributed Learning.
All Rights Reserved.
APPENDIX C
REVISION HISTORY
Page 81
Sharable Content Object Reference Model (SCORM) Version 1.2 C-7
2001 Advanced Distributed Learning.
All Rights Reserved.
Revision History
SCORM
Version
Release Date Description of Change
1.1 16-Jan-2001 Added more detail to each sub-section of the Run-Time
Environment section
• Launch
• API
• Data Model
Run-Time Environment Launch changes
• Added more detail in describing the launching of SCOs
Run-Time Environment API changes
• LMSInitialize(“”), LMSFinish(“”) and
LMSCommit(“”) now must all take in an empty string
as a parameter.
• LMSInitialize(“”), LMSFinish(“”), LMSCommit(“”)
and LMSSetValue() must now all return a string that
can be converted to a CMIBoolean (“true” or “false”)
• More detailed information on the descriptions of each
of the API calls
• Added API Error Code usage section
o Defines the scenarios on when to use the
different error codes
o Added new error codes
• Changed findAPI() algorithm to no longer search the
sibling frames
Run-Time Environment Data Model changes
• Added new table to describe in detail all data model
elements.
• For Run-Time Data Model element changes see Table
C-1a
• For Run-Time Data Model data type changes see Table
C-1b
• For Run-Time Data Model Vocabulary changes see
Table C-1c
Page 82
C-8 Sharable Content Object Reference Model (SCORM) Version 1.2
2001 Advanced Distributed Learning.
All Rights Reserved.
1.2 01-Oct-2001 Changed Figure 3.1a to indicate that SCOs and Assets can be
launched.
Added more detail in the Launch Section to describe the
launching of more than just SCOs.
Added SCO To LMS Communications API State transition
diagram and explaination.
Added more specifics to the API Error code usage table to
indicate when certain error codes should be used.
Added more clarifcation to the following data model elements:
• cmi.core.lesson_status
• cmi.core.entry
• cmi.core.exit
• cmi.core.session_time
Added more specific definition to those elements that represent
scores (cmi.core.score.raw, cmi.core.score.min,
cmi.core.score.max, cmi.objectives.n.score.raw,
cmi.objectives.n.score.min, cmi.objectives.n.score.max). Added
a statement that says: “must be a normalized value between 0
and 100”
General Table formatting cleanup
Added section 3.5 Run-Time Environment Behavior section
General grammar clean up.
Table C-1a: Run-Time Environment Data Model Element Changes
Data Model Element Change from SCORM 1.0
cmi.core._children Changed the data type CMIString256 to
CMIString255
cmi.core.student_id None
cmi.core.student_name Changed the data type CMIString256 to
CMIString255
cmi.core.lesson_location Changed the data type CMIString256 to
CMIString255
cmi.core.credit None
cmi.core.lesson_status None
cmi.core.entry None
cmi.core.score._children Changed the data type CMIString256 to
CMIString255
cmi.core.score.raw None
cmi.core.score.min None
cmi.core.score.max None
cmi.core.total_time None
cmi.core.lesson_mode None
Page 83
Sharable Content Object Reference Model (SCORM) Version 1.2 C-9
2001 Advanced Distributed Learning.
All Rights Reserved.
cmi.core.exit None
cmi.core.session_time None
cmi.suspend_data None
cmi.launch_data None
cmi.comments This element is now used to hold
comments from the SCO/Student. A SCO
can now invoke LMSGetValue() and
LMSSetValue() on this element.
cmi.comments_from_lms This new element was added to be a place
where comments from the LMS and/or
instructor can be placed and used by the
SCO.
cmi.objectives._count None
cmi.objectives._children Changed the data type CMIString256 to
CMIString255
cmi.objectives.n.id None
cmi.objectives.n.score._children Changed scores to score.
Changed the data type CMIString256 to
CMIString255.
cmi.objectives.n.score._count Removed the support for list of scores for
objectives
cmi.objectives.n.score.raw Removed the list support for score. Each
objective can now only have 1 score.
Name change from scores to score.
cmi.objectives.n.score.min Removed the list support for score. Each
objective can now only have 1 score.
Name change from scores to score.
cmi.objectives.n.score.max Removed the list support for score. Each
objective can now only have 1 score.
Name change from scores to score.
cmi.objectives.n.status Removed the list support for score. Each
objective can now only have 1 score.
Name change from scores to score.
cmi.objectives.n.mastery_time Removed
cmi.evaluation._children Removed
cmi.evaluation.course_id Removed
cmi.evaluation.comments Removed
cmi.evaluation.comments.n.time Removed
cmi.evaluation.comments.n.location Removed
cmi.evaluation.comments.n.content Removed
cmi.evaluation.interactions._children Removed
cmi.evaluation.objectives_status._children Removed
cmi.evaluation.paths._children Removed
cmi.evaluation.performance._children Removed
cmi.evaluation.lesson_id Removed
cmi.evaluation.date Removed
cmi.interactions._children Added
cmi.interactions._count Added
Page 85
Sharable Content Object Reference Model (SCORM) Version 1.2 C-11
2001 Advanced Distributed Learning.
All Rights Reserved.
cmi.student_preference.lesson_type Removed
cmi.student_preference.speed None
cmi.student_preference.text None
cmi.student_preference.text_color Removed
cmi.student_preference.text_location Removed
cmi.student_preference.text_size Removed
cmi.student_preference.video Removed
cmi.student_preference.windows.n Removed
cmi.paths.n.location_id Removed
cmi.paths.n.time Removed
cmi.paths.n.status Removed
cmi.paths.n.why_left Removed
cmi.paths.n.time_in_element Removed
Table C-1b: Run-Time Environment Data Type Changes
CMIDate Removed
CMIBoolean Changed the types to all lower case (“true”, “false”)
CMIFeedback Added more information, to define the usage of the CMIFeedback data type
CMILocale Removed
CMISIdentifier Removed
CMIString255 Changed CMIString255 – maximum length of 255 characters
CMITime Now can have at most 2 digits following the optional decimal (i.e. 34.43)
CMITimespan Now can have at most 2 digits following the optional decimal (i.e. 34.43)
Table C-1c: Run-Time Environment CMIVocabulary Changes
Exit Added an additional vocabulary “” – empty string
Why Left Removed
Credit Changed “no credit” to “no-credit”
Entry Added an additional vocabulary “” – empty string
Time Limit Action Changed all vocabulary choices
Interaction Changed “multiple choice” to “choice”
Changed “fill in the blank” to “fill-in”
Changed “simple performance” to “performance”
Sign up today - FREE
Mendeley saves you time finding and organizing research. Learn more
- All your research in one place
- Add and import papers easily
- Access it anywhere, anytime
Start using Mendeley in seconds!
Readership Statistics
1 Reader on Mendeley
by Discipline
by Academic Status
100% Professor
by Country
100% Belgium


